iptables 下載(版本列表/歷史版本):iptables Release of the netfilter/iptables project
html
iptables 表、鏈、規則圖(默認filter表)vim
4 張表的分工:bash
filter 用於過濾,服務器
nat 用於網絡地址轉換,網絡
mangle 用於給數據包作標記以修改分組數據的特定規則,tcp
raw 表則獨立於Netfilter鏈接跟蹤子系統。ide
3 種數據包通過的鏈(chain)ui
iptables 配置端口轉發:端口轉發(Linux/Windows)
清空全部規則
sudo iptables -F sudo iptables -X sudo iptables -t nat -F sudo iptables -t nat -X sudo iptables -t mangle -F sudo iptables -t mangle -X sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT
iptables 常見 target
ACCEPT # 容許數據包經過 DROP # 丟棄數據包 REJECT # 拒絕數據包經過 SNAT # 源地址轉換 MASQUERADE # 地址欺騙,自動化的snat DNAT # 目標地址轉換 REDIRECT # 重定向 LOG # 將數據包信息記錄到 syslog 日誌 QUEUE # 排隊 RETURN # 返回
iptables 進行 url 過濾
# iptables 其實不是真正對 url 進行過濾,只是對傳送的數據包內容進行過濾 # 而 http 頭中含有目標 url # 關於 -m 參數,man iptables 只有幾句簡介, # 詳細信息須要在 man iptables-extensions 裏面進一步查詢 # 開啓 # 過濾掉含有 qq.com 的 url sudo iptables -A OUTPUT -m string --string "qq.com" --algo bm -j DROP # 若是本機是 squid 服務器,能夠經過 INPUT 鏈過濾 sudo iptables -A INPUT -m string --string "qq.com" --algo bm -j DROP # 對於 nat 轉發的內容過濾 sudo iptables -A FORWARD -m string --string "qq.com" --algo bm -j DROP # 查看 sudo iptables -nL --line-numbers # 移除(最後的數字爲加 --line-numbers 參數後 num 顯示的序號) sudo iptables -D OUTPUT 2
移除過濾規則示例
#查看 sudo iptables -t filter -nL --line-numbers #移除。最後的數字爲加 --line-numbers 參數後 num 顯示的序號 sudo iptables -t filter -D FORWARD 1
保存規則以便重啓生效(Ubuntu 16.04)
sudo su iptables-save > /etc/iptables.rules cd /etc/network/if-pre-up.d/ vim iptables #>>> #! /bin/bash #>>> iptables-restore < /etc/iptables.rules chmod +x iptables
sudo iptables -I INPUT -p tcp -j REJECT --reject-with tcp-reset -m connlimit --connlimit-above 20 sudo iptables -I FORWARD -p tcp -j REJECT --reject-with tcp-reset -m connlimit --connlimit-above 10
下一代 Linux 防火牆 nftables
*** walker ***