1. 程式人生 > 其它 >20212813 2021-2022-2 《網路攻防實踐》實踐五報告

20212813 2021-2022-2 《網路攻防實踐》實踐五報告

一、實踐內容

1、防火牆

防火牆技術是通過有機結合各類用於安全管理與篩選的軟體和硬體裝置,幫助計算機網路於其內、外網之間構建一道相對隔絕的保護屏障,以保護使用者資料與資訊保安性的一種技術。
防火牆可以在網路協議棧的各個層次上實施網路訪問控制機制,對網路流量和訪問進行檢查和控制。防火牆最基本的功能就是控制在計算機網路中不同信任程度網路域之間傳送的資料流,例如,公共網際網路是不可信任的區域,而內部網路是高度信任的區域,防火牆能夠陽斷安全策略中禁止的—些網路通訊,提供在不同信任水平的網路域之間實施網路安全訪問控制,根據最少特權原則保證網路安全性的功能機制。

2、Linux開源防火牆netfilter/iptables介紹

netfilter/iptables(簡稱為iptables)組成Linux平臺下的包過濾防火牆,與大多數的Linux軟體一樣,這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決方案,完成封包過濾、封包重定向和網路地址轉換(NAT)等功能。
對於iptables的詳細介紹可以參考這篇部落格,這裡列出本次實驗要使用的一些引數和命令:

引數選項 說明
-A 在指定鏈的末尾新增(append)一條新的規則
-L 列出(list)指定鏈中所有的規則進行檢視
-F 清空(flush)
-P 設定指定鏈的預設策略(policy)
引數選項 說明
ACCEPT 允許資料包通過
DROP 直接丟棄資料包,不給任何迴應資訊
REJECT 拒絕資料包通過,必要時會給資料傳送端一個響應的資訊

3、入侵檢測系統

  • 分類:HIDS(基於主機的入侵檢測系統)、NIDS(基於網路的入侵檢測系統)
  • 入侵防禦系統IPS/IDS:“即插即用”,無須使用者的干預。

開源網路入侵檢測系統Snort

Snort是一個基於libpcap的資料包嗅探並可以作為一個輕量級的網路入侵檢測系統(NIDS)。它具有實時資料流量分析和記錄IP網路資料包的能力,能夠進行協議分析,對網路資料包內容進行搜尋/匹配。它能夠檢測各種不同的攻擊方式,對攻擊進行實時報警。此外,Snort是開源的入侵檢測系統,並具有很好的擴充套件性和可移植性。

二、實踐過程

1.防火牆配置

任務要求:配置Linux作業系統平臺上的iptables,和Windows作業系統平臺上的個人防火牆,完成如下功能,並進行測試:
(1)過濾ICMP資料包,使得主機不接收Ping包;
(2)只允許特定IP地址(如區域網中的Linux攻擊機192.168.200.3),訪問主機的某一網路服務(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻擊機192. 168.200.4)無法訪問

Linux作業系統平臺

(1)過濾ICMP資料包,使得主機不接收Ping包

開啟Kali,首先使用sudo iptables -L命令檢視鏈中所有的規則,可以看到預設規則:

此時測試Kali(IP:192.168.13.8)與同一區域網下的WinXPAttacker(IP:192.168.13.4)的連通性為正常:

使用sudo iptables -A INPUT -p icmp -j DROP命令新增一條入站規則,即丟棄ICMP資料包,新增完後使用sudo iptables -L命令檢視新增的規則:

此時再測試與WinXPAttacker的連通性可以發現,沒有收到迴應,資料包全部丟失:

在此過程中使用Wireshark抓取資料包可以發現,Kali確實向WinXPAttacker傳送了ICMP資料包,但是被防火牆攔下:

(2)只允許特定IP地址,訪問主機的某一網路服務(如FTP、HTTP、SMB),而其他的IP地址無法訪問

為了進行測試,首先開啟Kali上的FTP服務(21號埠)和telnet服務(23號埠):

然後在WinXPAttacker上分別對這兩個服務進行測試,測試正常(省略了SEEDUbuntu這兩個服務的測試):


首先使用使用sudo iptables -P INPUT DROP命令,丟棄所有與INPUT鏈中任何規則都不匹配的資料包,然後使用sudo iptables -A INPUT -p tcp -s 192.168.13.4 --dport 23 -j ACCEPT命令新增一條入站規則,即只接受來自IP地址為192.168.13.4的訪問23號埠的TCP包:

之後在WinXPAttacker上再對這兩個服務進行測試,發現Telnet服務正常,但是FTP服務連線失敗:


使用Wireshark捕獲資料包能夠看到,WinXPAttacker發起了對21號埠的連線請求,但是連線失敗:

然後在SEEDUbuntu上對Kali分別進行了ping、Telnet和FTP的測試,均以失敗告終,捕獲的資料包能夠證明連線過程的存在性,但是沒有成功:



Windows作業系統平臺

(1)過濾ICMP資料包,使得主機不接收Ping包

開啟控制面板->系統和安全->防火牆->高階設定->入站規則->新建規則->自定義:

設定將阻止ICMP資料包:

配置結果如下:

之後在Kali(設定為了橋接模式)上對Win10本機進行ping命令測試,發現不能ping通,但是使用Wireshark能夠捕獲到ICMP資料包:

(2)只允許特定IP地址,訪問主機的某一網路服務(如FTP、HTTP、SMB),而其他的IP地址無法訪問

