設定SSH

  • 主機名稱一定要改,不可以用預設   switch(config)#hostname TEST
  • 設定 domain-name   switch(config)#ip domain-name TEST
  • 啟動本地ssh-server並產生RSA-KEY   switch (config)#crypto key generate rsa
  • 建立帳號密碼   switch (config)#username doom password test
  • 給他最高權限   switch(config)#username doom privilege 15
  • 先清空現所有連線方式 (包含telnet)   switch (config-line)#transport input none
  • 進入遠端登入管理模式   switch (config-line)#line vty 0 4
  • 僅開放 SSH 存取   switch (config-line)#transport input ssh
  • 使用本地驗證資料庫   switch (config-line)#login local

Unicast Reverse Path Forwarding (Unicast RPF,單播逆向轉發)

之前在組播部分我們提到過這個Unicast RPF,這裡我們詳細說一下。這個功能可以幫助我們減輕(注意不是完全避免,是減輕)偽造的源IP地址(IP Spoofing,IP地址欺騙)的數據包通過路由器所帶來的問題。

 

基礎觀念

Unicast RPF對於進入網絡中的那些源IP地址「無法證實」的IP數據包進行丟棄以防止地址欺騙。舉個例子來說,對於DoS攻擊,攻擊者會利用偽造的或者是不斷改 變的源IP地址以防止攻擊被定位或過濾。對於此類攻擊,Unicast RPF只轉發那些源IP地址在路由表中存在並有效的數據包。

當Unicast RPF在某個接口上啟用,路由器檢查所有進入此接口的數據包,確定其源IP地址和源接口在路由表中存在。這種「向後看」的能力只有當Cisco express forwarding (CEF) 啟用時才生效,因為其依賴於Forwarding Information Base (FIB),FIB是CEF生成的。

   注意: Unicast RPF只能在接口的input方向上。

Unicast RPF檢查從某個接口上進入路由器的數據包,通過FIB判斷該數據包是否通過最優路徑到達,如果是,則正常轉發,如果找不到逆向(返回源)的路徑,說明該 數據包的源IP可能被修改,這時需要通過ACL來判定對該數據包是轉發還是丟棄。在接口啟用Unicast RPF時,ACL是可選項,如果沒有配置ACL,則對於找不到逆向路徑的數據包會被丟棄!


當數據包到達一個配置了Unicast RPF和ACl的接口,路由器進行以下操作:

  1. 利用接口上Input方向的ACL對數據包進行檢查。
  2. Unicast RPF 檢查是否有返回源的最佳路徑。
  3. 完成FIB查找
  4. 利用出站接口上Output方向的ACL對數據包進行檢查。
  5. 轉發數據包。

ACL(access control list,存取控制清單)

清單大小,也就是條件敘述的數量,依可用記憶體的決定,用來控制管理流程
可用在防火牆中過濾封包與路徑,可用在isdn的ddr

P.S.雖可過濾經過router的交通,但無法過濾router自己產生的交通

使用ACL步驟大致如下

  1. 設定< acl id>規則     (config)#access-list < acl id> < describe rule>
  2. 將應用在介面上     (config-if)#ip access-group < acl id> < act>

比對封包與acl的主要規則

  1. 依順序循序地比對清單
  2. 一旦比對到符合條件立即作用,不會繼續比對下去
  3. 若比對到最後無符合條件則被丟棄,因為最後有隱藏deny all的命令

標準ACL

標準acl建議放在靠近目的地的地方,因為只能限制來源
(config)#access-list < acl id> < act> < source [source wildcard]> [log]
< acl id>存取清單編號,編號從1開始,可設定的編號依協定有所不同,如下
ip:1-99,1300-1399
extended ip:100-199,2000-2699 //設定extended acl時用

 

appletalk:600-699
ipx:800-899
extended ipx:900-999//設定extended acl時用

