13.07.2015 Views

PDF file - High Speed Network Lab @ NCTU

PDF file - High Speed Network Lab @ NCTU

PDF file - High Speed Network Lab @ NCTU

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

建 置 入 侵 偵 測 防 禦 系 統Ⅰ. 實 驗 目 的隨 著 網 路 越 來 越 風 行 , 網 路 安 全 的 議 題 也 日 益 受 到 重 視 。 尤 其 是 近 來 層 出 不 窮 的 駭 客 攻擊 , 如 DoS、 資 料 竊 取 、 網 站 破 壞 等 等 , 幾 乎 都 造 成 企 業 很 大 的 損 失 。 因 此 近 來 出 現 許 多 針對 這 方 面 作 防 護 的 IDS(Intrusion Detection System) 及 IPS(Intrusion Protection System) 等 系 統 。 和傳 統 的 防 火 牆 差 別 在 於 , 這 類 IDS/IPS 會 針 對 封 包 內 容 作 特 徵 分 析 及 異 常 比 對 。 本 實 驗 透 過Snort 軟 體 的 inline 模 式 , 掃 瞄 封 包 的 內 容 決 定 作 取 代 , 丟 棄 等 動 作 。 來 模 擬 IPS 的 特 徵 比對 及 防 護 。 在 進 行 實 驗 之 前 , 需 要 有 底 下 幾 項 的 預 備 知 識 :1.Linux 作 業 系 統 的 基 本 操 作 , 設 定 的 能 力 ;2. 瞭 解 網 路 封 包 的 架 構 ;3. 安 裝 及 設 定 Linux 上 的 網 路 伺 服 器 (Apache,Proftpd 等 )。Ⅱ. 實 驗 設 備名 稱 數 量 備 註個 人 電 腦 3 分 別 作 為 內 部 server,snort 防 火 牆 , 及 外 部 的 client網 路 卡 4 防 火 牆 需 要 兩 張 , 其 他 電 腦 各 一 張Gentoo Linux 1 可 免 費 從 網 路 下 載Windows XP 1iptables 1 各 distribution 都 有 收 錄snort 1 各 distribution 都 有 收 錄Ⅲ. 背 景 資 料面 對 各 類 的 網 路 駭 客 攻 擊 , 針 對 封 包 內 容 作 掃 瞄 的 防 火 牆 日 益 重 要 。 由 於 攻 擊 的 方 法 越來 越 多 , 防 火 牆 也 必 須 要 隨 之 演 進 , 才 能 保 護 網 路 的 安 全 。 像 IPS 就 逐 漸 地 引 起 注 意 。 因 為網 路 上 常 見 的 攻 擊 通 常 都 是 先 送 出 一 段 特 定 的 字 串 , 造 成 buffer overflow, 此 類 防 火 牆 通 常是 對 封 包 作 分 析 , 然 後 和 資 料 庫 收 集 的 特 徵 (signature), 也 就 是 用 來 攻 擊 的 字 串 比 對 , 決 定 是否 通 過 。 另 外 因 為 可 以 針 對 5~7 層 的 封 包 做 過 濾 , 像 是 HTTP worm 之 類 的 攻 擊 也 能 做 防 護 。目 前 市 面 上 有 許 多 硬 體 防 火 牆 有 此 類 功 能 , 像 是 Fortinet 的 FortiGate, 還 有 NetscreenIDP,McAfee i 系 列 等 。 而 除 了 硬 體 防 火 牆 之 外 , 也 有 Snort 這 套 軟 體 可 以 達 到 類 似 的 功 能 。Snort 可 以 在 UNIX-Like 的 作 業 系 統 ( 例 :Linux,FreeBSD) 及 Windows 上 運 作 , 並 且 可 以免 費 取 得 , 因 此 可 以 用 很 低 的 負 擔 就 可 以 有 一 個 基 本 的 IPS 防 火 牆 。Snort 作 者 是 Martin Roesch, 在 1998 年 寫 出 來 , 目 的 是 要 做 一 個 ” 輕 量 級 ” 的 IDS。 隨- 1 -


