20199101 2019-2020-2 《網絡攻防實踐》第六週做業

網絡防範技術:防火牆和IDS/IPS


0.整體結構


本次做業屬於哪一個課程 網絡攻防實踐
這個做業要求在哪裏 網絡安全防範技術
我在這個課程的目標是 學習網絡攻防相關技術和原理
這個做業在哪一個具體方面幫助我實現目標 瞭解網絡安全防範技術,學習防火牆和入侵檢測技術

1.實踐內容


首先梳理第六章網絡安全防範技術的原理內容,本章從網絡安全模型出發(後面的技術牢牢圍繞模型展開),主要介紹了防火牆技術(防護技術)和網絡入侵檢測技術(檢測技術)。分爲如下幾個部分開展原理內容的梳理。html

  • 安全模型
  • 網絡安全防範技術與系統
  • 網絡檢測技術與系統

安全模型


  • 靜態安全模型:對網絡進行風險分析,制定相應的安全策略,而後採起安全技術做爲防禦措施,主要針對固定、靜態的威脅和環境弱點。
  • PDR安全模型:基於閉環控制理論的時間動態可適應網絡安全模型,以經典的網絡安全不等式P>D+R(保護、檢測、響應)爲本質基礎,並提出安全性可量化和可計算的觀點。
  • P2DR安全模型:基於PDR安全模型提出,增長了Policy分析制定安全策略,並以此爲核心,全部的防禦、檢測、響應都是依據安全策略實施的。

網絡安全防範技術與系統


1.防火牆技術及產品


  • 定義:防火牆指的是置於不一樣的網絡安全域之間,對網絡流量或訪問行爲實施訪問控制的安全組件或設備,達到保護特定網絡安全域免受非法訪問和破壞的安全目標。linux

  • 功能shell

    • 檢查控制進出網絡的流量。
    • 防止脆弱或不安全的協議和服務。
    • 防止內部網絡信息的外泄。
    • 對網絡存取和訪問進行監控審計。
    • 強化網絡安全策略並集成其餘安全防護機制。
  • 不足編程

    • 先天:沒法防範包括來自網絡內部的安全威脅、經過非法外聯的網絡攻擊和計算機病毒傳播的傳播。
    • 技術瓶頸:沒法防範包括針對開放服務安全漏洞的滲透攻擊、針對網絡客戶端程序的滲透攻擊和隱蔽通道進行通訊的特洛伊木馬或僵屍網絡。
  • 技術vim

    • 包過濾技術:在路由功能基礎上進行擴展,經過對網絡層和傳輸層包頭信息的檢查,根據用戶定義的安全策略規則集,肯定是否應該轉發該數據包(簡單、安全功能有限)。
    • 基於狀態檢測的包過濾技術:也稱動態包過濾。除了使用靜態規則進行安全進行安全策略匹配,還進行數據包的網絡鏈接的上下文關係探測,來肯定是否容許通訊。這種技術相比較傳統的包過濾技術安全性更高,數據合法性獲得了更有效的保障(對網絡性能有必定的影響)。
    • 代理技術:容許客戶端經過代理與網絡服務進行非直接的鏈接,也稱「網絡代理」。主要是客戶端與代理服務器鏈接,代理服務器再與目標服務器鏈接。代理技術包括應用層代理(工做在應用層)、電路級代理(工做在傳輸層)和NAT代理(工做在網絡層)等。
  • 部署方法安全

    • 包過濾路由器:帶有包過濾防火牆功能的路由器。
    • 雙宿主堡壘主機:應用代理網關做爲雙宿主堡壘主機。
    • 屏蔽主機:堡壘主機和包過濾的結合。
    • 屏蔽子網:在屏蔽主機的基礎上增長第二道包過濾路由器。

    firewall


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


