引言:我的系列博客[網絡安全學習篇]上線了,小編也是初次創作博客,經驗不足;對千峯網絡信息安全開源的視頻公開課程的學習整理的筆記整理的也比較粗糙,其實看到目錄有300多集的時候,講道理,有點慫了,所以我就想到了通過寫博客(課程筆記)的形式去學習它,雖然寫博客會讓我多花幾倍的時間去學習它,但是當我完成一篇博客所獲得的成就感和你們對於我的認同感,讓我很滿足,能夠鼓勵我一天天的堅持下去,也希望和我一起學習本期視頻的"同道"們也能給一直堅持下去。我們大家一起加油。由於作者本身也是網絡信息安全小白,大部分知識點都是初次接觸,出現對其理解不深入,不完整,甚至也會出現錯誤有問題的地方,希望大家諒解、留言提出指正,同時也歡迎大家來找我一起交流學習!!!
往期博客:
第一階段:
[網絡安全學習篇1]:windowsxp、windows2003、windows7、windows2008系統部署(千峯網絡安全視頻筆記)
[網絡安全學習篇24]:漏洞與木馬(千峯網絡安全視頻筆記 p117-p118)
第二階段:
[網絡安全學習篇26]:Linux下的命令幫助、壓縮、vim、軟件安裝的學習
[網絡安全學習篇27]:Linux操作系統的用戶和組、文件及目錄權限(千峯網絡安全視頻筆記 p134-p139)
[網絡安全學習篇28]:網絡地址的配置 日誌文件的管理、備份及日誌服務器的搭建
[網路安全學習篇30]:Nginx和Tomcat服務的搭建、Nginx+Tomcat負載均衡的實現
[網絡安全學習篇31]:Linux 防火牆 iptables 中 filter(包過濾防火牆)和 nat(路由轉換)詳解(本篇)
下期博文:
目錄
防火牆iptables
iptables 工具
4個功能(表):
- raw 不常配置
- mangle 不常配置
- nat
- filter 過濾
filter
包過濾防火牆
查看filter的詳細規則
- iptables -t filter -nvL
filter的3條鏈
每個表都有專門寫規則的地方(鏈)
INPUT 入站鏈
注:規則是從上向下逐條進行匹配。
FORWARD 轉發規則鏈
(當源地址192.168.1.1 以及目標地址172.16.1.20 都不是本機)
對iptables -t filter -nvl
- watch -n1 iptables -t filter -nvl
OUTPUT 出站鏈
filter規則寫入
格式
- iptables -t filter -I INPUT -p tcp --dport 90 -j ACCEPT
查看filter規則表:
這樣,我們就可以在外部訪問這臺服務器的網站了。
iptables的基本語法
注意事項:
- 不指定表名時,默認指向filter表
- 不指定鏈名時,默認表內所有鏈
- 除非設置鏈的默認策略,負責必須指定匹配條件
- 選項、鏈名、控制類型使用大小字母,其餘均爲小寫
數據包的基本控制類型
- ACCEPT 允許通過
- DOROP 直接丟棄,不給出任何提示
- REJECT 拒絕通過,必要時給出提示
- LOG 記錄日誌信息,然後傳給下一條規則繼續匹配
我們可以實際操作(icmp協議PING)看一下DOROP的REJECT的區別
REJECT
寫入規則
- iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP
DROP
注:相同的規則最上面的生效
添加新的規則
- -A 在鏈的末尾追加一條規則
- -I 在鏈的開頭(或指定序號)插入一條規則
例如:
查看規則列表
- -L 列出所有規則條目
- -n 數字的形式顯示地址、端口信息
- -v 以更詳細的方式顯示規則信息
- -line-number 查看規則時,顯示規則的序號
刪除、清空規則
- -D 刪除鏈內指定序號(或內容)的一條規則
- -F 清空所有的規則
刪除EORWARD鏈中的序號2對應的規則
- iptables -D FORWARD 2
清空FORFARD鏈中所有的規則
- iptables -F FORWARD
當我們清空後,是不是規則就一直沒有了呢
防火牆默認時保存其原來的配置的,只要重啓iptables防火牆的服務,它之前的規則就又會出來了
- service iptables restart
指定默認策略
- -P
注:默認策略的選擇只有DROP和ACCEPT
將FORWARD的默認策略改爲DROP
iptables -P FORWARD DROP
匹配條件
常見的通用匹配條件
- 協議匹配 -p [協議名]
- 地址匹配 -s [源地址] -d [目的地址]
- 接口匹配 -i [入站網卡] 、-o [出站網卡]
常見的隱含匹配條件
- 端口匹配 --sport [源端口]、--dport [目的端口]
- TCP標記端口 --tcp-flags [檢查範圍] [被設置的標記]
- ICMP類型匹配 --icmp-type [ICMP類型]
例如:
ICMP類型 : 8 請求 0 回顯 3 不可達
常見的顯示匹配條件
- 多端口匹配 -m multiport -- sport [源端口列表]、-m multiport -- sport [目的端口列表]
- IP範圍匹配 -m iprange --src-range [IP範圍]
- MAC地址匹配 -m mac --mac-source [MAC地址]
導出備份規則
- iptables-save工具
- 可結合重定向輸出保存到指定文件
將當前狀態保存到一個桌面的文件中
導出:
- iptables-save > /root/Desktop/ipt.txt
導入:
- iptables-restore < /root/Desktop/ipt.txt
將當前狀態保存爲默認規則
- service iptables save
無論你重啓多次,它也會一直存在生效
nat
網絡地址轉換
關於NAT橋接的詳細信息,見我的博客:
[網絡安全學習篇19]:NAT、動態路由及實驗(千峯網絡安全視頻筆記 19 day)
SNAT模式(源地址轉換)
實驗
Linux網關服務器
查看nat表
- iptables -t nat -nvL
- iptables -t nat -A POSTROUTING -p tcp -o eth1 -s 192.168.1.0/24 -j SNAT --to-source 12.34.56.78
寫入成功
配置FORWARD
清空FORWARD即可
- iptables -F FORWARD
PC訪問成功
如果Linux網關服務器ip地址變換,
這裏我們可以看到PC無法訪問
寫入新的規則
- iptables -t nat -A POSTROUTING -p tcp -o eth1 -s 192.168.1.0/24 -j MASQUERADE
寫入成功
可以看到這裏的-A沒有生效
刪除它上面的規則,使其生效
- iptables -t nat -D POSTROUTING 1
PC可以成功訪問了
DNAT模式(目標地址轉換)
實驗
實驗原理:
確認是外網的PC訪問80帶端口
如果不是,就將其扔給filter表的INPUT鏈
注:這裏有個優先級的順序,我們的nat表中的鏈的優先級是高於filterl表中的鏈
Linux網關服務器
設定路由前規則
- iptables -t nat -A PREROUTONG -i eth1 -d 12.34.56.80 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:8080
再結合前面一個實驗我們配置好的路由後的規則
外網PC通過80端口成功訪問內網服務器的8080端口
參考文獻: