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

20212818 2021-2022-2 《網路攻防實踐》實踐五

一、實踐內容

(一)、安全模型

1、傳統安全評估和防範方法

  對網路進行風險分析,制定相應的安全策略,然後採取安全技術作為防護措施,主要針對固定、靜態的威脅和環境弱點。
2、動態可適應網路安全模型

  PDR安全模型:基於閉環控制理論的時間動態可適應網路安全模型,以經典的網路安全不等式P>D+R(保護、檢測、響應)為本質基礎,並提出安全性可量化和可計算的觀點。

  P^2 DR安全模型:基於PDR安全模型提出,增加了Policy分析制定安全策略,並以此為核心,所有的防護、檢測、響應都是依據安全策略實施的。

(二)、網路安全防範技術與系統

防火牆技術

  防火牆定義:防火牆是目前最成熟的網路防禦技術之一,在網路便捷安全防護方面得到了非常廣泛的應用。指的是置於不同網路安全域之間,對網路流量或訪問行為實施訪問控制的安全元件或裝置。從技術範疇上說防火牆屬於一種網路上的訪問控制機制,通過在不同的網路安全域之間建立起安全控制點,對通過的網路傳輸資料進行檢查,根據具體的安全需求和策略設定決定是否允許網路訪問通過防火牆,達到保護特定網路安全域免受非法訪問和破環的安全目標。

  防火牆的功能:控制在計算機網路中不同信任程度網路域之間傳送的資料流。具體包括以下幾點:

  檢查控制進出網路的網路流量

  防止脆弱或不安全的協議和服務

  防止內部網路資訊的外洩

  對網路存取和訪問進行監控審計

  防火牆可以強化網路安全策略並整合其他安全防禦機制

  防火牆的技術

  包過濾技術

  基於狀態檢測的包過濾技術

  代理技術(包括應用層代理技術、電路級代理技術、NAT代理技術

(三)、網路檢測技術與系統

1、入侵檢測系統的分類與部署

  分類:HIDS(基於主機的入侵檢測系統)、NIDS(基於網路的入侵檢測系統)

  入侵防禦系統IPS/IDS:“即插即用”,無須使用者的干預。

2、開源網路入侵檢測系統Snort

  基本架構

  資料包嗅探/解碼器:將網絡卡設定為混雜模式,用libpacp函式來進行資料包監聽和抓包。

  前處理器/外掛:用於彌補檢測引擎檢測能力的不足,主要有TCP/IP協議棧模擬、應用層協議解碼、異常檢測。

  檢測引擎/外掛:通過攻擊特徵規則庫檢測。

  輸出模組/外掛:記錄報警和日誌。

 

  主要功能:

  嗅探模式

  資料包記錄模式

  網路入侵檢測模式

 

  基於Snort的入侵防禦系統Snort_inline

  能夠對通過Snort_inline的資料包進行檢測,對匹配特徵規則的資料包進行丟棄和阻斷,達到實時安全防禦能力。

  工作機理:

  安裝內聯模式的Snort前,必須提供內聯網路連線的能力。

  netfilter/iptables提供了Snort_inline 所需的libipq/libnetfilter_ queue庫支援。

  Snort在編譯過程中通過./configure --enable -inline模式進行編譯,可以生成以內聯模式執行的Snort_inline 程式,在IPTables規則中新增一條簡單的$IPTABLES -A FORWARD -j QUEUE將會觸發Snort_ inline 負責所有經由網橋,由系統進行路由轉發的資料包,對這些資料包進行檢查並根據檢查結果決定是否阻斷。

二、實踐過程

任務一、防火牆配置

任務要求:配置Linux作業系統平臺上的iptables,或者Windows作業系統平臺上的個人防火牆,完成如下功能,並進行測試:

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

  (2)只允許特定IP地址(如區域網中的Linux攻擊機192.168.200.3),訪問主機的某一網路服務(如FTP、HTTP、SMB),而其他的IP地址(如Windows攻擊機192. 168.200.4)無法訪問

  此次實驗使用SEEDUbuntu、kaliMetasploitable_ubuntu三臺虛擬機器,seed作為被ping機。

  SEEDUbuntu的IP地址

 

 

 

  kali的IP地址

 

 

   Metasploitable_ubuntu的IP地址

 

 

 

  首先在SEEDUbuntu使用命令iptables -V顯示出版本。

 

 

  輸入iptables -L顯示出鏈中所有的規則。

 

 

  使用命令iptables -A INPUT -p icmp -j DROP使得seed不接受icmp資料包,其中-A可以換成-I,無非是加入規則的順序問題,-p後跟協議,這些命令使用iptables -h都可以檢視,使用命令後發現多了一條規則,作用是使得主機不接受ping

 

 

 

 

 

 

 

  設定完規則後嘗試用kali 和Metasploitable_ubuntu ping SEEDUbuntu,發現均不能ping通,表明規則設定成功。

 

 

 

 

 

 

   輸入命令iptables -D INPUT 1,刪除上一條自己設定的規則

 

 

 

 

   刪除規則之後,再嘗試用kali 和Metasploitable_ubuntu ping SEEDUbuntu,發現兩臺機器馬上就能ping通SEEDUbuntu

 

 

 

 

 

   然後使用kali 和 SEEDUbuntu 對Metasploitable_ubuntu 進行telnet遠端連線,發現均可以連線,命令是telnet IP地址。

 

 

 

 

 

 

 

  為了只讓某個特定IP訪問某一服務,比如telnet,可以設定先將所有訪問該主機服務的請求全部丟棄,之後再設一條規則使得特定IP可以訪問這個埠服務。

  即使用命令iptables -I INPUT -p tcp --dport 23 -j DROP先拒絕所有訪問23埠請求

  再用命令iptables -I INPUT -s 192.168.200.16 -p tcp --dport 23 -j ACCEPT接受特定IP可以訪問這個埠

 

 

   發現kali無法連線Metasploitable_ubuntu的23號埠,但是SEEDUbuntu(192.168.200.123)可以成功連線

 

 

 

任務二、動手實踐:Snort

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

Snort執行命令提示如下:

  • ①從離線的pcap檔案讀取網路日誌資料來源

  • ②在snort.conf中配置明文輸出報警日誌檔案

  • ③指定報警日誌log目錄(或預設log目錄=/var/log/snort)

  使用之前實驗用過的listen.pcap檔案,我的pcap檔案在kali桌面

  使用命令snort -r /home/kali/DeskTop/listen.pcap -c /etc/snort/snort.conf -K ascii 對pcap檔案進行入侵檢測,可以檢視輸出的檢測,大部分都是tcp會話。

 

 

 

 

 

 

 

  snort會在預設目錄生成一個日誌檔案,進入報警日誌目錄 cd /var/log/snort , 檢視日誌檔案命令sudo cat snort.alert.fast,發現本次攻擊使用nmap。攻擊機IP地址是 172.31.4.178 ,靶機IP為 172.31.4.188

 

 

 

 

任務三、分析配置規則

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

  具體分析配置規則與啟動項檔案包括:

  防火牆(netfilter+IPTables) : /etc/init.d/rc.firewall:

  入侵檢測系統(Snort) : /etc/init.d/hflow-snort 與/etc/snort/snort.conf:

  入侵防禦系統(Snort_inlinc) : /etc/init.d/hflow-snort_inline 與/etc/snort_inline/snort. inline.conf

 

 

 

上述指令碼是如何實現蜜網的資料捕獲和資料控制的?

  資料捕獲機制:iptables可以通過記錄日誌的形式來捕獲網路連線資訊,包括源地址,目的地址,使用的埠和進行連線的協議、長度等等;Snort對符合入侵檢測特徵的攻擊資料包發出響應的報警資訊,從而標識網路流中存在的攻擊事件。檢視rc.firewall中的名單、白名單、防護名單的鏈,不同的鏈中對不同來源的包的處理是不同的,從而實現資料控制。

 

  開啟蜜罐(roo,honey),【su -】,然後執行【vim /etc/init.d/rc.firewall】檢視防火牆檔案。在防火牆檔案中可以看到有三個鏈,分別是黑名單、白名單、防護名單。-N的意思表示根據使用者指定的名字建立新鏈。
  防火牆對源地址或者目的地址屬於黑名單的主機,丟棄所有包;對於屬於白名單的主機,接受且不記錄;對於屬於防護名單內的主機,禁止訪問某些不希望被訪問到的主機。

  如下圖可以發現建立了黑名單和白名單防護名單的規則鏈,還建立了很多協議資料包的處理規則鏈
  

 

 

 獲取IPTables的實際規則列表、Snort和Snort_inline的實際執行引數

   蜜網閘道器的iptables顯示找不到命令 ,獲取規則鏈的命令是iptables -L,環境變數沒有加入,於是使用/sbin/iptables -L命令可以看到完整規則鏈。這裡honey虛擬機器不能上鞋翻頁,於是將查出來的東西放入1.txt,在1.txt中進行檢視,所以最終的命令是:/sbin/iptables -L >1.txt ,然後輸入命令vim 1.txt,可以看到預設的規則INPUT、FORWARD、OUTPUT都是關閉。

 

 

 

 

 

 

  獲取snort實際執行引數 通過命令 vim /etc/init.d/snortd 開啟Snort指令碼檔案,可以看到些引數的選項:預設使用預設目錄下的snort.conf規則,預設監聽網絡卡為eth0,預設儲存日誌路徑為/var/log/snort
  

 

 

 

 

 

   獲取Snort_inline實際執行引數:通過命令 vim /etc/init.d/hw-snort_inline 開啟snort_inline的指令碼檔案,可以看到到實際執行的引數。

 

 

 

 

蜜網閘道器開機之後,防火牆、NIDS、NIPS是如何啟動的

使用命令chkconfig -list 對linux系統執行的服務查詢,仍然需要使用/sbin/chkconfig --list命令,可以發現NIDS的0~6都是off,說明是需要手動啟動的,而防火牆和NIPS不全是off,是跟隨系統啟動的。

 

 

密網閘道器中的Snort規則是如何自動升級的?

  可以從vim /etc/honeywall.conf開啟honeywall配置檔案,來看snort的rule是否自動更新,可見預設為不更新

 

  Oinkmaster是個自動更新的軟體,使用vim /etc/oinkmaster.conf開啟該檔案,發現了snort.conf檔案,可以推斷這裡使用工具Oinkmaster進行了snort的自動升級。

 

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

問題1:在任務二中檢視報警任務日誌檔案時,首先檢視的是alert檔案,發現開啟是空的。

解決辦法:將/var/log/snort目錄下的檔案都列出來,一個一個開啟看,最後發現在檔案snort.alert.fast中。

問題2:在任務三中執行“獲取IPTables的實際規則列表、Snort和Snort_inline的實際執行引數”任務時,直接輸入命令iptables -L,顯示找不到命令。

解決辦法:通過查詢資料發現是環境變數沒有加入,於是使用/sbin/iptables -L命令可以看到完整規則鏈。在後續類似命令中都加上/sbin/則可以正常執行。

四、實踐總結

  1、這次的實驗總體感覺比較簡單,做起來速度比較快,但也會遇到一些細小的問題,在解決問題的途中要有耐心仔細分析,既解決問題又學習到了新知識。

  2、掌握了防火牆、snort、虛擬網路攻防環境中蜜網閘道器的防火牆和IDS/IPS配置規則等相關知識,感覺自己的知識面更廣了,對網路攻防的相關操作也更加熟悉,實驗做起來也更加快捷,在遇到一些問題時,不再是一頭霧水了,可以有一個大致的方向進行解決。

  3、在實驗過程中因為粗心出現一些不必要的問題,比如忘記進入root模式,導致執行命令時出現error。所以意識到自己在後續的學習與實驗中,應該更加細心。