這部分的內容詳細提及來比較複雜,下面只作簡要介紹,並推薦兩個博客,分別爲iptables詳解iptables命令詳解和舉例。一個從理論方面的介紹,一個是介紹iptables的命令。服務器

  • 簡介:iptables是運行在用戶空間的防火牆配置工具,經過控制運行在Linux內核空間的netfilter模塊,來管理網絡數據包的處理和轉發(最新已經有ip6tables用於ipv6)。markdown

  • 規則:規則是用戶預約義的,也是咱們常說的防火牆規則,配置防火牆的主要工做就是添加、修改和刪除這些規則。由一個目標和不少匹配組成。匹配如interface(e.g. eth0)、協議類型源IP/端口目的IP/端口等。目標是用戶自定義的鏈、一個內置的特定目標或者是一個目標擴展,如ACCEPTDROPREJECTSNATDNAT等。網絡

  • :鏈是順序執行規則的編排方式,在複雜的網絡環境中,管理員需求這種可控的、有序執行的規則應用方式。iptables 提供了5條鏈:INPUT鏈OUTPUT鏈FORWARD鏈路由前鏈(Pre-Routing)路由後鏈(Post-Routing)tcp

  • :表的本質就是規則集的組織形式。iptables提供瞭如下5種表:filter表(過濾)、nat表(地址轉換)、mangle表(包修改)、raw表security表(強制訪問)。

    tab

下面介紹下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

固然還有不少其餘的指令包括指令選項,用到再查,參考上面給的博客或者書上的內容。


網絡檢測技術與系統


1.入侵檢測技術


  • 評估指標:檢測率(系統捕獲到的攻擊行爲與所有攻擊行爲比值)和誤報率(對正常行爲的誤報數與所有報警數的比值)。
  • 技術類型:特徵檢測(匹配特徵庫)、異常檢測(檢測與正經常使用戶在統計方面的差異)。兩者一般結合使用,提升入侵檢測系統的總體檢測性能。同時,基於這兩種技術,也能夠對入侵檢測系統進行分類。
  • 入侵防護系統:也叫內嵌式入侵檢測,即對檢測到的異常行爲或者與特徵庫匹配的行爲直接進行阻斷,斷開訪問。

2.snort基本介紹


  • 簡介:Snort是一個強大的網絡入侵檢測系統。它具備實時數據流量分析和記錄IP網絡數據包的能力,可以進行協議分析,對網絡數據包內容進行搜索/匹配,能夠檢測各類不一樣的攻擊方式,對攻擊進行實時報警等。
  • 四大模塊數據包嗅探模塊預處理模塊(用相應的插件來檢查原始數據包)、檢測模塊(檢測引擎依據預先設置的規則檢查數據包)、報警/日誌模塊(經檢測引擎檢查後的Snort數據輸出)。
  • 三種工做模式嗅探模式(從網絡上讀取數據包,經常使用命令snort -dev)、數據包記錄模式(把數據包記錄到硬盤上,經常使用命令snort -b)、網絡入侵檢測模式(載入規則庫才能工做,Snort並不記錄全部捕獲的包,而是將包與規則對比,僅當包與某個規則匹配的時候,纔會記錄日誌或產生報警)。
  • 分析一個規則實例
    • alert tcp !192.168.0.1/24 any ->any 21 (content:"USER";msg: "FTP Login";)
    • alert表示規則動做爲報警。
    • tcp表示協議類型爲TCP協議。
    • !192.168.0.1/24表示源IP地址不是192.168.0.1/24。
    • 第一個any表示源端口爲任意端口。
    • ->表示發送方向操做符。
    • 第二個any表示目的IP地址爲任意IP地址,21表示目的端口爲21。
    • content:"USER"表示匹配的字符串爲「USER」。
    • msg:"FTPLogin"表示報警信息爲「FTPLogin」。
    • 此外,還有一個雙向操做符<>,它使Snort對這條規則中,兩個IP地址/端口之間的數據傳輸進行記錄/分析。

2.實踐過程


實踐一:防火牆配置

任務:配置Linux平臺上的iptables,完成以下功能並測試

  • 過濾ICMP數據包,使主機不接受ping包。
  • 只容許特定IP地址訪問主機的某一網絡服務,而其餘IP地址沒法訪問。