著 時 間 演 進 , 功 能 也 越 來 越 多 , 也 足 以 當 作 一 個 基 本 的 IPS 防 火 牆 。 在 snort 的 網 站http://www.snort.org 上 , 除 了 可 以 下 載 程 式 外 , 還 有 討 論 區 、 文 件 等 等 。 另 外 他 們 還 有 整 理好 防 範 攻 擊 的 rule, 不 過 此 服 務 需 要 付 費 才 能 即 時 取 得 , 免 費 的 下 載 需 要 等 到 5 天 後 才 能 下載 。 目 前 約 有 4000 條 rule。 另 外 也 可 以 使 用 自 己 上 傳 的 rule, 但 是 這 部 分 並 沒 有 驗 證 一 定可 以 阻 擋 。 其 rule 分 類 如 下 :通 訊 協 定 偵 測 攻 擊 其 他 ( 病 毒 , 內 容 過 濾 )chat.rulesdns.rulesfinger.rulesicmp.rulesicmp-info.rulesimap.rulesmultimedia.rulesmysql.rulesnetbios.rulesnntp.rulesoracle.rulesp2p.rulespop2.rulespop3.rulesrpc.rulesrservices.rulessmtp.rulessql.rulestelnet.rulestftp.rulesweb-*.rulesx11.rulesattack-responses.rulesbackdoor.rulesddos.rulesdos.rulesexploit.rulesscan.rulesshellcode.rulesweb-*.rulesbad-traffic.rulesexperimental.rulesinfo.ruleslocal.rulesmisc.rulesother-ids.rulespolicy.rulesporn.rulesvirus.rulesWeb-* 中 包 括 web-attacks.rules、web-cgi.rules、web-client.rules、web-coldfusion.rules、web-frontpage.rules、web-iis.rules、web-misc.rules、web-php.rules。Snort 軟 體 主 要 有 兩 個 功 能 , 一 個 是 sniffer 模 式 , 就 如 同 Ethereal、Sniffer 的 功 能 。 此模 式 在 封 包 通 過 網 路 介 面 時 ,copy 一 份 做 比 對 , 如 果 偵 測 到 符 合 rule, 就 會 做 log, 但 是 不能 做 封 鎖 之 類 的 後 續 防 護 。 運 作 過 程 如 圖 一 :圖 一 、 Snort sniffer mode。另 外 就 是 2.3.0 RC1 版 後 新 增 的 inline 模 式 。 主 要 的 不 同 在 於 不 會 另 外 複 製 一 份 , 而 直接 對 封 包 掃 瞄 ( 也 就 是 inline), 決 定 要 做 替 換 、 拒 絕 、 通 過 等 等 , 也 可 以 設 定 要 不 要 對 管 理 者- 2 -