ipx sap filter:1000-1099
< act>有deny(拒絕),permit(允許),remark(註解)
< source [source wildcard]>傳送封包的網路或主機編號
source wildcard為選擇性參數,是一個32bit的wildcard mask(萬用遮罩)
與ip位置配對而成的,可分成4個byte,各8bit
wildcard mask位元為0代表檢查相對應的位元值,為1則忽略
ps: 萬用字元any,可表示source=0.0.0.0,source willdcard=255.255.255.255
ex:0.0.0.0 255.255.255.255 可用any表示

萬用字元host,可表示wildcard mask 0.0.0.0,此為預設
ex:172.30.16.29 0.0.0.0 可用host 172.30.16.29或172.30.16.29表示
[log]產生有關封包詳細的紀錄訊息

標準acl常用範例

設定acl編號1的描述

  • 對acl id 1註解    (config)#access-list 1 remark this is a example 
  • 拒絕172.16.1.1    (config)#access-list 1 deny 172.16.1.1
  • 允許任何來自172.16.1.0的網路    (config)#access-list 1 permit 172.16.1.0 0.0.0.255
  • 拒絕任何來自172.16.0.0的網路    (config)#access-list 1 deny 172.16.1.1 0.0.255.255 
  • 拒絕任何來自172.16.88.0/21的網路    (config)#access-list 1 deny 172.16.88.0 0.0.7.255
  • 拒絕任何來自172.16.192.0/19的網路    (config)#access-list 1 deny 172.16.192.0 0.0.31.255 
  • 允許任何網路    (config)#access-list 1 permit any

Extended ACL

(config)#access-list < acl id> [dynamic] [timeout] < act> < protocol> < addr info> [other options]
extended acl建議放在靠近source的地方
因為extended acl的設定較詳細,放在source是沒有問題
且可省資源,讓封包一要出去時就可以檢查,而非走遠才發現此封包不准進入目的端

 

  • [dynamic]     將acl定義為動態
  • [timeout]      指定存取清單的有效的時間長度,預設無限長,以分鐘為單位
  • < protocol>      網路協定的名稱或編號 ex:ip,tcp,eigrp,icmp,…等
  • < addr info>     位置資訊,格式為< source [source wildcard]> < destination [destination wildcard]>
  • < destination [destination wildcard]>      其他可選的參數,格式為[precedence] [tos] [log|log-input] [time-range] [fragments]
  • [other options ]     (config)#access-list 1 deny 172.16.192.0 0.0.31.255
  • [precede]      可利用優先權來過濾流量,以0到7的數字表示
  • [tos]      可利用服務等級來過濾流量,以0到7的數字表示
  • [log|log-input]     log-input包括輸入介面與來源mac位置,或紀錄輸出中的vc
  • [time-range]    應用在此敘述時間範圍的名稱
  • [fragments]     將acl項目應用到非初始化的封包片段上,因此不是允許就是拒絕封包片段

ex:time-range大致用法
(config)#time-range 
(config-time-range)#periodic 
(config)#access-list 101 permit tcp any any time-range

 

  extended ACL應用在icmp或igmp時,[protocol]=icmp或igmp
(config)#access-list < acl id> [dynamic] [timeout] < act> < protocol> < addr info> [icmp] [other options]
[icmp]可使用欄位如下:
[icmp-type] 利用icmp訊息類型來過濾icmp封包,icmp訊息類型是介於0-255的數字
[icmp-code] 利用icmp訊息碼進行過濾icmp封包,icmp訊息碼是介於0-255的數字
[icmp-message] 利用icmp訊息名稱過濾icmp封包
[igmp-type] 利用icmp訊息類型來過濾igmp封包,igmp訊息類型是介於0-15的數字,針對igmp
  extended ACL應用在tcp或udp時,[protocol]=tcp或udp
(config)#access-list < acl id> [dynamic] [timeout] < act> < protocol> < detail addr info> [established] [other options]
<detail addr info>格式為< source [source wildcard] [operator [port]]> < destination [destination wildcard] [operator [port]]>
[operator] 比較來源與目的地埠,運算種類有lt(小於),gt(大於),eq(等於),neq(不等於),range(範圍)
[port] 過濾tcp或udp的埠或名稱
[established] 針對tcp,表示己建立的連線

 