Solution
首先咱們以SEED Ubuntu做爲服務器,利用Kali訪問SEED Ubuntu,Kali做爲信任主機,Linux MetaSploitable做爲不可信任主機。IP地址以下。

機器 IP地址
Kali Linux 192.168.3.19
Linux MetaSploitable 192.168.3.22
SEED Ubuntu 192.168.3.24

1. 首先在SEED Ubuntu上經過iptables -L查看規則,發現都是默認規則。

2. 經過指令iptables -A INPUT -p icmp -j DROP指令使得主機不接受icmp的數據包。指令詳解:-A是追加一條規則,INPUT表示數據包入口(規則),-p用於匹配協議,-j用於指定如何處理(ACTION)。更多的指令參照上面理論部分給的連接。
icmp2.png

3. 此時經過Kali ping SEED Ubuntu,發現是ping不通的,而且能夠查看規則,發現多了一條icmp針對任何位置不容許訪問的規則。

icmp1

icmp3

4. 最後別忘了使用iptables -F刪除自定義規則。至此過濾ICMP數據包實踐完成。

下面開始第二個實踐,只容許Kali訪問SEED Ubuntu的telnet服務
1. 首先,咱們肯定兩臺機器均可以進行telnet登錄。

telnet1

telnet2

2. 接下來使用iptables -P INPUT DROP指令拒絕一切的數據包流入(修改的是默認規則-P),此時應該兩臺電腦都沒法進行訪問。

3. 使用指令iptables -A INPUT -p tcp -s 192.168.3.19 -j ACCEPT開啓192.168.3.19對本機的tcp服務。並用iptables -L查看規則。
yelnet3

4. 此時咱們發現Kali是能夠正常訪問telnet服務的,可是MetaSploitable倒是沒法訪問的。
telnet5

telnet4

5. 最後別忘了執行iptables -Fiptables -P INPUT ACCEPT兩條指令恢復以前的狀態。


實踐二:Snort

任務:使用Snort對給定的pcap文件進行入侵檢測,並對檢測出的攻擊進行說明


Solution
關於Snort的一些實踐在第四章已經實踐過,這裏用的文件仍是第四章的listen.pcap文件。
1. 首先利用指令snort -r listen.pacp -c /etc/snort/snort.conf -K asciilisten.pacp進行入侵檢測,其餘的指令第四周都已經詳細介紹了,-K ascii主要是爲了指定輸出log文件的編碼爲ASCII(默認爲binary)。
snort1

2. 查看輸出,咱們能夠看到檢測出的數據包大部分爲TCP數據包。

snort2

3. 在/var/log/snort/目錄下能夠查找到alert文件,這個文件即輸出的日誌文件,經過vim打開能夠發現這個攻擊是nmap發起的,固然還有不少其餘的信息,譬如源地址、目的地址等等。
snort3


實踐三:分析蜜網網關的防火牆和IDS/IPS配置規則。

任務:說明蜜網網關是如何利用防火牆和入侵檢測技術完成其攻擊數據捕獲和控制需求

  • 上述腳本是如何實現蜜網的數據捕獲和數據控制?
  • 獲取IPTables的實際規則列表、Snort和Snort_inline的實際執行參數。
  • 蜜網網關開機以後,防火牆、NIDS、NIPS是如何啓動的?
  • Snort規則是如何自動升級的?

1. 數據控制:一般數據控制通常包括兩個方面,一個是防火牆對數據的控制,還有一個是IPS對異常數據的限制(snort_inline)。咱們稍微看一下其防火牆的文件rc.firewall(859行代碼,好吧,我也不咋會shell編程,看關鍵部分)。關鍵部分是什麼,固然是了。咱們能夠看下以下的建立了三個鏈,分別是黑名單、白名單、防禦名單(FenceList)。因此,大體在上面的功能之上,增長了:

  • 防火牆對源地址或者目的地址屬於黑名單的主機,丟棄全部包。

  • 對於屬於白名單的主機,接受且不記錄。

  • 對於屬於防禦名單內的主機,禁止訪問某些不但願被訪問到的主機。

    roo1

