思科路由器安全技術:物理安全、協議安全
針對網絡存在的各種安全隱患,路由器的安全設置通常包括如下幾個方面:
1. 可靠性與線路安全方面
對于路由器來說,可靠性主要體現在接口故障和網絡流量增大兩種情況下,因此,線路和接口的備份是路由器不可缺少的。當主接口出現故障時,備份接口自動投入工作,保證網絡的正常運行;當網絡流量增大時,備份接口又可承擔負載分擔的任務。如使用電話撥號上網方式的備份。
2. 身份認證方面
路由器中的身份認證主要包括訪問路由器時的身份認證、對端路由器的身份認證和路由信息的身份認證。
3. 訪問控制方面
(1)對于路由器的訪問控制,需要進行口令的分級保護。
(2)可以采用基于IP地址的訪問控制。
(3)可以采用基于用戶的訪問控制。
(4)可以基于時間的訪問控制。
4. 信息隱藏方面
主機與對端通信時,不一定需要用真實身份進行通信。這就要通過路由器的地址轉換功能,隱藏內網地址、只以公共地址的方式訪問外部網絡。除了由內部網絡首先發起的連接,網外用戶不能通過地址轉換直接訪問內網資源。
5.數據加密方面
為了避免因為數據竊聽而造成的信息泄漏,需要對所傳輸的信息進行加密,只有與之通信的對端才能對此密文進行解密。通過對路由器所發送的報文進行加密,即使在Internet上進行傳輸,也能保證數據的私有性、完整性以及報文內容的真實性。
6.攻擊探測和防范方面
路由器作為一個內部網絡對外的接口設備,是攻擊者進入內部網絡的第一個目標。如果路由器不提供攻擊檢測、防范功能,或者或者配置不當,將使路由器成為攻擊者進入內部網絡的一個橋梁。在路由器上提供攻擊檢測和對路由器進行必要的安全配置,可以防止一部分的網絡攻擊。
7.安全管理方面
內部網絡與外部網絡之間的每一個數據報文都會通過路由器,在路由器上進行報文的審計可以提供網絡運行的必要信息,有助于分析網絡的運行情況。
(二)路由器口令的安全
路由器的口令分為端口登錄口令、特權用戶口令。
使用端口登錄口令可以登錄到路由器,一般只能查看部分信息,而使用特權用戶口令登錄可以使用全部的查看、配置和管理命令。
特權用戶口令只能用于使用端口登錄口令登錄路由器后進入特權模式,不能用于端口登錄。
1. 口令加密
在路由器默認配置中,口令是以純文本形式存放的,不利于對保護路由器的安全。在Cisco路由器上可以對口令加密,這樣訪問路由器的其他人就不能看到這些口令。以CISCO的命令為例:
Router (config)# service password-encryption
其中Router (config)#為命令提示符,service password-encryption為口令加密服務命令。
口令加密服務將加密所有現存的和在以后配置的口令。建議在Cisco網絡設備配置中使用這項服務。
2. 端口登錄口令
路由器一般有Consle(控制臺端口)、Aux(輔助端口)和Ethernet口可以登錄到路由器,這為網絡管理員對路由器進行管理提供了很大的方便,同時也給攻擊者提供了可乘之機。
因此,首先應該給相應的端口加上口令。要注意口令的長度以及數字、字母、符號是否相混合,以防止攻擊者利用口令或默認口令進行攻擊。
不同的端口可以建立不同的認證方法。
下面以Cisco路由器為例簡單說明路由器口令的設置。
Router (config)# line vty 0 4
Router (config-line)# login
Router (config-line)# exec-timeout 2 30
Router (config-line)# password abc111
Router (config-line)# exit
Router (config)-# line aux 0
Router (config-line)# login
Router (config-line)# exec-timeout 2 30
Router (config-line)# password abc222
Router (config-line)# exit
Router (config)# line con 0
Router (config-line)# exec-timeout 2 30
Router (config-line)# password abc333
Router (config-line)# exit
這樣用戶只有輸入相應端口的口令才能從路由器的Consle、Aux或Ethernet口登錄路由器。
下面分別對配置中的命令進行說明:
line vty 0 4命令用來保護在網絡中用來進行telnet訪問的虛擬終端行。由于路由器訪問有不止一個vty行,所以在vty關鍵字后面有兩個數字。在Cisco路由器上默認的行數為五行。line vty 0 4為所有終端行設置一個口令。
line aux和line con分別用來保護從Aux口和Consle口訪問路由器的安全。
login命令用來啟動登錄的口令檢查。
exec-timeout命令用來設置通話超時時間,上面配置中的exec-timeout 2 30設置為兩分三十秒鐘內沒有輸入,將自動關閉與路由器連接的對話,防止網絡管理員登錄路由器后離開終端時被非法用戶修改路由器的配置。
password命令用來設置端口口令,上面配置中的password abc333設置為從line con 0端口登錄路由器時需要的口令。
注意:登錄口令更高的安全性
為了獲得更高的安全性,更好的登錄口令處理方法是將這些口令保存在TACACS+或RADIUS認證服務器上,然后在路由器上配置使用認證服務器對用戶和密碼進行認證,這種認證方式可以實現集中管理,并獲得更高的安全性和可管理性。
3. 特權用戶口令
特權用戶口令的設置可以使用enable password命令和enable secret命令。
一般不用enable password命令,該命令設置的口令可以通過軟件破解,存在安全漏洞。enable secret采用MD5散列算法對口令進行加密。
以CISCO為例,具體配置如下:
Router #conf term
Router (config)#enable secret cba123
在執行了這一步后查看路由器配置,將看到無論是否開啟了口令加密服務,特權用戶口令都自動被加密了。
4. 修改簡單網絡管理協議密碼字
簡單網絡管理協議(Simple Network Management Protocol,SNMP)是由互聯網工程任務組定義的一套網絡管理協議。
利用SNMP,一個管理工作站可以遠程管理所有支持這種協議的網絡設備,包括監視網絡狀態、修改網絡設備配置、接收網絡事件警告等。
使用SNMP協議要提供密碼字,在CISCO路由器中有個默認的密碼字,用戶在使用路由器時要修改這個密碼字,具體配置如下:
Router #conf term
Router (config)#snmp-server community read123 RO
Router (config)#snmp-server community write123 RW
snmp-server community read123 RO為設置只讀密碼字為read123,snmp-server community write123 RW為設置可寫密碼字為write123。
5. 防止口令修復
要注意路由器的物理安全,不要讓管理員以外的人員隨便接近路由器。如果攻擊者從物理上接觸路由器后,可以通過口令修復的方法清除口令,進而登錄路由器并完全控制路由器。
在實際應用中,應該在使用口令的基礎上,采取將不使用的端口禁用、權限分級策略、控制連接的并發數目、采用訪問列表嚴格控制訪問的地址、采用AAA設置用戶等方法,來加強路由器訪問控制的安全。
(三)路由器網絡服務的安全
為了方便用戶的應用和管理,路由器上會提供了一些網絡服務,如WEB管理等;但是由于一些路由器上的軟件的漏洞、配置錯誤等原因,有些服務可能會影響路由器和網絡的安全,因此從網絡安全角度應該禁止那些不必要的,或目前不使用的網絡服務。在Cisco路由器上常見的網絡服務及禁止方法如下:
1.禁止HTTP服務
使用Web界面來控制管理路由器,為初學者提供了方便,但存在安全隱患,使用下面的命令可以禁止HTTP服務。
CcertRAT(Config)# #no ip http server
如果必須使用HTTP服務來管理路由器,最好是配合訪問控制列表,并且用AAA認證來做,嚴格過濾允許的IP地址。建議在沒有特殊需要的情況下,關閉HTTP服務。
2.禁止CDP(Cisco Discovery Protocol,Cisco發現協議)
該協議存在于Cisco 11.0以后的版本中,都是默認啟動的。在OSI二層(鏈路層)協議的基礎上可發現對端路由器的設備平臺、操作系統版本、端口、IP地址等重要信息。這些信息對攻擊者很有用,為加強安全性,可禁止其運行,命令如下:
CcertRAT(Config)#no cdp run
管理員也可以指定禁止某端口的CDP,比如為了讓路由器內部網絡使用CDP,而禁止路由器對外網的CDP應答,命令如下:
CcertRAT(Config)#no interface Serial 0
CcertRAT(Config-if)#no no cdp enable
3.禁止其他的TCP、UDP Small服務
在ios 11.3版本之前,cisco缺省提供:echo,chargen,daytime,discard小型服務,之后就禁止了。Cisco路由器可以通過如下命令阻止察看路由器診斷信息:
CcertRAT(Config)# no service tcp-small-servers
CcertRAT(Config)# no service udp-samll-servers
4.禁止Finger服務
Finger服務可以暴露路由器用戶列表,一般情況下建議關閉該服務:
CcertRAT(Config)# no ip finger
CcertRAT(Config)# no service finger
5.禁止BOOTP服務
BOOTP服務的全稱是BOOTSTRAP PROTOCOL,是一個udp服務,是一種比較早出現的遠程啟動的協議。cisco路由器用它來訪問一個運行有bootp服務的cisco路由器上的ios拷貝。缺省情況下該服務是開啟的,關閉該服務的命令如下:
CcertRAT(Config)# no ip bootp server
6.禁止從網絡啟動和自動從網絡下載初始配置文件
CcertRAT(Config)# no boot network
CcertRAT(Config)# no servic config
7.禁止IP Source Routing
IP source-route是一個全局配置命令,允許路由器處理帶源路由選項標記的數據流。啟用源路由選項后,源路由信息指定的路由使數據流能夠越過默認的路由,這種包就可能繞過防火墻。這項服務需要關閉:
CcertRAT(Config)# no ip source-route
8.禁止 ARP-Proxy服務
路由器默認是開啟的,它容易引起路由表的混亂
CcertRAT(Config)# no ip proxy-arp
CcertRAT(Config-if)# no ip proxy-arp
9.禁止IP Directed Broadcast
ip定向廣播常用于流行的smurf和fraggle Dos攻擊。在cisco ios12.0前的版本中是開啟這個服務的,之后就禁止了。
所謂ip定向廣播,是一個發往某個子網廣播地址的數據報(datagram),但是這個子網并沒有和發報的主機直接連接,定向廣播是作為單播數據包而通過路由的,直到目標地址,只有鏈路上的最后一臺路由器也就是直接與目標主機相連的路由器,才能最終識別這個定向廣播。
Smurf攻擊是一種拒絕服務攻擊。在這種攻擊中,攻擊者使用假冒的源地址向你的網絡廣播地址發送一個“ICMP echo”請求。這要求所有的主機對這個廣播請求做出回應。這種情況至少會降低你的網絡性能。
CISCO關閉命令如下:
router(config-if)# no ip directed-broadcast
10.禁止IP Classless
有時,路由可能會收到一些發往一個沒有網絡缺省路由的子網的數據包,如有啟用這服務,路由器會將這些數據包轉發給最有可能路由的超網(supernet)。缺省情況下這些服務是開啟的。這種服務可能被各種攻擊利用。CISCO關閉命令如下:
CcertRAT(Config)# no ip classless
11.限制dns的服務
缺省情況下,cisco路由器dns服務會向255.255.255.255廣播地址發送名字查詢,應該避免這種廣播,因為攻擊者可以偽裝成一個dns服務來攻擊。
該服務是默認開啟的,如果要使用這個服務,務必確保在路由器的配置中明確指定dns服務的名字:
CcertRAT(Config)# ip name server server-address [server=address2 ... server-address6]
關閉該服務的命令如下:
CcertRAT(Config)# no ip domain-lookup
12.禁止ICMP協議的IP Unreachables,Redirects,Mask Replies
ICMP不可達消息可以向發送者通告(不可達地方)的ip地址,攻擊者能夠借此映射網絡。cisco缺省開啟了此消息服務。 CcertRAT(Config-if)# no ip unreacheables
重定向消息可以讓一個端節點用特定的路由器做為通向特定目的地路徑。
正常的ip網絡中,一臺路由器只向位于自己本地子網的主機發送重定向消息,端節點不會發送這種消息,此消息也不會超過一個網絡跳數的地方發送。不過攻擊者可以違反這種規則。
CcertRAT(Config-if)# no ip redirects
cisco ios會向icmp掩碼要求發送icmp掩碼應答的消息,其中包括接口的ip地址掩碼。必須關閉路由器上所有路由接口的上自動應答。這個服務是缺省關閉。
CcertRAT(Config-if)# no ip mask-reply
13.禁止SNMP協議服務
snmp服務允許路由器響應遠程snmp查詢和配置更改。如果要使用該服務,應使用acl進行限制。關閉該服務的命令包括:
CcertRAT(Config)# no snmp-server community public Ro
CcertRAT(Config)# no snmp-server community admin RW
CcertRAT(Config)# no snmp-server enable traps
CcertRAT(Config)# no snmp-server system-shutdown
CcertRAT(Config)# no snmp-server trap-anth
CcertRAT(Config)# no snmp-server
CcertRAT(Config)# end
14、禁止不使用的端口
CcertRAT(Config)# interface Serial 1
CcertRAT(Config-if)# shutdown
(四)路由協議安全
1.啟用OSPF路由協議的認證
默認的OSPF認證密碼是明文傳輸的,建議啟用MD5認證,并設置一定強度密鑰(key,相對的路由器也必須有相同的Key值)。
例子如下:
CcertRAT(Config)# router ospf 100
CcertRAT(Config-router)# network 192.168.100.0 0.0.0.255 area 100
! 啟用MD5認證。
! area area-id authentication 啟用認證,是明文密碼認證。
!area area-id authentication message-digest
CcertRAT(Config-router)# area 100 authentication message-digest
CcertRAT(Config)# exit
CcertRAT(Config)# interface eth0/1
!啟用MD5密鑰Key為routerospfkey。
!ip ospf authentication-key key 啟用認證密鑰,但會是明文傳輸。
!ip ospf message-digest-key key-id(1-255) md5 key
CcertRAT(Config-if)# ip ospf message-digest-key 1 md5 routerospfkey