200 likes | 411 Views
實驗 4 : Layer 3 路由器裝置之安全性設定與操作. 前言. 本實驗講解如何增加路由器的安全性,設置一個安全的路由器可透過設置密碼、存取控制清單、設定管理者專屬的帳號與相對應的權限、採用安全的遠端連線管理、加強使用遠端連線管理路由器時的安全性、使用需要認證的路由協定、關閉不需要使用的服務等,將可能存在的弱點降至最少,減少被攻擊者入侵的機會。 實驗設備: Cisco 2800 Series * 2.
E N D
實驗 4:Layer 3 路由器裝置之安全性設定與操作
前言 實驗 4:Layer 3 路由器裝置之安全性設定與操作 • 本實驗講解如何增加路由器的安全性,設置一個安全的路由器可透過設置密碼、存取控制清單、設定管理者專屬的帳號與相對應的權限、採用安全的遠端連線管理、加強使用遠端連線管理路由器時的安全性、使用需要認證的路由協定、關閉不需要使用的服務等,將可能存在的弱點降至最少,減少被攻擊者入侵的機會。 • 實驗設備: Cisco 2800 Series * 2
通常放置路由器放置的地方,只有相關人士可以進入,因此我們可以認為這樣具有某種程度的安全性,但是路由器預設利用TTY方式連接路由器時可直接登入,意即任何可以進入路由器所放置的地方的人都可利用TTY方式進入路由器操作,因此我們應該在路由器上設置密碼來限制可登入路由器的人員。通常放置路由器放置的地方,只有相關人士可以進入,因此我們可以認為這樣具有某種程度的安全性,但是路由器預設利用TTY方式連接路由器時可直接登入,意即任何可以進入路由器所放置的地方的人都可利用TTY方式進入路由器操作,因此我們應該在路由器上設置密碼來限制可登入路由器的人員。 Configure the console port password Router(config)# line console line-number line-number:Numbering begins with zero Router(config-line)# login # Enables password checking at login Router(config-line)# password password Configure the AUX port password Router(config)# line aux line-number Router(config-line)# login Router(config-line)# password password Controlling TTYs 實驗 4:Layer 3 路由器裝置之安全性設定與操作 console 設定經由console登入時所用的密碼 Router(config)#line console 0 Router(config-line)#login Router(config-line)#password consoleLogin AUX 設定經由AUX登入時所用的密碼 Router(config)#line aux 0 Router(config-line)#login Router(config-line)#password auxLogin
在路由器上,預設是不允許任何的VTY連線的,但通常我們都是透過VTY來操作路由器,因此若要使用,必須輸入下列指令才可利用VTY連線。在路由器上,預設是不允許任何的VTY連線的,但通常我們都是透過VTY來操作路由器,因此若要使用,必須輸入下列指令才可利用VTY連線。 Configure VTY password Router(config)# line vty start-line-number end-line-number Router(config-line)# login Router(config-line)# passwordpassword 雖然經由上述指令,我們可以經由VTY連入路由器,但實際上我們不會用到所有支援的協定連入路由器,因此我們可以用下列指令來限制只允許使用哪些VTY協定連入路由器: Router(config-line)# transport input {all | lat | mop | nasi | none | pad | rlogin | ssh | telnet | v120} # To specify multiple protocols, enter the keyword for each protocol, separated by a space Controlling VTYs 實驗 4:Layer 3 路由器裝置之安全性設定與操作 All vty protocols can be used. 設定經由VTY登入時所用的密碼 Router(config)#line vty 0 4 Router(config-line)#login Router(config-line)#password vtyLogin 設定只允許使用Telnet登入 Router(config)#line vty 0 4 Router(config-line)#login Router(config-line)#transport input telnet Router(config-line)#password vtyLogin 設定允許使用Telnet及SSH登入 Router(config)#line vty 0 4 Router(config-line)#login Router(config-line)#transport input telnet ssh Router(config-line)#password vtyLogin
Controlling VTYs 實驗 4:Layer 3 路由器裝置之安全性設定與操作 • 用ACL限制可以連線的IP位址 Router(config)# access-listaccess-list-number{deny | permit | remark line}source[source-wildcard] [log] Router(config-if)# ip access-group {access-list-number | access-list-name} {in | out} # Specify the access list interface 192.168.1.10 is blocked! 192.168.1.10 192.168.1.20 設定ACL Router(config)#access-list 1 deny 192.168.1.10 Router(config)#access-list 1 permit 192.168.0.0 0.0.255.255 將ACL配置在介面上 Router(config-ig)# ip access-group 1 in
密碼是我們用來控制存取路由器最重要的部份,因此保護密碼不被他人知道也是相當重要的。密碼是我們用來控制存取路由器最重要的部份,因此保護密碼不被他人知道也是相當重要的。 將進入priviledged EXEC level的密碼加密: Router(config)# enable secretpassword 將設定檔中未加密的密碼做加密 Router(config)# service password-encryption # 可從圖2與圖3看出下指令前後的不同。 Password Encryption 實驗 4:Layer 3 路由器裝置之安全性設定與操作 Router(config)# enable secret loginPrivelege Router(config)# exit Router# show running-config enable secret 5 1$cXqE$Iru8kpcgfOgCf1/k89mgp. enable password privilegeLogin 圖1 圖2 Router# show running-config enable password privilegeLogin ! line con 0 password consoleLogin login line vty 0 4 password vtyLogin login Router(config)# service password-encryption Router(config)# exit Router# show running-config enable secret 5 1$cXqE$Iru8kpcgfOgCf1/k89mgp. enable password 7 08315E471F100912150E200B2D222A line con 0 password 7 121A0A1901040001062423213D login line vty 0 4 password 7 15041F1528252C2D26 login 圖3
前面我們提到以將密碼做加密的動作來保護密碼本身,但若是密碼本身長度太短,即使加密也有安全性不足的問題,因此可透過以下指令限制密碼長度至少應有幾個字元,如左圖1:前面我們提到以將密碼做加密的動作來保護密碼本身,但若是密碼本身長度太短,即使加密也有安全性不足的問題,因此可透過以下指令限制密碼長度至少應有幾個字元,如左圖1: Router(config)# security passwords min-length length length:密碼所應設的最短長度 輸入此指令後影響的範圍有 user passwords enable passwords enable secrets line passwords 上述密碼在輸入此指令後,要新設定或更改密碼密碼時,若長度如果少於設定值的話則會失敗,如左圖2。在輸入此指令前所設定的密碼不受影響。 Password Minimum Length Enforcement 實驗 4:Layer 3 路由器裝置之安全性設定與操作 圖1 Router(config)#security passwords min-length 6 Forbidden! Password too short! Set password “lab” 圖2 Router(config)# enable password lab %Password too short - must be at least 6 characters. Password not configured.
當使用者遺忘密碼時,Cisco路由器預設能夠讓使用者在路由器開機時進入ROMMON mode,在這模式下可以使用Cisco password recovery procedure重新設定密碼而不更動路由器上其它的設定。這個功能造成了一個潛在的危險,任何可以接觸到路由器實體的人,都能夠經由Cisco password recovery procedure去重設路由器上的密碼,並得到完整的路由器設定資訊。 可以輸入下列指令預防任何可以接觸到路由器實體的人進行Cisco password recovery procedure的動作: router(config)# no service password-recovery 輸入該指令後便不能進入ROMMON中,因此就無法進行Cisco password recovery procedure。另外要注意由於無法進入ROMMON中,因此若快閃記憶體(Flash memory)中的IOS image異常時,便無法使用ROMMON XMODEM command下載新的IOS image回來。 詳細的Cisco password recovery procedure可參考http://www.cisco.com/en/US/products/sw/iosswrel/ps1831/products_tech_note09186a00801746e6.shtml Securing ROMMON with the no password –recovery command 實驗 4:Layer 3 路由器裝置之安全性設定與操作 Try to do password recovery. Forbidden! console Router(config)#no service password-recovery WARNING: Executing this command will disable password recovery mechanism. Do not execute this command without another plan for password recovery. Are you sure you want to continue? [yes/no]: yes
遠端連線管理是很有效的一種方式,但是因為用Telnet遠端登入時,所輸入的密碼是以明文的方式傳送,若被有心人士竊聽的話,便可利用竊聽到的密碼登入路由器當中變更設定。因此為了提高安全性,可以限制使用者只能使用SSH (Secure Shell)的方式遠端登入伺服器。 要在路由器上啟動SSH登入,必需設定以下參數: Hostname Domain-name Asymmetrical keys SSH timeouts and authentication retries Local authentication Username and password Remote login only using SSH Version Remote Configuration using SSH 實驗 4:Layer 3 路由器裝置之安全性設定與操作 Router(config)#hostnamehostname 1. Router(config)#ip domain-namedomain-name 2. Router(config)#crypto key generate rsa 3. Router(config)#ip ssh time-out seconds Router(config)#ip ssh authentication-retries tries 4. Router(config)#usernameusernamepasswordpassword • 建立遠端登入所用的帳號、密碼 Router(config)#line vty 0 4 Router(config)#transport input {all | lat | mop | nasi | none | pad | rlogin | ssh | telnet | v120} • 設定允許使用的登入方式 Router(config-line)#login {local | tacacs} • 使用路由器上設定檔中所設定的帳號、密碼認證,或是經由tacacs來做認證 5. Router(config)#ip ssh verisonverison • version: 1or 2 6.
Remote Configuration using SSH 實驗 4:Layer 3 路由器裝置之安全性設定與操作 • 將路由器名稱命名為cisco2600 • 將網域名稱設為cisco.com • 產生rsa的金鑰,打入crypto key generate rsa指令,會詢問金鑰的長度要設為多少,預設是512 bits,可設定的值為512 ~ 2048 bits。若在打入crypto key generate rsa前末指定路由器的名稱與網域名稱的話無法產生金鑰,會出現以下訊息。 % Please define a hostname other than Router. % Please define a domain-name first. • 設定time-out的時間為15秒以及登入嘗試失敗的次為2,此兩項設定必須在產生金鑰後才可設定,在金鑰未產生前輸入指令會產生下列訊息。 Please create RSA keys to enable SSH. • 設定遠端連線的方式只能利用SSH,並根據路由器上所設定的使用者帳號、密碼來做認證,在這我們所設的帳號為student,密碼為cisco。 • SSH的版本有1和2這兩種版本,而版本1存在某些弱點,因此在這我們設定使用較為安全的版本2。 SSH設定影片
接下來的內容,著重在使用者利用遠端連線登入系統時,由於安全性的考量而增設一些登入限制,藉此減緩字典攻擊的速度以及DoS攻擊。採取的方法有:接下來的內容,著重在使用者利用遠端連線登入系統時,由於安全性的考量而增設一些登入限制,藉此減緩字典攻擊的速度以及DoS攻擊。採取的方法有: Delay between successive login attempts Login shutdown if DoS attacks are suspected Generation of system logging messages for login detection Setting a Login Failure Blocking Period 設定若使用者在短時間中連續登入失敗超過允許的次數,路由器會進入quiet mode,此時路由器會根據設定值拒絕所有嘗試登入的連線一段時間,只有使用login quiet-mode access-class所指定的ACL當中的IP位址可以連線。 router(config)# login block-for seconds attempts tries within seconds seconds: 拒絕連線的時間長度 tries: 最大嘗試次數 seconds:在多少的時間內 如果只使用login block-for而不接後面參數的話,則預設的拒絕連線時間為1秒。 router(config)# login block-for Setting Login Enhancement 實驗 4:Layer 3 路由器裝置之安全性設定與操作 At most 3 login attempts within 50 seconds. Login failure 3 times within 50 seconds. blocked Router(config)# login block-for 100 attempts 3 within 50 • 若在50秒內同一IP位址發生3次登入失敗的動作,則在100秒內拒絕所有的連線,只有在例外清單當中的IP位址可以連線。 • 當路由器進入quiet mode時所產生的訊息: 00:04:07:%SEC_LOGIN-1-QUIET_MODE_ON:Still timeleft for watching failures is 158 seconds, [user:sfd] [Source:192.168.1.10] [localport:23] [Reason:Invalid login], [ACL:22] at 16:17:23 UTC Wed Feb 26 2007
Excluding Addresses from Login Blocking 前面設定若在短時間內,登入失敗的次數超過設定值,則拒絕連線一段時間。而在這裡,我們要設定一個例外清單,使得在清單中的IP位址能夠不受此限制。 router(config)# login quiet-mode access-class{acl-name | acl-number} 如左圖,假設目前路由器處在quiet mode,我們設定一個ACL只允許192.168.1.10可以在路由器處於quiet mode時可以與路由器做登入的動作。 資料來源http://www.cisco.com/univercd/cc/td/doc/product/software/ios124/124cg/hsec_c/part30/h_login.htm Setting Login Enhancement 實驗 4:Layer 3 路由器裝置之安全性設定與操作 192.168.1.5 Quiet mode 192.168.1.10 router(config)# login quiet-mode access-class acl-name Router(config)# ip access-list standard exclude1 Router(config-std-nacl)#permit 192.168.1.10 Router(config)# login quiet-mode access-classexclude1 router(config)# login quiet-mode access-class acl-number Router(config)# access-list 10 permit 192.168.1.10 Router(config)# login quiet-mode access-class10
Setting a Login Delay 設定每次登入嘗試所需等待的時間 router(config)# login delay seconds 如果先前有使用login-block for的指令,之後沒有使用login delay的指令,則預設的等待延遲時間為1秒。 Logging Messages of Login Success/Failure 紀錄下登入成功與失敗的紀錄,用來事後追蹤有哪些人登入過路由器或是判斷是否有人在對路由器攻擊。 Router(config)# login on-failure log [everylogin] Router(config)# login on-success log [everylogin] Setting Login Time-out 為了避免閒置的連線佔用VTY連線資源,以及避免管理者因某些原因離開而未將連線中斷而被他人利用,所以我們設定一個連線如果多久的時間沒有任何的動作,即強制斷線。 Router(config-line)# exec-timeout minutes [seconds] Setting Login Enhancement 實驗 4:Layer 3 路由器裝置之安全性設定與操作 Waiting for 30 seconds. Login failure. blocked Router(config)# login delay 30 Router(config)# login on-failure log Router(config)# login on-failure log every 5 設定經由console登入時,閒置2分30秒即斷線 Router(config)#line console 0 Router(config-time)#exec-timeout 2 30 設定經由VTY登入時,閒置30秒即斷線 Router(config)#line vty 0 4 Router(config-time)#exec-timeout 0 30
在路由器上設定不同的privilege levels來限制使用者使用所能夠使用的路由器指令,或是在路由器上建立不同的使用者帳號,在使用者用各自的帳號登入時,將登入紀錄及修改路由器設定時紀錄下來。 在Cisco IOS有16個privilege levels (0~15), level 0限制最多,level 15限制最少。在IOS中預設有兩個privilege levels,分別為user EXEC mode (level 1)以及privilege EXEC mode (level 15)。每個IOS的命令也預設分為level 1或level 15,level 1預設只能夠使用少數命令而已,如左圖,而level 15可使用所有的指令。 除了預設的兩個層級外,我們可以自行設定額外的privilege levels去指定能夠使用哪些命令。設定額外的privilege level是為了根據使用者權限的不同,設定不同的層級來限制使用者可使用的命令,可在安全考量與便利性下取得平衡。 Setting router privileges and accounts 實驗 4:Layer 3 路由器裝置之安全性設定與操作
Setting Multiple Privilege Levels 自定各privilege level能夠使用哪些指令 Router(config)#p privilege mode{level levelcommand | reset command} level : Levels 2-14 may be customized for user-level priviledges 設定進入自訂的privilege levels的密碼 Router(config)# enable secret level level [encryption-tpe] password-string 進入特定的privilege level Router> enable[privilege-level] Privilege-level:If this argument is not specified, the privilege level defaults to level 15 (traditional enable privileges). Setting router privileges and accounts 實驗 4:Layer 3 路由器裝置之安全性設定與操作 Router(config)# privilege exec level 2 ping Router(config)# enable secret level 2 pass2 Router(config)# privilege exec level 15 show logging Router(config)# privilege exec level 15 access-lists Router(config)# privilege exec level 15 rlogin Router(config)# privilege exec level 15 telnet Router(config)# privilege exec level 15 connect Router(config)# privilege exec level 1 show ip
Accounts 我們應該給每個管理者一個專屬的帳號,用意是當管理者使用專屬的帳號登入並修改設定時,會產生log檔紀錄是哪位使用者以及更改設定的時間。 管理帳號時所應注意的事項: 每個帳號的privilege level應設為1 不要建立沒有密碼的帳號 當帳號不再需要使用時,從路由器上移除 左圖表示建立兩個使用者帳號分別為lee、chang以及各自建立密碼,且兩個帳號都設為privilege level 1,並在路由器上移除bryan這個帳號。 Setting router privileges and accounts 實驗 4:Layer 3 路由器裝置之安全性設定與操作 Router#config t Enter configuration commands, one per line. End with CNTL/Z. Router(config)# username lee password re49lee Router(config)# username lee privilege 1 Router(config)# username chang password rechang23 Router(config)# username lee privilege 1 Router(config)# no username bryan Router(config)# username lee privilege 1
Turn off unneeded services 實驗 4:Layer 3 路由器裝置之安全性設定與操作 • Cisco路由器提供了許多的網路服務,而在這些服務中有些我們可能不需要或是這些服務本身存在著弱點,因此我們可以將這些服務停用,避免潛在的安全問題,以下為應停用的服務列表: 資料來源 http://www.nsa.gov/snac/routers/C4-040R-02.pdf
Turn off unneeded services 實驗 4:Layer 3 路由器裝置之安全性設定與操作 • 以下是關閉各項服務的指令: • Small services (echo, discard, chargen, etc.) - no service tcp-small-servers - no service udp-small-servers • BOOTP - no ip bootp server • Finger - no service finger • HTTP - no ip http server • SNMP - no snmp-server • CDP - no cdp run • Source routing - no ip source-route • Unused interfaces - shutdown • No Smurf attacks - no ip directed-broadcast • Mask replies - no ip mask-reply • Ad-hoc routing - no ip proxy-arp
為避免收進攻擊者偽造的路由更新訊息,因此建議使用需認證的路由協定,需認證的路由協定有RIPv2、OSPF等。在這邊僅說明如何設定RIPv2 MD5 Authentication,場景如左圖所示,假設MA與MB目前已經設定好RIPv1。 設定RIPv2: Router(config)# router rip Router(config-router)# version 2 設定RIPv2 Authentication的步驟: 定義key chain的名稱。 定義key ID。 指定要執行認證的介面以及要使用的key chain。 指定執行認證的介面是以明文還是以MD5的方式做認證。. RIPv2 MD5 Authentication 實驗 4:Layer 3 路由器裝置之安全性設定與操作 Host A Fa0/0 10.0.0.1/8 S0/0 192.168.1.2/30 MA S0/0 192.168.1.1/30 MB Fa0/0 192.168.3.1/24 Host B
MA(config)#key chain Yuntech MA(config-keychain)#key 1 MA(config-keychain-key)#key-string CNLAB MA(config-keychain-key)#interface serial 0/0 MA(config-if)#ip rip authentication key-chain Yuntech MA(config-if)#ip rip authentication mode md5 設定RIPv2 Authentication的指令: Router(config)# key chain name-of-chain 定義key chain的名稱 Router(config-keychain)# key key-id 定義key ID (0 ~ 2147483647) Router(config-keychain-key)# key-string text 設定認證的密碼 Router(config-if)# ip rip authentication key-chain name-of-chain 指定要使用的key chain Router(config-if)# ip rip authentication mode {text | md5} 指定以明文還是以MD5的方式做認證 RIPv2 MD5 Authentication 實驗 4:Layer 3 路由器裝置之安全性設定與操作 MB(config)#key chain Yuntech MB(config-keychain)#key 1 MB(config-keychain-key)#key-string CNLAB MB(config-keychain-key)#interface serial 0/0 MB(config-if)#ip rip authentication key-chain Yuntech MB(config-if)#ip rip authentication mode md5 在MA與MB上設定key chain的名稱為「Yuntech」,key ID設為1,此ID認證的密碼設為CNLAB,接著進入介面serial0/0,在serial0/0上啟用認證 (MA與MB使用serial0/0相連),選擇使用key chain 「Yuntech」,以MD5的方式認證。