2. 數據捕獲:數據捕獲主要包括:

  • 防火牆的日誌記錄:記錄的只是簡單的信息如目的地址/端口、源地址/端口、協議、長度等。
  • Snort記錄的網絡流。

3. IPTables的實際規則列表:經過指令iptables -t filter -L來查看規則列表。不難發現,默認的規則入OUTPUT、INPUT、FORWARD都已經被關閉了,取而代之的是一些自定義的規則(包括以前配置Roo的一些參數也反映在規則表上)。

iptables1

iptables2

4. Snort實際執行參數:經過vim snortd打開Snort腳本文件,觀察第一張圖能夠看到一開始是一些參數的選項。第二張圖對應的就是實際運行時候的參數了。簡單分析,譬如在指定網卡接口後,若是沒有其餘的參數,將按照默認參數運行。如默認不開啓-A模式,使用默認目錄的config文件(/etc/snort/snort.conf),默認使用eth0、使用二進制模式保存log文件等(瞭解了Snort的指令以後,這個比較好懂)。

snort6

snort7

5. Snort_inline實際執行參數:經過vim hw-snort_inline打開Snort_inline腳本文件,能夠觀察到實際運行的參數,以及在最前面定義的參數。咱們將前面的變量帶入這個運行指令應該爲(-D表示Daemon模式,-c表示讀取config文件,-Q表示使用QUEUE模式,-l表示輸出log文件的目錄,-t表示改變程序執行時所參考的根目錄位置):
snort-inline -D -c /etc/snort_inline/snort_inline.conf -Q -l [系統時間命名] -t [目錄]

snortin

6. 防火牆、NIDS、NIPS啓動:經過指令chkconfig --list | grep [服務]來查詢當前服務是否是開啓的。chkconfig命令主要用於檢查,設置系統的各類服務。咱們發現防火牆和NIPS(snort_inline)是跟隨系統啓動的,而且開機自動配置剛纔的腳本文件。NIDS是須要手動啓動的。
grep

7. Snort規則如何自動升級:在/etc目錄下使用指令vim honeywall.conf打開honeywall配置文件,這個裏面能夠看到不少東西,譬如咱們以前安裝roo時配置的IP地址、譬如白名單黑名單的位置等。一樣咱們能夠找到snort規則更新的地方。默認是不自動更新的。咱們能夠看到Oinkmaster字樣,一查,這個果真是個自動更新的軟件。使用方法參考這個簡單的博客吧Oinkmaster使用方法。而後咱們在當前目錄下打開oinkmaster.conf文件,能夠看到url也是註釋的,若是你想開啓自動更新,按照上面的博客操做就行啦。

olink

olink2


2.學習中遇到的問題及解決


  • 問題一:VMware Fusion一打開虛擬機就黑屏卡死
  • 問題一解決方案:從網上下載了新的VMware Fusion解決(破解版仍是很差用啊)。
  • 問題二:電腦截屏失效,換句話說就是其餘應用沒法訪問個人電腦屏幕,截屏出來就是白色的。
  • 問題二解決方案:並無找到關於訪問控制的設置,重置了nvram解決的。
  • 問題三:電腦再一次死機。
  • 問題三解決方案:懷疑是以前換的固態不夠穩?或者是我裝的不夠好?電腦經不起折騰了。老了老了。
  • 問題四:實踐作到一半就停電,今天下午好難。
  • 問題四解決方案:無盡的等待中。。。。。。。
  • 問題五:發佈才發現,博客園的markdown不支持latex公式
  • 問題五解決方案:不用!!!

3.學習感悟、思考

  • 此次實驗總體內容不難,分析內容仍是佔大多數,本文中的有些分析仍是不夠清晰明瞭,一方面是本身網絡方面的知識不夠系統總體、一方面是關於蜜網網關的資料仍是太少。
  • 此次實驗下午遇到了好多實驗以外的事情,着實鬧心。

參考資料

相關文章
相關標籤/搜索