20212808 2021-2022-2 《網路攻防實踐》實踐五報告
20212808 2021-2022-2 《網路攻防實踐》實踐五報告
1.知識點梳理與總結
1.1 實驗內容
一、防火牆配置
任務要求:配置Linux作業系統平臺上的iptables,或者Windows作業系統平臺上的個人防火牆,完成如下功能,並進行測試:
(1)過濾ICMP資料包,使得主機不接收Ping包;
(2)只允許特定IP地址(如區域網中的Linux攻擊機192.168.200.3),訪問主機的某一網路服務(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻擊機192. 168.200.4)無法訪問
二、動手實踐:Snort
使用Snort對給定pcap檔案(第4章中的解碼網路掃描任一個pcap檔案,之前的實踐已經提供了,請在雲班課中下載)進行入侵檢測,並對檢測出的攻擊進行說明。在BT4 Linux攻擊機或Windows Attacker攻擊機上使用Snort,對給定的pcap檔案進行入侵檢測,獲得報警日誌。
Snort執行命令提示如下:
①從離線的pcap檔案讀取網路日誌資料來源
②在snort.conf中配置明文輸出報警日誌檔案
③指定報警日誌log目錄(或預設log目錄=/var/log/snort)
三、分析配置規則
分析虛擬網路攻防環境中蜜網閘道器的防火牆和IDS/IPS配置規則,說明蜜網閘道器是如何利用防火牆和入侵檢測技術完成其攻擊資料捕獲和控制需求的。
1.2 實驗原理:
1. 安全模型
- 靜態安全模型:對網路進行風險分析,制定相應的安全策略,然後採取安全技術作為防護措施,主要針對固定、靜態的威脅和環境弱點。
- PDR安全模型:基於閉環控制理論的時間動態可適應網路安全模型,以經典的網路安全不等式P>D+R(保護、檢測、響應)為本質基礎,並提出安全性可量化和可計算的觀點。
- P2DR安全模型:基於PDR安全模型提出,增加了Policy分析制定安全策略,並以此為核心,所有的防護、檢測、響應都是依據安全策略實施的。
2. 防火牆技術及產品
- 定義:防火牆指的是置於不同的網路安全域之間,對網路流量或訪問行為實施訪問控制的安全元件或裝置,達到保護特定網路安全域免受非法訪問和破壞的安全目標。
- 功能:
檢查控制進出網路的流量。
防止脆弱或不安全的協議和服務。
防止內部網路資訊的外洩。
對網路存取和訪問進行監控審計。
強化網路安全策略並整合其他安全防禦機制。 - 技術:
包過濾技術:在路由功能基礎上進行擴充套件,通過對網路層和傳輸層包頭資訊的檢查,根據使用者定義的安全策略規則集,確定是否應該轉發該資料包(簡單、安全功能有限)。
基於狀態檢測的包過濾技術:也稱動態包過濾。除了使用靜態規則進行安全進行安全策略匹配,還進行資料包的網路連線的上下文關係探測,來確定是否允許通訊。這種技術相比較傳統的包過濾技術安全性更高,資料合法性得到了更有效的保障(對網路效能有一定的影響)。
代理技術:允許客戶端通過代理與網路服務進行非直接的連線,也稱“網路代理”。主要是客戶端與代理伺服器連線,代理伺服器再與目標伺服器連線。代理技術包括應用層代理(工作在應用層)、電路級代理(工作在傳輸層)和NAT代理(工作在網路層)等。 - 部署方法:
包過濾路由器:帶有包過濾防火牆功能的路由器。
雙宿主堡壘主機:應用代理閘道器作為雙宿主堡壘主機。
遮蔽主機:堡壘主機和包過濾的結合。
遮蔽子網:在遮蔽主機的基礎上增加第二道包過濾路由器。
3. Linux開源防火牆netfilter/iptables介紹
- 工作原理:在nefilter/iptables防火牆系統中,netfilter 元件位於Linux的核心空間中,實現了靜態包過濾和狀態報文檢查(即動態包過濾)基本防火牆功能,此外也支援一個靈活可擴充套件的框架,支援NAT網路地址轉換等其他額外功能,並提供了多層API介面以支援第三方擴充套件,nefilter具備構建防火牆、NAT共享上網、利用NAT構建透明代理,以及構建QoS或策略路由器等安全功能。Iptables 則是工作在Linux使用者空間中的防火牆配置工具,通過命令列方式允許使用者為netfilter配置各種防火牆過濾和管理規則。nefilter/iptables 中包含三個最基本的規則表,分別為用於包過濾處理的filter表、用於
網路地址轉換處理的nat表,以及用於特殊目的資料包修改的mangle表。 - iptables的指令
制定iptables表 iptables [-t 表名] 管理選項 [鏈名] [條件匹配] [-j 目標動作或轉發] 思路:選表->選鏈->選條件->選動作
規則啟動 systemctl enable iptables.service systemctl start iptables.service
儲存和載入規則 iptables-save > /etc/sysconfig/iptables systemctl reload iptables
檢視規則 iptables -nvL [--line-numbers] [-t 表名] [鏈名]
新增規則 iptables -A INPUT -s 192.168.1.5 -j DROP
修改規則 iptables -R INPUT 2 -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT
4. 網路檢測技術與系統
入侵檢測技術:對入侵行為進行檢測與發現,它是防火牆之後的第二道安全屏障。分為誤用檢測和異常檢測。入侵檢測系統可分為基於主機的入侵檢測系統(HIDS)和基於網路的入侵檢測系統(NIDS),這兩者可以互相補充成為分散式入侵檢測系統(DIDS)。
評估指標:檢測率(系統捕獲到的攻擊行為與全部攻擊行為比值)和誤報率(對正常行為的誤報數與全部報警數的比值)。
技術型別:特徵檢測(匹配特徵庫)、異常檢測(檢測與正常使用者在統計方面的差別)。二者通常結合使用,提高入侵檢測系統的整體檢測效能。同時,基於這兩種技術,也可以對入侵檢測系統進行分類。
入侵防禦系統:也叫內嵌式入侵檢測,即對檢測到的異常行為或者與特徵庫匹配的行為直接進行阻斷,斷開訪問。
5. 開源網路入侵檢測系統Snort
Snort是一個強大的網路入侵檢測系統。它具有實時資料流量分析和記錄IP網路資料包的能力,能夠進行協議分析,對網路資料包內容進行搜尋/匹配,可以檢測各種不同的攻擊方式,對攻擊進行實時報警等。
四個主要部件
資料包嗅探:將網絡卡設定為混雜模式,用libpacp函式來進行資料包監聽和抓包。
前處理器:用於彌補檢測引擎檢測能力的不足。主要有TCP/IP協議棧模擬、應用層協議解碼、異常檢測。
檢測引擎:是主題模組,主要包括規則庫解析、多模式匹配、規則外掛。
輸出模組:進行各種多樣化的報警和日誌記錄。
主要功能:
嗅探模式(從網路上讀取資料包,常用命令snort -dev)
資料包記錄模式(把資料包記錄到硬碟上,常用命令snort -b)
網路入侵檢測模式(載入規則庫才能工作,Snort並不記錄所有捕獲的包,而是將包與規則對比,僅當包與某個規則匹配的時候,才會記錄日誌或產生報警)
2.實踐過程
2.1 防火牆配置
- 實踐任務:配置Linux作業系統平臺上的iptables,或者Windows作業系統平臺上的個人防火牆,完成如下功能,並進行測試:
(1)過濾ICMP資料包,使得主機不接收Ping包;
(2)只允許特定IP地址(如區域網中的Linux攻擊機192.168.200.3),訪問主機的某一網路服務(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻擊機192.168.200.4)無法訪問。
過濾ICMP資料包
- 檢視下IP地址
kali 192.168.200.2
windowsXP Attacker 192.168.200.3
SEEDUbuntu 192.168.200.4 - 在SEED上ping kali,ping 192.168.200.2
- 在正常狀態下可以ping通,在kali上通過
iptables -L
檢視預設規則
- 執行iptables -A INPUT -p icmp -j DROP指令使主機不接受icmp的資料包
再次通過iptables -L檢視規則,發現多了一條icmp針對任何位置不允許訪問的規則,即在INPUT鏈中新增將所以有ping連線產生的icmp資料包丟失的規則
再次通過SEED ping kali,發現ping不通了
- 執行iptables -D INPUT -p icmp -j DROP指令除去剛才的過濾規則,再次嘗試ping連線發現恢復
只允許特定IP訪問主機網路服務(只允許Kali訪問SEED Ubuntu的telnet服務) - 首先,我們確定兩臺機器都可以進行telnet登陸。
- 接下來使用iptables -P INPUT DROP指令拒絕一切的資料包流入(修改的是預設規則-P),此時應該兩臺電腦都無法進行訪問。
- 使用指令
iptables -A INPUT -p tcp -s 192.168.200.2 -j ACCEPT
開啟192.168.200.2對本機的tcp服務。並用iptables -L檢視規則
- 此時我們發現Kali是可以正常訪問telnet服務的,但是winXP卻是無法訪問的。
- 最後別忘了執行
iptables -F
和iptables -P INPUT ACCEPT
兩條指令恢復之前的狀態。
2.2 Snort
- 使用之前實驗的listen.pcap,利用指令
snort -r /home/lxh/down/listen.pcap -c /etc/snort/snort.conf -K ascii
對listen.pacp進行入侵檢測
- 檢視輸出裡檢測出的資料包,可以看到大部分資料流為tcp會話,少部分為ARP包報警資料包有10條,均被日誌記錄,所有資料包都裁決允許:
資料流統計:
- 此時snort會在預設目錄生成一個日誌檔案,進入報警日誌目錄cd /var/log/snort, 檢視日誌檔案,記錄了報警資料10條的入侵檢測資訊,可以發現本次攻擊是使用nmap發起的。攻擊主機的IP地址是172.31.4.178,網路掃描的目標IP地址是172.31.4.188
2.3 分析配置規則
- 檢視防火牆的檔案
vim /etc/init.d/rc.firewall
建立了黑名單和白名單的規則鏈,還建立了很多協議資料包的處理規則鏈
- 獲取IPTables的實際規則列表、Snort 和Snort_ inline的實際執行引數
通過iptables -t filter -L | less
來檢視規則列表
查詢snort檔案vim /etc/rc.d/init.d/snortd
預設使用預設目錄下的snort.conf規則,預設監聽網絡卡為eth0,預設儲存日誌路徑為/var/log/snort
執行命令vim /etc/init.d/hw-snort_inline開啟snort_inline的指令碼檔案,可以看到到實際執行的引數
蜜網閘道器開機之後,防火牆、NIDS、NIPS是如何啟動的
chkconfig命令主要用於檢查,設定系統的各種服務。使用chkconfig -list命令來對linux上執行的服務進行查詢。
根據chkconfig --list | grep [服務]可以查詢到開啟服務的情況,其中1表示單使用者模式,2表示無網路連線的多使用者命令列模式,3表示有網路連線的多使用者命令列模式,4表示不可用,5表示帶圖形介面的多使用者模式,6表示重新啟動。
使用vim /etc/oinkmaster.conf開啟該檔案,發現了snort.conf檔案,可以推斷這裡使用工具Oinkmaster進行了snort的自動升級
3.學習中遇到的問題及解決
- 問題1:在Ubuntu裡iptables -L命令出現 could not insert 'ip_tables'錯誤
- 問題1解決方案:加許可權,啟動iptables
modprobe ip_tables
4.實踐總結
整體不難,分析內容較難,不夠清晰,還是多學習多實踐。