做業課程: | https://edu.cnblogs.com/campus/besti/19attackdefense |
---|---|
做業要求: | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10589 |
課程目標: | 學習《網絡攻防技術與實踐》教材第六章,並完成課後做業 |
本次做業實現目標: | 學習網絡安全防範技術 |
信息安全金三角:機密性、完整性和可用性
傳統的靜態安全技術及方法:防火牆,加密、身份認證
檢測機制:是動態響應和增強防禦的依據,是強制落實安全策略的工具,經過不斷地檢測和檢測網絡和系統,發現新的威脅和弱點,並經過循環反饋來及時作出有效的響應。
檢測技術:入侵檢測和漏洞評估
響應措施主要包括:應急處理,備份恢復,災難恢復html
防火牆:置於不一樣的網絡安全領域之間,對網絡流量或訪問行爲實施訪問控制的安全組件或設備,在技術範疇上,防火牆屬於一種網絡上的訪問控制機制,經過在不一樣的網絡安全域之間創建起安全控制點,對經過的網絡傳輸數據進行檢查,根據具體的安全需求和策略設置決定是否容許網絡訪問經過防火牆,達到保護特定網絡安全免受非法訪問和破壞的安全目標。
根據網絡協議棧層次,防火牆技術能夠分爲包過濾(網絡層)
、電路級網關(傳輸層)
和應用層代理技術(應用層)
基本功能:控制在計算機網絡中不一樣信任程度網絡域之間實施網絡安全訪問控制。linux
防火牆提供的安全功能:vim
防火牆的不足:安全
技術瓶頸問題:服務器
包過濾路由器:將帶有包過濾防火牆功能的路由器做爲內部網絡和外部網絡之間惟一的鏈接點,路由器在完成其數據包路由轉發基本功能的同時,將依據網絡管理員配置的訪問控制列表,對數據包進行過濾。網絡
雙宿主堡壘主機:與包過濾路由器很是類似,不一樣的是使用應用代理網關做爲雙素質堡壘主機,代替包過濾路由器。壘主機具備兩個網絡接口,一個使用公網IP地址鏈接外部網絡,另外一個使用私有IP地址鏈接內部網絡,兩個網絡接口之間並不具有路由轉發功能,而僅僅由應用代理服務器程序爲特定的網絡應用提供代理。app
屏蔽主機:包過濾防火牆和應用代理技術的集成部署,採用了屏蔽路由和堡壘主機雙重安全設施,全部進出內部網絡的數據都要通過包過濾防火牆和堡壘主機,由包過濾防火牆進行網絡層的訪問控制,由堡壘主機進行應用安全控制,保證了網絡層和應用層的雙重安全。框架
屏蔽子網:是在屏蔽主機模式的基礎上進行改進的防火牆部署模式。它與屏蔽主機模式的區別在於在應用代理及對外服務器所構成網段和內部主.機之間安裝了第二個包過濾防火牆,應用代理及對外服務器所處的網段也被稱爲DMZ(非軍事區)。在這種部署模式中,內部的包過濾防火牆可以在應用代理和對外服務器被攻破以後提供對內部網絡的進一步安全防禦能力。
tcp
netfilter:是Linux內核中實現的防火牆功能模塊,實現了靜態包過濾和狀態報文檢查(動態包過濾),也支持靈活可擴展的框架,支持NAT網絡地址轉換等其餘額外功能,此外也支持一個靈活可擴展的框架
iptables是應用態的防火牆管理工具框架,支持NAT網絡地址轉換等其餘額外功能,並提供了多層API接口以支持第三方擴展。分佈式
三個最基本的規則表:包過濾處理的filter表、用於網絡地址轉換處理的nat表、以及用於特殊目的數據包修改的mangle表
netfilter/itables的缺省規則表/鏈:
fileter表:
INPUT發往本地的數據包進行過濾處理;
OUTPUT本地發出的數據包進行過濾處理;
FORWARD通過主機進行路由轉發的數據包進行過濾處理;
nat 表:
PREROUTING對未經路由選擇的數據包轉換其目標IP地址和端口
POSTROUTING對已通過路由選擇的數據包進行源IP地址和端口轉換
OUTPUT規則鏈針對本地數據包進行目標IP地址和端口轉換;
mangle 表:
針對數據包頭部信息進行特殊地修改,如設置TOS值,標記數據包,用於策略路由、網絡流量整形等一些目的。
五種規則鏈:
主要語法:iptables [-t table] command [match] [target]
其中-t
是配置規則所在的表,缺省表包括filter
,nat
,mangle
,raw
,command
部分是告訴iptables
要作什麼。
command:
-A或--append
:命令將一條規則附加到鏈的末尾。
-D或--delete
:指定匹配的規則或者指定規則在鏈中的位置編號,該命令從鏈中刪除該規則。
-P或--policy
:設置鏈的缺省目標操做,全部與鏈中任何規則都不匹配的信息包都將被強制使用此鏈的策略。
-N或--new-chain
:用命令中所指的名稱建立一個新鏈。
-F或--flush
:若是指定鏈名,該命令刪除鏈中全部的規則,若是爲指定鏈名,該命令刪除全部鏈中全部的規則,此參數用於快速清除。
-或--list
:列出指定鏈中全部的規則。
target:
ACCEPT
:當信息包與具備ACCEPT
目標操做的規則徹底匹配時,會被接受(容許它前往目的地),而且它將中止遍歷規則鏈。該目標操做被指定爲-j ACCEPT
。
DROP
:當信息包與具備DROP
目標操做的規則徹底匹配時,會阻塞該信息包,而且不對它作進一步處理。 該目標操做被指定爲-j DROP
。
REJECT
: 該目標操做的工做方式與DROP
目標操做相似,但與DROP
不一樣的是,REJECT
不會在服務器和客戶機上留下死套接字。另外,REJECT 將錯誤消息發回給數據包的發送方。該目標操做被指定爲j REJECT
。
RETURN
:在規則中設置的RETURN目標操做讓與該規則匹配的信息包中止遍歷包含該規則的鏈。若是鏈是如INPUT之類的主鏈,則使用該鏈的缺省策略處理信息包。它被指定爲-jump RETURN
。
入侵檢測技術:
實踐任務:配置Linux操做系統平臺上的iptables,或者Windows操做系統平臺上的我的防火牆,完成以下功能,並進行測試: .
1.過濾ICMP數據包,使得主機不接收Ping包:
先對目標機進行ping鏈接:
而後執行iptables -A INPUT -p icmp -j DROP
命令,在INPUT鏈中添加將因此有ping鏈接產生的icmp數據包丟失的規則,此時再ping目標機則ping鏈接失敗:
除去剛纔的過濾規則:
再次嘗試ping鏈接則恢復:
2.只容許特定IP地址(如局域網中的Linux攻擊機192.168.200.7),訪問主機的某一網絡服務(如FTP、HTTP、SMB),而其餘的IP地址(如Windows攻擊機192.168.200.5)沒法訪問
telnet中運用了三次握手協議創建TCP鏈接,四次握手協議取消TCP鏈接:
經過telnet命令對目標機192.168.200.5
進行鏈接,源ip地址爲192.168.200.7
以及192.168.200.10
:
而後用iptables -A INPUT -p icmp -j DROP
將知足規則的數據報丟棄,此時telnet鏈接失敗:
而後用指令iptables -A INPUT -p tcp -s 192.168.200.7 -j ACCEPT
開啓對源IP192.168.200.7
對目標機的tcp服務,能夠用iptables -L
查看規則
192.168.200.7
能夠telnet目標IP,而192.168.200.10
鏈接失敗:
任務:使用Snort對給定pcap文件(第4章中的解碼網絡掃描任一個pcap文件)進行入侵檢測,並對檢測出的攻擊進行說明。在BT4 Linux攻擊機或Windows Attacker攻擊機上使用Snort,對給定的pcap文件進行入侵檢測,得到報警日誌。
Snort運行命令提示以下。
從離線的pcap文件讀取網絡日誌數據源
在snort.conf中配置明文輸出報警日誌文件
指定報警日誌log目錄(或缺省log目錄=/var/log/snort)
執行以下命令,-K ascii
主要是爲了指定輸出log文件的編碼爲ASCII(默認爲binary):
大部分爲TCP包,少部分爲ARP包:
報警數據包有10條,均被日誌記錄,全部數據包都裁決容許:
數據流統計:
在缺省log目錄/var/log/snort
中能夠用vim
讀取生成的alert文件,記錄了報警數據10條的入侵檢測信息:
分析虛擬網絡攻防環境中蜜罐網網關的防火牆和IDS/IPS配置規則,並撰寫分析報告,說明蜜罐網網關是如何利用防火牆和入侵檢測技術完成其攻擊數據捕獲和控制需求的。
具體分析配置規則與啓動項文件包括:
防火牆(netfilter+IPTables):/etc/init.d/rc.firewall
入侵檢測系統(Snort):/etc/init.d/hflow-snort與/etc/snort/snort.conf(未找到第一個文件)
入侵防護系統(Snort_inline):/etc/init.d/hflow-snort_inline與/etc/snort_inline/snort_inline.conf(第一個文件爲hw-snort_inline)
1.上述腳本是如何實現蜜網網關的數據捕獲和數據控制機制?
snort主要經過對整個網絡數據包進行預警提示,多側重於數據捕獲,固然查詢防火牆和snort_inline日誌也能夠得到必定的數據捕獲信息。
iptables中有用 modprobe ipt_LOG
,iptables -N FenceLogDrop
等存儲數據捕獲的日誌,snort文件好像並未找到相關代碼,不過snort_inlin能夠用snort -c [snort.conf絕對路徑} -l [log路徑] -K ascii
來實現輸出log文件。
iptables防火牆主要負責對數據accept,reject,drop等規則的制定和執行,多用於數據控制。
分析相關腳本的關鍵代碼,防火牆文件rc.firewall
中create_chains()
用於建立鏈,該函數分別建立了黑名單和白名單,防禦名單以及防禦日誌刪除,-N的意思表示根據用戶指定的名字建立新鏈,其中黑名單就是阻止某些網絡地址和用戶進入主機,白名單就是用戶設置的認爲能夠添加信任的網絡用戶以及網絡地址,防禦名單是IPS的文件列表,防禦日誌刪除是一個表,用於記錄/刪除從圍欄反彈的數據包。
create_chains() { if [ -n "${HwFWBLACK}" ] && [ -e ${HwFWBLACK} ] && [ "${HwBWLIST_ENABLE}" == "yes" ]; then # 黑名單 iptables -N BlackList fi if [ -n "${HwFWWHITE}" ] && [ -e ${HwFWWHITE} ] && [ "${HwBWLIST_ENABLE}" == "yes" ]; then # 白名單 iptables -N WhiteList fi if [ -n "${HwFWFENCE}" ] && [ -e ${HwFWFENCE} ] && [ "${HwFENCELIST_ENABLE}" == "yes" ]; then # 防禦名單 iptables -N FenceList # 防禦日誌刪除 iptables -N FenceLogDrop fi if [ -n $HwTCPRATE ] && [ $HwTCPRATE -gt 0 ]; then # 建立TCP處理鏈 iptables -N tcpHandler fi if [ -n $HwUDPRATE ] && [ $HwUDPRATE -gt 0 ]; then # 建立UDP處理鏈 iptables -N udpHandler fi if [ -n $HwICMPRATE ] && [ $HwICMPRATE -gt 0 ]; then # 建立ICMP處理鏈 iptables -N icmpHandler fi if [ -n $HwOTHERRATE ] && [ $HwOTHERRATE -gt 0 ]; then # 建立其餘協議處理鏈 iptables -N otherHandler fi }
網絡信息防護系統snort_inline主要對異常數據的進行控制,能夠和iptables進行聯動
2.獲取IPTables的實際規則列表、Snort和Snort_inline的實際執行參數?
獲取IPTables的實際規則列表
經過指令iptables -t filter -L
來查看規則:
獲取Snort的實際執行參數:
snort --h
或者查詢snort文件vim /etc/rc.d/init.d/snortd
獲取Snort_inline的實際執行參數:
-D表示Daemon模式,-c表示讀取config文件,-Q表示使用QUEUE模式,-l表示輸出log文件的目錄,-t表示改變程序執行時所參考的根目錄位置。
3.蜜網網關開機以後,防火牆、NIDS、NIPS是如何啓動的?
根據chkconfig --list | grep [服務]
能夠查詢到開啓服務的狀況,其中1表示單用戶模式,2表示無網絡鏈接的多用戶命令行模式,3表示有網絡鏈接的多用戶命令行模式,4表示不可用,5表示帶圖形界面的多用戶模式,6表示從新啓動能夠看到iptables和snort_inline(NIPS)是隨系統開機而開啓的,而snort(NIPS)須要手動開啓:
4.Bonus:蜜網網關中的Snort規則是如何自動升級的?
能夠從vim /etc/honeywall.conf
來看snort的rule是否自動更新,默認爲不更新:
本次學習內容主要爲網絡安全防範技術,感受iptables以及snort兩種工具的命令仍是掌握的不夠,只是在實驗過程當中運用了某幾個經常使用的命令參數,分析腳本源碼仍是主要藉助英文註釋以及網上的資料,有待增強。