# 20212924 2021-2022-2 《網路攻防實踐》實踐第七週(5次)報告
1.實踐內容
- 網路安全防範技術包括安全模型、網路安全防範技術與系統、網路檢測技術與系統、網路安全事件響應技術四方面的內容。
iptables簡介
-
netfilter/iptables(簡稱為iptables)組成Linux平臺下的包過濾防火牆,與大多數的Linux軟體一樣,這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決方案,完成封包過濾、封包重定向和網路地址轉換(NAT)等功能。
-
iptables傳輸資料包的過程
① 當一個數據包進入網絡卡時,它首先進入PREROUTING鏈,核心根據資料包目的IP判斷是否需要轉送出去。
② 如果資料包就是進入本機的,它就會沿著圖向下移動,到達INPUT鏈。資料包到了INPUT鏈後,任何程序都會收到它。本機上執行的程式可以傳送資料包,這些資料包會經過OUTPUT鏈,然後到達POSTROUTING鏈輸出。
③ 如果資料包是要轉發出去的,且核心允許轉發,資料包就會如圖所示向右移動,經過FORWARD鏈,然後到達POSTROUTING鏈輸出。 -
iptables命令的管理控制選項
命令 | 作用 |
---|---|
-A | 在指定鏈的末尾新增(append)一條新的規則 |
-D | 刪除(delete)指定鏈中的某一條規則,可以按規則序號和內容刪除 |
-I | 在指定鏈中插入(insert)一條新的規則,預設在第一行新增 |
-R | 修改、替換(replace)指定鏈中的某一條規則,可以按規則序號和內容替換 |
-L | 列出(list)指定鏈中所有的規則進行檢視 |
-E | 重新命名使用者定義的鏈,不改變鏈本身 |
-F | 清空(flush) |
-N | 新建(new-chain)一條使用者自己定義的規則鏈 |
-X | 刪除指定表中使用者自定義的規則鏈(delete-chain) |
-P | 設定指定鏈的預設策略(policy) |
-Z | 將所有表的所有鏈的位元組和資料包計數器清零 |
-n | 使用數字形式(numeric)顯示輸出結果 |
-v | 檢視規則表詳細資訊(verbose)的資訊 |
-V | 檢視版本(version) |
-h | 獲取幫助(help) |
- 防火牆處理資料包的四種方式
方式 | 作用 |
---|---|
ACCEPT | 允許資料包通過 |
DROP | 直接丟棄資料包,不給任何迴應資訊 |
REJECT | 拒絕資料包通過,必要時會給資料傳送端一個響應的資訊 |
LOG在/var/log/messages | 檔案中記錄日誌資訊,然後將資料包傳遞給下一條規則 |
2.實踐過程
任務一
-
一.任務要求:配置Linux作業系統平臺上的iptables和Windows作業系統平臺上的個人防火牆,完成如下功能,並進行測試:
(1)過濾ICMP資料包,使得主機不接收Ping包;
(2)只允許特定IP地址(如區域網中的Linux攻擊機192.168.200.3),訪問主機的某一網路服務(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻擊機192. 168.200.4)無法訪問。 -
實驗準備:準備三臺實驗用虛擬機器,分別是A:kali,B:SEEDUbuntu,C:Metasploitable—ubuntu。
虛擬機器 IP A:kali 192.168.200.6 B:SEEDUbuntu 192.168.200.5 C:Meta-ubuntu 192.168.200.123 -
過濾ICMP資料包操作過程:
-
- 在A上pingB,此時是可以ping通的。使用
iptables -L
檢視所有規則時,顯示需要root 許可權,使用sudo su
獲取管理員許可權,輸入密碼獲得root許可權後,再次輸入iptables -L
(有條icmp針對任何位置不允許訪問的規則,是因為前面用過一次iptables -L
後,沒有采用iptables -F
刪除自定義規則。),然後使用iptables -A INPUT -p icmp -j DROP
(-A為追加一條規則,INPUT為資料包入口規則,-p為匹配協議,-j為指定處理)使得主機不接收icmp資料包。
- 在A上pingB,此時是可以ping通的。使用
-
- 此時在A上pingB,此時是ping不通的。
-
- B中使用iptables -L檢視規則,可以發現多了一條icmp針對任何位置不允許訪問的規則。
-
- 在B中使用
iptables -F
刪除自定義規則後,用A去pingB是可以ping通的。
- 在B中使用
-
- 允許特定IP地址訪問主機的操作過程:
-
- 分別在A和C上使用
telnet 192.168.200.5
進行虛擬機器B的賬號密碼登入。
- 分別在A和C上使用
-
- 在B上使用
iptables -P INPUT DROP
拒絕一切資料包流入,這時A和C上均無法鍵入指令。
- 在B上使用
-
- 使用指令
iptables -A INPUT -p tcp -s 192.168.200.6 -j ACCEPT
開啟A:192.168.200.6對本機TCP服務,並用iptables -L
檢視規則。這時我們發現A應該是可以正常訪問telnet服務的,但是C仍無法訪問。
- 使用指令
-
- 在B中使用
iptables -F
和iptables -P INPUT ACCEPT
進行狀態恢復。
- 在B中使用
-
-
二.任務要求:配置Windows作業系統平臺上的個人防火牆,完成如下功能,並進行測試:
(1)過濾ICMP資料包,使得主機不接收Ping包;
(2)只允許特定IP地址(如區域網中的Linux攻擊機192.168.200.3),訪問主機的某一網路服務(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻擊機192. 168.200.4)無法訪問。 -
實驗準備:準備三臺實驗用虛擬機器,分別是A:kali,B:WinxP
虛擬機器 IP A:kali 192.168.200.6 B:Winxp 192.168.200.4 -
過濾ICMP資料包操作過程:
- 1.開啟防火牆,設定ICMP:開啟操作面板→windows防火牆→高階→ICMP的設定,把
允許傳入回顯請求
對號去掉,kali就ping不通了。 - 注意:直接勾選時無法顯示時,選擇還原為預設值後,就可以進行勾選了。
- 1.開啟防火牆,設定ICMP:開啟操作面板→windows防火牆→高階→ICMP的設定,把
- 允許特定IP地址訪問主機的操作過程:
-
- 在A上使用
telnet 192.168.200.2
進行虛擬機器B的賬號密碼登入。
- 在A上使用
-
- 開啟控制面板→管理工具→本地安全策略,右鍵IP安全策略選擇建立IP安全策略,設定IP安全策略名稱為限制固定IP遠端訪問,在警告提示框選擇“是”,其它均保持預設。
-
- 為新新增IP安全規則新增安全規則屬性(和第一個新增規則步驟是相同的),警告選“是”。
-
- ip篩選列表選擇新增,輸入篩選名稱阻止所有IP遠端訪問,再點選新增。
-
- 先設定禁止所有IP訪問——源地址:任何IP地址——目標地址:我的IP地址——協議:TCP——到此埠輸入:23(23為telnet埠),其它均可保持預設。
-
- 在點確定後——選擇配置的“阻止所有IP遠端訪問”,下一步——新增——選擇“阻止”——最後確定。
-
- 回到限制固定IP遠端訪問頁面,右鍵,選擇指派,之後telent就不通了。
-
- 同樣的操作,在阻止所有IP遠端訪問的安全策略中,新添一個IP篩選器列表,把源地址改為一個特定的IP地址,然後輸入kali的IP地址192.168.200.6,重新指派一下,kali就能ping通了。
-
任務二
- 任務要求:動手實踐:Snort
- 使用Snort對給定pcap檔案(第4章中的解碼網路掃描任一個pcap檔案,之前的實踐已經提供了,請在雲班課中下載)進行入侵檢測,並對檢測出的攻擊進行說明。在BT4 Linux攻擊機或Windows Attacker攻擊機上使用Snort,對給定的pcap檔案進行入侵檢測,獲得報警日誌。
- Snort執行命令提示如下:
①從離線的pcap檔案讀取網路日誌資料來源
②在snort.conf中配置明文輸出報警日誌檔案
③指定報警日誌log目錄(或預設log目錄=/var/log/snort)
- 操作過程:
-
- 在A上使用
snort -r /home/kali/listen.pcap -c /etc/snort/snort.conf -K ascii
對listen.pacp進行入侵檢測。其中,指令中-K ascii
主要是為了指定輸出log檔案的編碼為ASCII(預設為binary)。檢視輸出,我們可以看到檢測出的資料包大部分為TCP資料包。
- 在A上使用
-
- 通過
vim /var/log/snort/alert
開啟輸出的日誌檔案,但此時顯示不存在這個檔案,通過顯示所有的檔案,採用cat /log/snort/alert.fast
,發現該檔案就是報警日誌檔案,下次可以直接採用vim /var/log/snort/alert.fast
開啟輸出的日誌檔案,可以發現這個攻擊是nmap發起的,當然還有很多其他的資訊:源地址、目的地址等。Snort的日誌一般位於:/var/log/snort/目錄下,可以通過修改配置檔案來設定Snort的報警形式。
- 通過
-
任務三
- 任務要求:分析虛擬網路攻防環境中蜜網閘道器的防火牆和IDS/IPS配置規則,說明蜜網閘道器是如何利用防火牆和入侵檢測技術完成其攻擊資料捕獲和控制需求的。
- 實驗準備:虛擬機器密網
- 操作過程
- 1.資料控制一般包括防火牆對資料的控制和IPS對異常資料的限制(
snort_inline
),首先使用su -
進行提權,然後使用vim /etc/init.d/rc.firewall
檢視三鏈:黑名單、白名單和防護名單(FenceList)。 - 2.IPTables的實際規則列表:資料捕獲主要包括防火牆日誌記錄和snort網路流記錄。通過
iptables -t filter -L
來檢視規則列表。不難發現,預設的規則OUTPUT、INPUT、FORWARD都已經被關閉了,取而代之的是一些自定義的規則。
- 1.資料控制一般包括防火牆對資料的控制和IPS對異常資料的限制(
- 3.Snort實際執行引數:通過
vim /etc/init.d/snort
開啟Snort指令碼檔案。在指定網絡卡介面後,如果沒有其他引數,將按照預設引數執行。比如預設不開啟-A
模式,預設使用/etc/snort/snort.conf
(預設目錄config檔案)、eth0、二進位制模式儲存log檔案等。
-
- Snort_inline實際執行引數:通過
vim /etc/init.d/hw-snort_inline
開啟Snort_inline指令碼檔案,可以觀察到實際執行的引數,以及在最前面定義的引數。
- Snort_inline實際執行引數:通過
- 5.通過指令
chkconfig --list | grep[服務]
來查詢當前服務是不是開啟的。chkconfig
命令主要用於檢查設定系統的各種服務。我們發現防火牆和NIPS(snort_inline)是跟隨系統啟動的,並且開機自動配置剛才的指令碼檔案。NIDS是需要手動啟動的。
- 6.使用
vim /etc/honeywall.conf
開啟honeywall配置檔案,這個裡面可以看到很多東西:之前安裝roo時配置的IP地址、白名單黑名單的位置、snort規則更新的地方等。我們可以看到Oinkmaster字樣,通過查詢,這個果然是個自動更新的軟體。通過觀察,我們發現自動更新是預設關閉的。
3.學習中遇到的問題及解決
- 問題1:通過
vim /var/log/snort/alert
開啟輸出的日誌檔案時,顯示不存在該檔案。 - 問題1解決方案: 通過
ls -R
列出檔名,用cat /log/snort/alert.fast
開啟日誌檔案。 - 問題2:kali無法通過telnet IP(WinXp)進行登陸。
-
問題2解決方案:
- 開始--執行--輸入services.msc,進入服務管理器介面。
- 在“服務管理器”介面中找到Telnet 項,雙擊進入telenet屬性介面,在常規選項卡中將啟動型別改為自動或手動,再確定。
- 再次進入telenet屬性介面,將服務狀態啟用,應用退出 。
- 然後開始--執行--輸入cmd,進入dos介面,在彈出介面中輸入"net start telnet"回車,當螢幕顯示"Telnet服務正在啟動...Telnet 服務已經啟動成功。"後,說明Telnet服務已經在你本機啟動了。
4.實踐總結
- 通過對防火牆的配置,瞭解了iptables的操作命令,學會了給window電腦配置防火牆,增強了安全保護意識;
- 通過對snort的使用,學會了對檔案的入侵檢測,在snort.conf中配置明文輸出報警日誌檔案。
- 通過觀察配置檔案,瞭解到虛擬網路攻防環境中蜜網閘道器的防火牆和IDS/IPS配置規則。