警 告 , 此 模 式 一 開 始 是 從 Snort 的 原 始 碼 獨 立 發 展 的 專 案 (http://snort-inline.sourceforge.net/),之 後 才 整 合 到 原 本 的 程 式 中 。 這 種 從 原 本 的 程 式 分 出 來 獨 立 發 展 , 是 開 放 原 始 碼 社 群 常 見 的發 展 模 式 , 還 有 其 他 的 例 子 像 是 Xfree86 與 Xorg, 還 有 wine 和 winex 等 等 。 這 次 實 驗 主要 就 是 使 用 他 的 inline 模 式 。 運 作 過 程 如 下 圖 所 示 :圖 二 、Snort inline mode。Snort 的 inline 模 式 透 過 iptables 軟 體 來 運 作 。 先 由 iptables 送 到 由 ip_queue 模 組 維護 的 queue 中 , 而 Snort 再 從 其 中 讀 取 封 包 來 做 比 對 。 因 此 執 行 前 需 要 確 定 iptables 套 件以 及 ip_queue 模 組 可 以 正 常 工 作 。Ⅳ. 實 驗 方 法本 實 驗 首 先 要 先 使 用 Linux 電 腦 建 立 bridge, 做 為 內 部 server 及 外 部 client 之 間 的 防火 牆 。 整 個 網 路 架 構 如 圖 三 所 示 :圖 三 、 實 驗 環 境 。而 每 台 電 腦 的 用 途 如 下 :1.Server(Linux): 安 裝 被 client 模 擬 攻 擊 的 伺 服 器 , 以 及 觀 察 被 snort 過 濾 後 的 封 包 。- 3 -


2.firewall(Linux): 安 裝 Snort, 以 及 紀 錄 snort 的 log。3.client(Windows): 送 出 網 路 封 包 來 驗 證 snort 是 否 正 常 工 作 。實 驗 分 成 三 個 階 段 , 第 一 個 階 段 是 先 熟 悉 snort 的 設 定 語 法 , 以 及 操 作 。 第 二 階 段 就 是針 對 各 種 通 訊 協 定 (http,ftp,…) 的 封 包 作 分 析 , 比 對 。 最 後 是 就 是 實 際 拿 幾 種 攻 擊 做 練 習 。底 下 介 紹 Snort 一 些 基 本 的 使 用 :參 數 說 明-v 顯 示 詳 細 的 封 包 的 header-d 顯 示 應 用 層 封 包 內 容-e 連 結 層 的 資 訊 也 顯 示 出 來-l 設 定 log 存 到 那 個 檔 案-Q 從 iptables 取 得 封 包-i 指 定 要 listen 那 個 網 路 介 面-D 以 daemon 模 式 執 行-c 讀 取 指 定 的 設 定 檔而 inline 模 式 的 設 定 , 首 先 要 用 iptables 把 要 過 濾 的 封 包 送 到 queue 中 。#iptables -A FORWARD -p tcp --dport 80 -j QUEUE上 面 的 例 子 是 將 對 內 的 80 port 封 包 送 過 去 。然 後 就 是 啟 動 snort, 依 據 自 定 的 規 則 作 過 濾 。# snort –Q -i eth0 -l /var/log/snort -c /etc/snort/snort.conf設 定 檔 中 的 過 濾 條 件 大 都 是 像 這 樣 的 格 式 : ()1.Action設 定 值 說 明alert 使 用 rule 中 設 定 的 方 法 警 告 , 並 且 記 錄 下 來log 記 錄 下 來pass 略 過 封 包drop 告 訴 iptables 丟 棄 封 包sdrop 告 訴 iptables 丟 棄 封 包 , 並 且 不 做 紀 錄reject 告 訴 iptables 拒 絕 封 包active 如 同 alert, 然 後 啟 動 另 一 條 ruledynamic 如 同 log, 但 只 會 由 active 啟 動2.protocol: 目 前 支 援 tcp,udp,icmp,ip 四 種 。3.from_IP/dest_IP: 可 以 直 接 設 定 IP, 或 用 CIDR 設 定 一 段 網 域 。 也 可 以 用 中 括 號 設 定多 個 IP、CIDR, 中 間 用 逗 號 隔 開 。 在 前 面 前 上 ! 代 表 不 包 含 這 些 IP。4.from_port/dest_port: 指 定 一 個 port, 或 用 : 限 制 一 段 範 圍 。 如 果 冒 號 左 邊 / 右 邊 不 指定 代 表 無 下 限 / 上 限 。5.direction: -> 由 左 至 右 , 雙 向 。- 4 -


Rule 部 分 有 以 下 的 參 數 可 以 設 定 , 各 設 定 間 用 分 號 隔 開 。1.msg格 式 :msg: "";說 明 : 設 定 log 及 alert 動 作 時 顯 示 的 訊 息 。2.content格 式 :content: "";說 明 : 設 定 要 比 對 的 封 包 , 符 合 的 話 才 會 啟 動 rule。 內 部 可 以 使 用 ascii 或 十 六 進 位 。如 果 是 十 六 進 位 的 話 需 要 用 | 括 住 。 另 外 , 在 字 串 前 加 上 ! (!"") 則 是做 反 面 指 定 , 不 符 合 的 話 就 會 啟 動 rule。3.replace格 式 :replace: "";說 明 : 將 前 一 個 符 合 content 的 字 串 取 代 成 replace 指 定 的 內 容 。另 外 還 有 一 些 修 飾 的 參 數 , 一 樣 是 寫 在 rule 中 , 如 下 表 所 示 :參 數 / 格 式nocaserawdatadepth:;offset:;distance:;說 明不 管 大 小 寫看 封 包 原 始 內 容 , 沒 有 經 過 解 碼只 看 封 包 前 幾 個 byte從 第 幾 個 byte 開 始 看設 定 兩 個 content 間 間 格 多 少 byteex: content:”a”; content:”c”; distance:2代 表 只 要 a,c 間 間 格 2 bytes 就 符 合另 外 設 定 檔 中 的 字 串 都 可 以 設 定 成 變 數 , 像 是 IP 可 以 用 一 個 變 數 來 指 定 :var source_ip [140.113.87.0/24,192.168.0.0/16]log tcp $source_ip any -> any any (msg:”a simple test”;)Ⅴ. 實 驗 步 驟1. 設 定 bridge在 firewall 電 腦 上 編 輯 /etc/conf.d/net, 加 入 以 下 內 容 :brctl_br0=( "setfd 0" "sethello 0" "stp on" )bridge_br0="eth0 eth1"config_eth0=( "null" )config_eth1=( "null" )config_br0=( "null" )depend_br0() {- 5 -


}need net.eth0 net.eth1eth0 和 eth1 依 實 際 情 況 而 定然 後 確 定 /etc/init.d/ 有 net.eth0,net.eth1,net.br0 的 init script。 如 果 沒 有 的 話 從 net.lo0建 立 symbol link 到 這 些 檔 案 。 接 著 安 裝 net-misc/bridge-utils 管 理 bridge 的 套 件 。#emerge net-misc/bridge-utils啟 動 bridge, 以 ping 測 試 client 和 server 是 否 可 以 互 通#/etc/init.d/net.br0 start( 在 client 執 行 )#ping 192.168.0.1如 果 啟 動 時 出 現 這 樣 的 錯 誤 訊 息 :add bridge failed: Package not installed代 表 核 心 沒 有 編 譯 bridge 的 支 援 , 開 起 下 列 選 項 並 重 新 編 譯 核 心Device Drivers ---><strong>Network</strong>ing support ---><strong>Network</strong>ing options ---> 802.1d Ethernet Bridging2. 啟 動 iptables:首 先 安 裝 iptables 套 件#emerge iptables輸 入 以 下 的 指 令 , 讓 iptables 把 全 部 tcp 封 包 送 到 queue 中 。#iptables -A FORWARD -p tcp -j QUEUE如 果 啟 動 時 出 現 這 樣 的 錯 誤 訊 息 :FATAL: Module ip_tables not found.代 表 核 心 沒 有 編 譯 iptables 的 相 關 支 援 , 開 啟 核 心 中 下 列 的 選 項 :Device Drivers ---><strong>Network</strong>ing support ---><strong>Network</strong>ing options --->[] <strong>Network</strong> packet filtering (replaces ipchains) --->開 啟 此 項 及 他 底 下 的IP: Netfilter Configuration ---> IP tables support (required for filtering/masq/NAT)以 及 這 底 下 的 所 有 功 能 。注 意 此 時 因 為 所 有 封 包 都 送 到 queue 中 , 但 是 沒 有 相 對 應 的 程 式 處 理 , 所 以 伺 服 器 會 暫時 連 不 上 ( 封 包 都 卡 在 queue 中 )。- 6 -


3. 安 裝 SnortGentoo 安 裝 Snort 的 預 設 是 不 包 含 inline 模 式 。 如 果 要 啟 動 inline 模 式 , 在/etc/portage/package.use 加 入 :net-analyzer/snort inline然 後 安 裝 snort#emerge snort4. 設 定 Snort編 輯 /etc/snort/snort.conf 設 定 底 下 的 rule:log tcp any any 192.168.0.1 80 (msg:"HTTP conn";)5. 啟 動 Snort輸 入 底 下 指 令 啟 動 snortsnort -Q -i eth1 -l /var/log/snort -c /etc/snort/snort.conf起 動 時 Snort 會 顯 示 一 些 訊 息 , 包 括 目 前 執 行 的 模 式 (Inline or Sniffer)、 設 定 檔 的 位 置 、rule 數 目 、log 位 置 等 等 。 另 外 如 果 有 加 上 –v –d 等 顯 示 封 包 的 參 數 , 他 也 會 把 目 前 的 封 包即 時 的 顯 示 出 來 。 將 snort 啟 動 時 的 訊 息 節 錄 前 五 行 記 錄 下 來 【 記 錄 一 】。然 後 在 client 使 用 瀏 覽 器 連 接 http://192.168.0.1 。 在 實 驗 記 錄 中 記 錄 可 否 連 線 , 以 及Snort 的 log 訊 息 (log 可 在 –l 參 數 設 定 的 目 錄 中 觀 察 )【 記 錄 二 】。6. 過 濾 條 件 試 驗除 了 log 以 外 ,Snort 還 支 援 了 alert,pass,drop,reject,sdrop。 把 上 面 rule 的 log 改成 這 些 , 分 別 記 錄 下 結 果 ( 可 否 連 線 ,log 訊 息 , 其 他 狀 況 等 等 )。【 記 錄 三 】7. 內 容 過 濾對 IPS 系 統 來 說 , 最 重 要 的 就 是 比 對 封 包 , 確 定 是 不 是 要 做 攻 擊 。Snort 在 比 對 上 最 基本 的 就 是 content 參 數 , 以 及 其 他 修 飾 的 參 數 等 。首 先 先 設 定 rule:log tcp any any 192.168.0.1 80 (msg:"admin connection";content:”/admin/”; replace:”/Admin/”)然 後 在 Apache root 目 錄 下 建 立 一 個 Admin 目 錄 , 裡 面 任 意 放 置 index.htm。 使 用 瀏 覽器 開 啟 http://192.168.0.1/admin/, 觀 察 log。【 記 錄 四 】8. 對 FTP 過 濾Snort 有 內 建 對 封 包 的 解 碼 器 , 所 以 幾 乎 每 種 通 訊 協 定 都 可 以 直 接 對 他 的 內 容 比 對 ( 像http 就 可 以 比 對 GET,POST,PUT 等 指 令 )。 底 下 測 試 FTP 通 訊 協 定 的 過 濾 。首 先 在 server 先 安 裝 好 任 一 種 ftp 伺 服 器 (ProFTPD,PureFTP,Wu-ftp…), 啟 動 並 確- 7 -


認 可 以 正 常 運 作 。 接 下 來 設 定 rule 對 下 面 幾 種 虛 擬 的 情 況 過 濾 :1. 過 濾 含 有 病 毒 的 檔 案 virus.zip, 禁 止 使 用 者 上 下 傳 此 檔2. 防 止 使 用 者 上 傳 內 容 有 機 密 資 料 的 文 件 , 文 件 的 內 容 有 “Important”將 過 濾 的 rule 以 及 log 記 錄 下 來 。【 記 錄 五 】9. 實 際 攻 擊 試 驗1. Win2k IIS UNICODE 漏 洞這 個 是 早 期 蠻 有 名 的 IIS 漏 洞 。 一 般 伺 服 器 會 阻 擋 ../ 之 類 讀 取 http 根 目 錄 以 上 目 錄的 網 址 , 但 是 如 果 把 . 轉 成 Unicode 再 傳 過 去 ,IIS 並 不 會 阻 擋 , 因 此 可 以 看 光 整 台電 腦 的 檔 案 , 甚 至 使 用 cmd.exe 執 行 任 意 指 令 。 有 許 多 的 網 頁 置 換 就 是 透 過 這 個 漏 洞達 到 的 。 底 下 的 網 址 就 是 一 個 例 子 :http://www.thisisanesample.com/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir+c:\這 可 以 執 行 dir, 在 瀏 覽 器 把 c:\ 下 的 檔 案 列 出 。接 下 來 就 實 驗 以 Snort 阻 擋 此 類 攻 擊 。 設 定 好 rule 將 此 類 網 址 deny 或 是 reject, 並且 在 log 中 記 錄 下 來 。 把 你 設 定 的 rule 以 及 log 記 錄 下 來 。【 記 錄 六 】Ⅵ. 實 驗 記 錄【 記 錄 一 】啟 動 訊 息 :【 記 錄 二 】連 線 狀 況 :snort log:【 記 錄 三 】類 別alert連 線 狀 況pass- 8 -


droprejectsdrop【 記 錄 四 】log:【 記 錄 五 】snort rule:log:【 記 錄 六 】snort rule:log:Ⅶ. 問 題 與 討 論注 意 : 請 針 對 問 題 中 每 一 項 目 回 答 , 並 避 免 引 述 「 太 」 多 資 料 。1. rule 中 的 方 向 有 -> 及 兩 種 , 試 解 釋 為 何 沒 有


4. 設 定 rule 的 action 時 , 有 deny,reject 兩 種 拒 絕 的 方 法 , 說 明 這 兩 者 的 不 同 , 並 且 指出 他 們 TCP 連 線 中 的 不 同 處 。5. 承 上 題 , 兩 種 方 法 你 覺 得 在 建 立 防 火 牆 時 用 什 麼 比 較 好 , 為 什 麼 ?6. 如 果 你 要 入 侵 一 台 電 腦 , 但 那 台 電 腦 有 類 似 此 實 驗 的 防 火 牆 保 護 , 那 你 還 有 什 麼 方 法 可以 成 功 入 侵 ?7. 找 出 Snort 在 對 封 包 內 容 和 content 設 定 比 對 時 所 用 的 是 什 麼 字 串 比 對 演 算 法 , 並 分 析使 用 此 演 算 法 的 優 缺 點 , 是 否 還 有 更 好 的 方 法 ?8. 從 Snort 網 站 下 載 rule, 選 一 個 rule 來 分 析 他 阻 檔 的 封 包 形 式 。9. 說 明 Snort 的 HTTP decoder 對 封 包 做 哪 些 處 理 。10. 試 設 計 一 段 實 驗 測 試 rule 的 performance。Ⅷ. 參 考 文 獻[1]. “IDS 偵 測 網 路 攻 擊 方 法 之 改 進 ,” http://www.cert.org.tw/document/column/show.php?key=85 .[2]. “SnortUsers Manual 2.2.3,” http://www.snort.org/docs/snort_htmanuals/htmanual_233/ .[3]. “Bridging Howto,” http://bridge.sourceforge.net/howto.html .[4]. “Securing Debian Manual Appendix D - Setting up a bridge firewall,” http://www.linuxsecurity.com/docs/harden-doc/html/securing-debian-howto/ap-bridge-fw.en.html .[5]. “Gentoo Handbook,” http://www.gentoo.org/doc/en/handbook/ .- 10 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!