ex:設定acl編號101的描述

  • 允許來自172.16.6.0網路的封包使用telnet    (config)#access-list 101 permit tcp 172.16.6.0 0.0.0.255 any eq telnet 
  • 拒絕172.16.4.0/24的port21資料到172.16.3.0/24    (config)#access-list 101 deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 21 
  • 拒絕172.16.10.1 telnet到172.16.30.5    (config)#access-list 101 deny tcp host 172.16.10.1 host 172.16.30.5 eq 23
  • 允許SMTP    (config)#access-list 101 permit ip any any eq SMTP 
  • 允許其他資料    (config)#access-list 101 permit ip any any
  • 允許其他資料,和any any相同    (config)#access-list 101 permit ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255 

DHCP Snooping

DHCP伺服器在區域網路中用來分配IP位置是再適合不過,特別是在建置IP Phone時,因為IP Phone的安裝地點比起一般PC主機來說,更容易因為人員組織變動,而需要更改IP、Default Gateway、TFTP Server等相關資訊,若每當話機異動而需要手動設定話機的IP資訊,必然會造成管理人員困擾,此時透過DHCP Server發放Voice VLAN下話機的IP位置,讓IP Phone可以取得IP位置並自動註冊到Cisco UC,成為能否短時間內大量部屬話機的關鍵之一,也是日後能否減輕維護工作的主要考量因素。

但也因為難以管制私人DHCP的架設,且在網路上難以透過網路MAC或IP找到實體的DHCP Server位置,使得DHCP環境亦遭受非法DHCP的影響,當在私人網路裡有人架設私有DHCP而干擾正確的DHCP運作時,往往讓管理人員傷腦筋,除了必須防範DHCP的不當使用外,另外也會面臨到DHCP的DOS攻擊問題,當DHCP的位置因為攻擊而發放完畢,正常需要IP的主機反而要不到IP位置,導致無法連上網路。

在Cisco Switch上,用戶端介面與Vlan介面使用ip dhcp snooping來防止用戶端私設DHCP Server,該指令會拒絕從非trust介面傳送過來的DHCP response,避免私有DHCP伺服器亂發放不正確的DHCP資料,同時確保DHCP Server的回應封包一定會來自合法的DHCP伺服器,設定方法也很簡單,只要在Switch上,使用ip dhcp snooping指令,指定哪些VLAN要使用該功能,並且在連接DHCP Server的介面上設定該介面為DHCP Trust即可,此功能也可以防範發生資料竊取的情況,當駭客的DHCP Server發放不正確的資料時,會告訴用戶端採用該DHCP指定的IP作為Gateway,若該IP同時進行Routing與Sniffing封包,則一般用戶會因為連線沒有影響而沒有察覺自己的資料已經被竊取。

基本設定範例如下:
DHCP snooping:
(config)#ip dhcp snooping vlan 22
(config-if)#ip dhcp snooping trust

另外要防止DHCP DOS攻擊,可以使用ip dhcp snooping limit rate來限制Switch轉送DHCP request的速率,
設定範例如下:
DHCP snooping:
(config)#ip dhcp snooping vlan 22

(config-if)#ip dhcp snooping trust 
(config)#ip dhcp snooping limit rate 10

Port Security(防非法MAC存取)

  1. switchport port-security maximum 允許讓多少筆 Mac-Address通過
  2. switchport port-security mac-address 允許哪些 Mac-Address過過這裡有兩個選項可選:
    一個是直接輸入讓它通過的Mac-Address,另一個是動態紀錄
  3. switchport port-security violation 當不在允許列表的 Mac-Address出現時所採取的動作
    • protect 保護原有的 Mac-Address, 不允許其它 Mac-Address通過 
    • restrict 不允許通過, 且紀錄
    • shutdown 讓該 Port Shutdown
  4. switchport port-security aging 如果動態學習Mac-Address(如第2項),
          這裡可以設定該Mac-Address可以存活的時間
    • static:加入此項目時,則手動輸入的Mac-Address也加入計時
    • type: 如何計時的方式,有兩個選項, absolute指的是絕對時間,以系統時間為準;inactivity指的是當沒有封包通過時,就開始計時
    • time: 可以存活的時間,以分鐘計