第 10 章 安全
外圍、防火牆、和內部路由器
辨識安全性威脅 應用層攻擊這些攻擊通常鎖定在伺服器上執行之軟體的已知漏洞。因為授與這些帳號的權限通常都比較高, 所以壞傢伙就會存取並利用執行這些應用的機器 Autorooter 駭客自動化。壞傢伙使用稱為toolkit的某些東西來探測、掃描、然後捕捉在具有策略性位置之電腦上的資料 後門這些只是通往電腦或網路的路徑。透過簡單的入侵或更精巧的「特洛伊木馬」程式碼, 壞傢伙就可以在任何時間使用他們植入的路徑來入侵特定的主機或網路
辨識安全性威脅- DoS與DDoS攻擊 DoS與DDoS攻擊藉由將提供正常服務的系統塞爆, 而讓其他人無法取得服務 TCP SYN flood Ping of death攻擊 TFN (Tribe Flood Network) 和 TFN2K (Tribe Flood Network 2000) Stacheldraht
辨識安全性威脅(續) IP 仿冒 (IP spoofing) 這種攻擊利用內部受信任網路位址範圍內的 IP 位址, 或是使用經過審核、受信任的外部 IP 位址 中間人式攻擊 (Man-in-the-middle attack) 使用sniffer工具, 再搭配遶送和傳輸協定來攔截與操弄網路的封包 網路偵查 (network reconnaissance)透過像埠號掃描、DNS 查詢、和 ping 掃射 (ping sweep) 等方法來蒐集所有可能的資訊, 因為他們對網路知道的越多, 就越能破解它 封包分析器 (packet sniffer) 將網路界面卡設為promiscuous mode, 讓它把所有經過網路實體層的封包都傳送給一個特殊應用來檢視和挑選 密碼攻擊透過像 IP 偽造、封包分析、和特洛伊木馬等更複雜的攻擊﹐找到使用者的密碼, 以便偽裝成有效的使用者, 然後取得使用者的權限和資源
辨識安全性威脅(續) 暴力法攻擊 (brute force attack) 另一種軟體導向的攻擊, 利用在目標網路上執行的程式, 嘗試登入到某些共享的網路資源 通訊埠重導攻擊 (port redirection attack) 這個方法需要駭客先入侵一台主機, 以取得穿越防火牆的錯誤交通 (正常情況下應該不能通過) 特洛伊木馬攻擊和病毒 使用惡意程式碼來感染並危害使用者的機器。不過病毒只是附加在其他檔案中的片段指令﹐而木馬則是包藏禍心的完整程式 利用信任攻擊 (trust exploitation attack) 發生在有人利用網路內的信任關係的時候。例如企業的外圍網路連線通常會掩護重要的東西, 如 SMTP、DNS、和 HTTP 伺服器
Cisco 的 IOS 防火牆 狀態式 (stateful) IOS 防火牆檢查引擎這是外圍防護功能, 因為它是以個別應用為基礎, 提供內部使用者安全的存取控制。人們通常稱之為情境式存取控制 (Context-Based Access Control, CBAC) 入侵偵測封包的深層檢查工具, 可以參考 102 種最常見的攻擊和入侵偵測特徵, 以即時監督、攔截、和回應濫用的情況 防火牆語音穿越 (firewall voice traversal) 應用層的功能, 根據協定對呼叫流 (call flow) 及相關開放通道 (open channel) 的瞭解。支援 H.323v2 和 SIP (Session Initiation Protocol) 語音協定
Cisco 的 IOS 防火牆(續) ICMP 檢查基本上只允許回應來自防火牆內部的 ping 和 traceroute 等 ICMP 封包, 但拒絕其他的 ICMP 交通 驗證代理者 (authentication proxy) 讓使用者可以透過 HTTP、HTTPS、FTP 和 Telnet, 在想要存取網路資源的時候進行驗證。它能自動地從 RADIUS 或 TRACACS + 伺服器上取得使用者的個人網路存取明細, 並根據它來驗證 目的 URL 的政策管理功能自助餐, 通常稱為 URL 過濾
Cisco 的 IOS 防火牆(續) 個別使用者防火牆這些基本上是個人化、可下載的特定使用者防火牆 - 可以透過服務供應商取得。您也可以透過 AAA 伺服器的資料檔儲存庫 (profile storage) 來取得個人化的 ACL 和其他設定 Cisco IOS 路由器和防火牆配置 (provisioning) 可以進行零接觸 (no-touch) 的路由器配置、版本更新、和安全政策 服務阻絕的偵測和預防檢查封包標頭, 並且丟棄所有可疑的封包 動態埠號對應一種轉接功能, 讓防火牆所支援的應用可以在非標準埠號上運作 Java applet 阻擋功能防止任何陌生而無法辨識的 Java applet
基本和進階的交通過濾 以政策為基礎、多界面的支援讓您能根據安全政策, 透過 IP 位址和界面來控制使用者的存取 網路位址轉換 (Network Address Translation, NAT) 對外界隱藏內部網路以增加安全性 以時間為基礎的存取清單根據每天的特定時段和每週的特定日子來決定安全政策 對等路由器的驗證保證路由器能從受信任的真正來源取得可靠的遶送資訊 (這需要有支援驗證的遶送協定, 例如 RIPv2、EIGRP 或 OSPF)
存取清單簡介 存取清單就是一個對封包進行分類的條件清單﹐可當作用來進行決策的工具 存取清單的可能應用 實作安全政策, 過濾不想要的封包 控制動態遶送協定會宣傳那些網路-將分送清單應用到遶送協定 用存取清單對封包分類, 以進行排隊 (queuing) 或 QOS 之類的服務, 或者控制那些類的交通可啟動昂貴的 ISDN 鏈路
存取清單的比對規則 循序地比對存取清單的每一列 - 從存取清單的第 1 列開始, 然後比對第 2 列, 然後第 3 列, 依此類推 不斷地比對存取清單, 直到符合為止。一旦封包符合存取清單上某列的條件, 就會對封包起作用, 並且不再進行任何比對 每個存取清單的結尾都會有一列隱含的 "拒絕" - 這表示如果封包無法符合存取清單中任何一列的條件, 則會被丟掉
存取清單類型 標準式存取清單 (standard access list) 只使用 IP 封包中的來源 IP 位址當作檢驗條件 延伸式存取清單 (extended access list) 可以比對 IP 封包之網路層標頭中的來源與目的 IP 位址與協定欄位, 以及傳輸層標頭中的埠號 名稱式存取清單 (named access list) 名稱式存取清單可以是標準式或延伸式的, 並不真的是新類型。只因為他們的產生與參考方式與標準或延伸式存取清單不同, 所以我們就加以區別。但其實他們的功能是一樣的
應用存取清單 一旦產生存取清單之後, 除非加以應用, 否則不會有任何作用 若要利用存取清單來當交通過濾器, 必須將存取清單應用在路由器的界面上, 也就是想要過濾交通的地方, 而且必須明確指定出存取清單要應用在那個方向的交通 進入的存取清單 (Inbound access list) 當存取清單應用在界面上的進入封包時, 那些封包在遶送給離開界面之前, 要先經過存取清單的處理。 離開的存取清單 (outbound access list) 當存取清單應用在界面上的離開封包時, 那些封包要先遶送到離開界面, 然後在儲存於佇列之前得先經過存取清單的處理
存取清單實作指引 每個界面的每個協定的每個方向只能指定一個存取清單 安排您的存取清單, 使得比較明確的核對會出現在存取清單的頂端 任何時候規則被新增到存取清單時, 會被放在清單的底部。強烈建議您使用文字編輯器來編輯存取清單 您無法從存取清單中移除一列, 如果您試著如此做, 就會移除整個清單。所以最好是在編輯清單之前, 先將存取清單拷貝到文字編輯器中。唯一的例外是使用名稱式存取清單 除非您的存取清單以 permit any 命令當結尾, 否則封包如果沒有符合清單的任何條件, 就會被丟棄
存取清單實作指引(續) 產生存取清單, 然後應用至界面上。存取清單如果沒有應用在任何界面上, 根本就不會起作用 存取清單的設計是要過濾經過路由器的交通, 他們不會過濾那些從路由器發起的交通 儘可能地將 IP 標準式存取清單配置在靠近目的地的地方, 這就是我們真的不是很想要在網路中使用標準式存取清單的原因。您不能將標準式存取清單放在靠近來源主機或網路的地方, 因為您只能根據來源位址去過濾, 這樣就沒有任何封包會被轉送 儘可能地將 IP 延伸式存取清單配置在靠近來源的地方。為延伸式存取清單可過濾每個特定的位址與協定, 您並不想要讓您的交通流經整個網路, 然後再被拒絕。如果將這種清單配置在儘可能靠近來源位址的地方, 就可在交通消耗您寶貴的頻寬之前先加以過濾
使用 ACL 減輕安全性問題 下面是 ACL 可以用來減輕的安全性威脅: 進入方向的 IP 位址偽造 離開方向的 IP 位址偽造 服務阻絕的 TCP SYN 攻擊, 阻隔外部的攻擊 DoS TCP SYN 攻擊, 使用 TCP 攔截 (Intercept) DoS smurf 攻擊 進入方向的 ICMP 訊息過濾 離開方向的 ICMP 訊息過濾 traceroute 過濾
如何減輕IP Spoofing的威脅 不要讓任何來源位址是內部主機或內部網路的 IP 封包進入您的私有網路: 內部網路位址 本地主機位址 (127.0.0.0 / 8) 保留的私有位址 任何落在 IP 多點傳播位址範圍內的位址
標準式存取清單 藉由檢查封包的來源 IP 位址來過濾網路交通 標準式存取清單語法範例: 清單編號
存取清單編號範圍 各種存取清單的編號範圍:
通配遮罩 通配遮罩是要與主機或網路位址合用, 以告訴路由器您所要過濾的是一個範圍的可用位址 通配遮罩中的0表示對應的位元必須符合﹐1表示對應的位元可為任意值 設定一個範圍的位址時, 得選擇所需之次個最大的區塊大小,例如設定 18 部主機, 則需要的區塊大小是 32
通配遮罩範例 172.16.30.5 0.0.0.0 - 4個位元組都要符合﹐這表示它是一部主機 172.16.30.5 0.0.0.0 - 4個位元組都要符合﹐這表示它是一部主機 172.16.30.0 0.0.0.255 - 前3個位元組都要符合﹐但第4個位元組可為任意值 172.16.8.0 0.0.7.255 -區塊大小是7 +1 = 8(通配遮罩總是比區快大小少1)﹐所以這個位址範圍就是從172.16.8.0開始﹐往上 8 個區塊大小的位址, 到 172.16.15.0為止 要符合前 3 個位元組, 但第 4 個位元組可為任何值: 要符合前 2 個位元組, 而後 2 個位元組可為任何值:
通配遮罩範例(續) 利用區塊大小 4, 範圍從 172.16.16.0 到 172.16.19.0: 從 172.16.16.0 開始, 經過區塊大小 8, 直到 172.16.23.0: 從 172.16.32.0 開始, 經過區塊大小 16, 直到 172.16.47.0: 從 172.16.64.0 開始, 經過區塊大小 64, 直到 172.16.127.0: 從 192.168.160.0 開始, 經過區塊大小 32, 直到 192.168.191.0:
運用通配遮罩時的小技巧 每個區塊大小必須從 0 或區塊大小的倍數開始﹐例如, 不可以說您想要區塊大小 8, 然後卻從 12 開始, 您必須使用 0 - 7, 8 - 15, 16 - 23 等。又例如對於區塊大小 32, 則範圍會是 0 - 31, 32 - 63, 64 - 95 等 any 命令等同於通配遮罩 0.0.0.0 255.255.255.255
標準式存取清單範例1 業務部區域網路上的使用者不應該存取財務部區域網路, 但應該要能存取網際網路與行銷部區域網路 行銷部區域網路需要存取財務部區域網路的應用服務
標準式存取清單範例2 阻止會計部門的使用者去存取與 Lab_B 路由器相連的人力資源伺服器, 但允許所有其他的使用者存取該區域網路: 應該要產生什麼樣的標準式存取清單, 而且要配置在哪裡呢? 其實真正的答案應該是利用延伸式存取清單, 並且配置在最靠近來源端;但題目指定要使用標準式存取清單 根據基本法則, 標準式存取清單的配置應該要靠近目的地 - 這個例子就是在 Lab_B 路由器之乙太網路界面 0 的離開方向:
標準式存取清單範例3 阻止圖中的 4 個區域網路存取網際網路: E0 E1 E2 E3
控制 VTY (telnet) 存取 阻止使用者 telnet 到大型路由器: 產生一個延伸式 IP 存取清單, 限制對這部路由器之每個 IP 位址的 Telnet 存取, 但如果如此做, 必須將它應用在每個界面的進入方向-不好擴充 利用標準式存取清單來控制對 VTY 連線本身的存取 只需要控制使用者來自何處即可 -他們的來源 IP 位址
控制 VTY (telnet) 存取(續) 執行步驟: 以下的範例只允許 172.16.10.3 主機可以 telnet 至路由器: 以 access-class 命令應用這份存取清單至 VTY 連線上 以下的範例只允許 172.16.10.3 主機可以 telnet 至路由器:
延伸式存取清單-編號
延伸式存取清單-動作
延伸式存取清單-協定
延伸式存取清單-來源位址
延伸式存取清單-目的位址
延伸式存取清單-其他選項
延伸式存取清單-根據特殊應用協定來過濾
延伸式存取清單-根據特殊應用協定來過濾
延伸式存取清單範例 1 利用前一個 IP 標準式存取清單範例的圖 10.2 的網路, 拒絕對財務部區域網路上的 172.16.30.5 主機存取 Telnet 與 FTP 服務。而所有這部主機的其他服務與所有其他主機都可讓業務部與行銷部存取: 如果這裡沒有指定 tcp, 後面就不能指定要過濾埠號 21 與 23 如果這份清單只是要阻擋來自業務部區域網路的存取, 就得在儘量靠近來源處或 E0 界面配置這份清單,但我們產生的規則要應用到所有主機上,所以我們將它應用在 E1 界面的離開方向
延伸式存取清單範例 2 這個範例用到圖 10.4,這次我們想要做的是阻止 Telnet 存取到連結 E1 界面的區域網路與連結 E2 界面的區域網路 如果我們只用到一份存取清單, 效率並不會很好, 因為如此一來每個從這些界面出去的封包都要被檢查。但如果我們利用 2 份存取清單, 而且設定無誤的話, 則每個界面上的延遲都會變少
名稱式存取清單 名稱式存取清單只是讓您用名稱來產生標準式或延伸式存取清單的另一種方法 名稱式存取清單有利於存取清單的維護工作 除了讓我們以有意義的方式來參考它們之外,名稱式存取清單沒有任何新的或不同的意義, 但在語法上則有微妙的變化
名稱式存取清單的設定 進入名稱式存取清單的設定模式 離開名稱式存取清單的設定模式
名稱式存取清單的設定(續) 確認存取清單已經存在 將存取清單應用在界面上
交換埠 ACL 交換埠 ACL只能應用在交換器第 2 層的界面上 交換埠 ACL只能應用在進入界面的清單中, 而且只能使用名稱式清單 MAC 延伸式存取清單也使用來源和目的 MAC 位址, 以及選擇性地使用協定種類資訊 只要將交換埠 ACL 用在主幹埠上,就可以用來控制 VLAN 上的交通
交換埠 ACL的設定
交換埠 ACL的設定(續)
交換埠 ACL的設定(續) 將清單應用在交換埠上 其他命令選項,可根據乙太網路訊框標頭中的 ether-type 欄位來過濾 如果您擋住 0x800, 就會擋住所有 IP。未來如果您決定要強迫所有人都執行 IPv6, 這會很方便
lock and key ACL (動態 ACL) 遠端或本地 Telnet 驗證與延伸式 ACL 的組合 設定動態 ACL 組態之前, 必須先在路由器上應用延伸式 ACL 來停止經過的交通,要通過路障的唯一方式就是 telnet 到路由器並且取得驗證 運作方式:使用者啟動的 Telnet 連線會被丟棄, 取而代之的是附加到原本延伸式 ACL 上、只有單一項目的動態 ACL。它會讓交通在特定一段時間內通過, 時間截止後就失效
反射式 ACL 根據上層會談的資訊來過濾 IP 封包, 並且通常會允許離開的交通通過, 但是限制進入的交通 不能使用編號式或標準的 IP ACL、或是任何其他協定的 ACL, 來定義反射式 ACL。它們可以與其他標準或靜態的延伸式 ACL 一起使用, 但是它們只能用延伸的名稱式 IP ACL 來定義
以時間為基礎的 ACL
以時間為基礎的 ACL(續)
Remark 命令 在 show access-list 命令的輸出中看不到這些註解, 而只能在運行組態中看到
情境式存取控制 (Cisco IOS 防火牆) 1. 首先, 如果內部 ACL 核准, 路由器會取得所有送給它的內部封包 2. 接著, 核准的交通會接受防火牆的 IP 檢查流程, 把被核准的連線的狀態資訊加入狀態表中 3. 最後, 交通通過 IP 檢查流程, 建立對應的動態 ACL 項目, 並且放入外部 ACL 之中, 以便讓回傳的交通能通過路由器 4. 讓回傳的交通能通過路由器
驗證代理者 (Authentication Proxy) 這一項必須開啟 Cisco IOS 防火牆的功能 驗證代理者能驗證進入的使用者、離開的使用者、或是兩者 通常會被 ACL 阻擋的那些人, 可以啟動瀏覽器來通過防火牆, 並且在 TACACS+ 或 RADIUS 伺服器上進行驗證
監視存取清單
show access-list 命令
show ip interface 命令
show mac access-group命令 可以使用 interface 命令來檢視個別界面:
使用 SDM 建立 ACL(一) SDM只能建立名稱式存取清單 開啟SDM 。接著點選『Configure / Firewall and ACL』
使用 SDM 建立 ACL(二) 接著點選 Edit firewall Policy / ACL 頁籤
使用 SDM 建立 ACL(三) 在畫面上方, 從下拉式選單中選擇 From 和 To 界面。這裡選擇 s0 / 0 / 0 做為 From 界面, 選擇 s0 / 2 / 0 做為 To 界面 接著在畫面中間點選 +Add, 它也會提供下拉式選單。選擇 Add New 則會出現下面的畫面
使用 SDM 建立 ACL(四) 拒絕來自 s0 / 0 / 0 界面、任何主機對 C 無線主機 (WHC) 的 telnet (23), 並且記錄比對成功的資訊 點選 OK 並且建立許可敘述, 以免相當於關閉了路由器的界面
使用 SDM 建立 ACL(五) 透過 SDM 來建立清單的好處之一, 是 +Add 選單會詢問您是否想要建立新的審核敘述, 並且加入現有內容的前面或後面。這可以讓您快速有效地編輯您的 ACL
使用 SDM 建立 ACL(六) 接著建立簡單的 permit ip any 敘述
使用 SDM 建立 ACL(七) 在點選 OK 之後, 又會回到主畫面, 並且看到剛才設定的清單
使用 SDM 建立 ACL -檢視 檢視路由器的運行組態:
使用 SDM 建立 ACL -測試 嘗試 telnet 到主機 10.1.12.2 telnet 到主機 10.1.12.1:
使用 SDM 來建立防火牆(一) 點選『Configure / Firewall and ACL』, 就會有精靈引導您建立防火牆規則 首先是 Create Firewall 畫面
使用 SDM 來建立防火牆(二) 基本防火牆 如果單純由主機構成的網路, 網路中不包含伺服器, 或是伺服器不需要與外界通訊, 則使用這個精靈 進階防火牆 當網路中包含主機和伺服器, 且伺服器必須存取外界主機的時候, 就要使用這個精靈。基本上, 任何網路只要包含網站、電子郵件、或是其他必須透過網際網路通訊的伺服器, 就要選擇 Advanced Firewall
使用 SDM 來建立防火牆(三) 選擇連接並建立基本防火牆, 然後點選 Launch the selected task 按鈕 以下畫面說明基本防火牆的組態設定精靈會做哪些事情
使用 SDM 來建立防火牆(四) 之後只要點選 Next, 就可以從下個畫面選擇我們的內部和外部位址 - 受信任和未受信任界面
使用 SDM 來建立防火牆(五) 一旦選好內部和外部界面之後, 點選 Next 就會有一堆存取清單的審核敘述被應用在路由器上
使用 SDM 來建立防火牆(六) 接著點選 Finish, 它會詢問我們是否要設定外部界面的遶送協定
使用 SDM 來建立防火牆(七) 點選 OK 。接著會出現「您已經成功在路由器上設定防火牆了」的畫面 在點選 OK 之後, 會得到下面的畫面
使用 SDM 來建立防火牆-檢視(一) 看看以上的設定在運行組態中加入了甚麼: 這些CBAC,也就是IOS防火牆 ip inspect命令會開啟基本應用的檢查動作, 以降低對個別應用的攻擊
使用 SDM 來建立防火牆-檢視(二)
使用 SDM 來建立防火牆-檢視(三) 基本防火牆的組態設定精靈會將您限制在兩個界面。以下是它所應用的界面: 這就是檢查流程所應用的地方
使用 SDM 來建立防火牆-檢視(四) SDM 所設定的其餘組態: ACL 100-102是內部界面的進入清單。這些 ACL 定義可以出去、以及可以通過防火牆的交通。它們會拒絕路由器認識的所有網路和回繞位址, 只剩下連結該界面的區域網路位址能夠當作來源位址而進入該界面
使用 SDM 來建立防火牆-檢視(五)
使用 SDM 來建立防火牆-檢視(六) 這是從外部進入的存取清單,所以拒絕了較多的東西
使用 SDM 來建立進階防火牆 回到 Firewall and ACL 的設定按鈕, 並且點選 Advanced firewall
進階防火牆精靈和基本防火牆精靈的差異 進階防火牆精靈會將存取規則應用在內部、外部、和 DMZ 界面, 但基本防火牆精靈只會將存取規則應用在內部和外部界面 進階防火牆精靈會將檢查規則應用在所有內部、外部、和 DMZ 界面上, 而基本精靈只會在外部界面上應用檢查規則
使用 SDM 來建立進階防火牆(續) 下個畫面可以選擇內部、外部、和 DMZ 界面 其餘部份就跟基本防火牆精靈的設定很類似…