這個實驗在WinXPAttacker上實現
開啟控制面板->管理工具->本地安全策略,右鍵選擇“IP安全策略”,建立IP安全策略

具體步驟參考這篇部落格,步驟太多,不在這裡展示了,這裡設定的兩個規則,一個是禁止所有源IP到本地IP的ICMP資料包(沒有給WinXP配置相關服務,所以就用ICMP來演示),一個是隻允許指定IP(Kali)的主機發送ICMP資料包:

配置好之後,分別使用Kali和SEEDUbuntu對WinXP進行ping測試,結果能夠發現Kali能夠ping通而SEEDUbuntu不能ping通:

2.動手實踐:Snort

使用Snort對給定pcap檔案(第4章中的解碼網路掃描任一個pcap檔案,之前的實踐已經提供了,請在雲班課中下載)進行入侵檢測,並對檢測出的攻擊進行說明。在BT4 Linux攻擊機或Windows Attacker攻擊機上使用Snort,對給定的pcap檔案進行入侵檢測,獲得報警日誌。
Snort執行命令提示如下:

①從離線的pcap檔案讀取網路日誌資料來源
②在snort.conf中配置明文輸出報警日誌檔案
③指定報警日誌log目錄(或預設log目錄=/var/log/snort)

使用snort -c /etc/snort/snort.conf -r /listen.pcap -K ascii命令,從離線的pcap檔案讀取網路日誌資料來源:

可以看到TCP資料包占大多數:

snort會在預設目錄 /var/log/snort 生成一個日誌檔案,進入/var/log/snort資料夾中,使用vim alert可以看到本次攻擊是用nmap發起的,其中攻擊機IP地址是 172.31.4.178,靶機IP地址是 172.31.4.188 ,還可以看到埠號等資訊:

3.分析配置規則

分析虛擬網路攻防環境中蜜網閘道器的防火牆和IDS/IPS配置規則,說明蜜網閘道器是如何利用防火牆和入侵檢測技術完成其攻擊資料捕獲和控制需求的。

資料控制

使用命令vim /etc/init.d/rc.firewall可以看到roo在開機啟動的過程中iptables的初始化操作:

程式碼比較長,參考一些之前的資料,先找一下start函式(vim下可以使用/start進行查詢定位),在start函式中

  • 首先是create_chains函式,定義了下述程式中使用的規則。BlackList、WhiteList、FenceList和xxxHandler。它們分別用來儲存源地址和目的地址黑名單,源地址和目的地址的白名單,源地址和目的地址的防護名單,以及供下述policy使用的各種協議對應的Handler鏈。

  • 接下來通過default_policy、localhost_policy和management_policy建立了不同情況下的三種代理轉發模式。

  • 接下來進入start程式的正文,通過讀取預定義的白名單HwFWWHITE、黑名單HwFWBLACK和防護名單HwFWFENCE,新增相關的規則。

  • 最後通過讀取類似HwHPOT_PRIV_IP_FOR_NAT和HwHPOT_PUBLIC_IP等檔案來匯入其他的定義引數。

iptables規則表

使用iptables -L進行檢視(命令列往上翻頁可以使用Shift + PgUp(不管用的話再加一個Fn鍵)):

  • 首先可以看到,與我們作業的方法類似,程式先將已有的表設為policy DROP,後再設定允許通過的相關條件:
  • 再檔案的後半部分我們可以看到上文提到的xxxHandler,這也驗證了上述分析的正確性:

snort實際執行引數

通過命令vim /etc/init.d/snortd檢視相關的執行引數,可以分別看到一些引數的選項,包括實際執行時候的引數。學習一些snort的指令後進行分析,譬如在指定網絡卡介面後,如果沒有其他的引數,將按照預設引數執行。如預設不開啟-A模式,使用預設目錄的config檔案,預設使用eth0、使用二進位制模式儲存log檔案等:

vim /etc/init.d/hw-snort_inline可以看到Snort_inline執行時引數,-D表示Daemon模式,-c表示讀取config檔案,-Q表示使用QUEUE模式,-l表示輸出log檔案的目錄,-t表示改變程式執行時所參考的根目錄位置:

防火牆、NIDS、NIPS啟動

執行命令chkconfig --list|grep [服務]檢視服務情況,如果從0~6全是off,那就不自動啟動。可以看到防火牆和NIPS(snort_inline)是自動啟動的,NIDS要手動啟動:

snort規則的升級方式

使用命令vim /etc/honeywall.conf開啟配置檔案,找到update variables,可以看到其值為no,不自動更新:

三、學習中遇到的問題及解決

  • 問題1:在進行Windows環境下配置防火牆只允許特定IP地址,訪問主機的某一網路服務(如FTP、HTTP、SMB),而其他的IP地址無法訪問的時候,原本使用的是Win10,但是僅僅配置防火牆規則似乎不太能其作用
  • 問題1解決方案:通過找資料,發現需要配置IP安全策略,Win10下也沒有找到配置的地方,所以用WinXP完成了這個實驗,但是沒有配置例如FTP、Telnet服務以更好的進行實驗,只使用了ICMP來進行實驗,但是學習到了應該怎麼進行相關的配置。

四、實踐總結

本次實踐主要學習防火牆、IDS、IPS的執行機制、原理以及配置規則等內容,通過動手實踐防火牆配置以及分析蜜網閘道器的防火牆和IDS/IPS配置規則,對於其原理和實現細節有了初步的瞭解。

參考資料