本次做業屬於哪一個課程 | 網絡攻防實踐 |
---|---|
這個做業要求在哪裏 | 網絡安全防範技術 |
我在這個課程的目標是 | 學習網絡攻防相關技術和原理 |
這個做業在哪一個具體方面幫助我實現目標 | 瞭解網絡安全防範技術,學習防火牆和入侵檢測技術 |
首先梳理第六章網絡安全防範技術的原理內容,本章從網絡安全模型出發(後面的技術牢牢圍繞模型展開),主要介紹了防火牆技術(防護技術)和網絡入侵檢測技術(檢測技術)。分爲如下幾個部分開展原理內容的梳理。html
- 安全模型
- 網絡安全防範技術與系統
- 網絡檢測技術與系統
定義:防火牆指的是置於不一樣的網絡安全域之間,對網絡流量或訪問行爲實施訪問控制的安全組件或設備,達到保護特定網絡安全域免受非法訪問和破壞的安全目標。linux
功能:shell
不足:編程
技術:vim
部署方法:安全
這部分的內容詳細提及來比較複雜,下面只作簡要介紹,並推薦兩個博客,分別爲iptables詳解和iptables命令詳解和舉例。一個從理論方面的介紹,一個是介紹iptables的命令。服務器
簡介:iptables是運行在用戶空間的防火牆配置工具,經過控制運行在Linux內核空間的netfilter模塊,來管理網絡數據包的處理和轉發(最新已經有ip6tables用於ipv6)。markdown
規則:規則是用戶預約義的,也是咱們常說的防火牆規則,配置防火牆的主要工做就是添加、修改和刪除這些規則。由一個目標和不少匹配組成。匹配如interface(e.g. eth0)、協議類型、源IP/端口、目的IP/端口等。目標是用戶自定義的鏈、一個內置的特定目標或者是一個目標擴展,如ACCEPT、DROP、REJECT、SNAT、DNAT等。網絡
鏈:鏈是順序執行規則的編排方式,在複雜的網絡環境中,管理員需求這種可控的、有序執行的規則應用方式。iptables 提供了5條鏈:INPUT鏈、OUTPUT鏈、FORWARD鏈、路由前鏈(Pre-Routing)、路由後鏈(Post-Routing)。tcp
表:表的本質就是規則集的組織形式。iptables提供瞭如下5種表:filter表(過濾)、nat表(地址轉換)、mangle表(包修改)、raw表、security表(強制訪問)。
下面介紹下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 |
固然還有不少其餘的指令包括指令選項,用到再查,參考上面給的博客或者書上的內容。
snort -dev
)、數據包記錄模式(把數據包記錄到硬盤上,經常使用命令snort -b
)、網絡入侵檢測模式(載入規則庫才能工做,Snort並不記錄全部捕獲的包,而是將包與規則對比,僅當包與某個規則匹配的時候,纔會記錄日誌或產生報警)。alert tcp !192.168.0.1/24 any ->any 21 (content:"USER";msg: "FTP Login";)
alert
表示規則動做爲報警。!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地址/端口之間的數據傳輸進行記錄/分析。任務:配置Linux平臺上的iptables,完成以下功能並測試
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)。更多的指令參照上面理論部分給的連接。
3. 此時經過Kali ping
SEED Ubuntu,發現是ping
不通的,而且能夠查看規則,發現多了一條icmp針對任何位置不容許訪問的規則。
4. 最後別忘了使用iptables -F
刪除自定義規則。至此過濾ICMP數據包實踐完成。
下面開始第二個實踐,只容許Kali訪問SEED Ubuntu的telnet服務。
1. 首先,咱們肯定兩臺機器均可以進行telnet登錄。
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
查看規則。
4. 此時咱們發現Kali是能夠正常訪問telnet服務的,可是MetaSploitable倒是沒法訪問的。
5. 最後別忘了執行iptables -F
和iptables -P INPUT ACCEPT
兩條指令恢復以前的狀態。
任務:使用Snort對給定的pcap文件進行入侵檢測,並對檢測出的攻擊進行說明
Solution
關於Snort的一些實踐在第四章已經實踐過,這裏用的文件仍是第四章的listen.pcap
文件。
1. 首先利用指令snort -r listen.pacp -c /etc/snort/snort.conf -K ascii
對listen.pacp
進行入侵檢測,其餘的指令第四周都已經詳細介紹了,-K ascii
主要是爲了指定輸出log文件的編碼爲ASCII(默認爲binary)。
2. 查看輸出,咱們能夠看到檢測出的數據包大部分爲TCP數據包。
3. 在/var/log/snort/
目錄下能夠查找到alert
文件,這個文件即輸出的日誌文件,經過vim打開能夠發現這個攻擊是nmap發起的,固然還有不少其餘的信息,譬如源地址、目的地址等等。
任務:說明蜜網網關是如何利用防火牆和入侵檢測技術完成其攻擊數據捕獲和控制需求
1. 數據控制:一般數據控制通常包括兩個方面,一個是防火牆對數據的控制,還有一個是IPS對異常數據的限制(snort_inline)。咱們稍微看一下其防火牆的文件rc.firewall
(859行代碼,好吧,我也不咋會shell編程,看關鍵部分)。關鍵部分是什麼,固然是鏈了。咱們能夠看下以下的建立了三個鏈,分別是黑名單、白名單、防禦名單(FenceList)。因此,大體在上面的功能之上,增長了:
防火牆對源地址或者目的地址屬於黑名單的主機,丟棄全部包。
對於屬於白名單的主機,接受且不記錄。
對於屬於防禦名單內的主機,禁止訪問某些不但願被訪問到的主機。
2. 數據捕獲:數據捕獲主要包括:
3. IPTables的實際規則列表:經過指令iptables -t filter -L
來查看規則列表。不難發現,默認的規則入OUTPUT、INPUT、FORWARD都已經被關閉了,取而代之的是一些自定義的規則(包括以前配置Roo的一些參數也反映在規則表上)。
4. Snort實際執行參數:經過vim snortd
打開Snort腳本文件,觀察第一張圖能夠看到一開始是一些參數的選項。第二張圖對應的就是實際運行時候的參數了。簡單分析,譬如在指定網卡接口後,若是沒有其餘的參數,將按照默認參數運行。如默認不開啓-A
模式,使用默認目錄的config文件(/etc/snort/snort.conf),默認使用eth0、使用二進制模式保存log文件等(瞭解了Snort的指令以後,這個比較好懂)。
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 [目錄]
6. 防火牆、NIDS、NIPS啓動:經過指令chkconfig --list | grep [服務]
來查詢當前服務是否是開啓的。chkconfig
命令主要用於檢查,設置系統的各類服務。咱們發現防火牆和NIPS(snort_inline)是跟隨系統啓動的,而且開機自動配置剛纔的腳本文件。NIDS是須要手動啓動的。
7. Snort規則如何自動升級:在/etc
目錄下使用指令vim honeywall.conf
打開honeywall配置文件,這個裏面能夠看到不少東西,譬如咱們以前安裝roo時配置的IP地址、譬如白名單黑名單的位置等。一樣咱們能夠找到snort規則更新的地方。默認是不自動更新的。咱們能夠看到Oinkmaster字樣,一查,這個果真是個自動更新的軟件。使用方法參考這個簡單的博客吧Oinkmaster使用方法。而後咱們在當前目錄下打開oinkmaster.conf
文件,能夠看到url也是註釋的,若是你想開啓自動更新,按照上面的博客操做就行啦。