iptables常用例項備查(更新中)

2021-09-20 06:08:10 字數 4337 閱讀 7829

iptables -p input drop

iptables -p forward accept

iptables -p output accept

將 input 鏈預設處理策略設定為drop,前提是已經存在一條可以訪問22埠的規則。這裡要說明的是,在新增這類拒絕訪問的規則之前,一定要想好執行完,會不會把自己關在防火牆外面,不然就傻眼了。像下面這句。

iptables -a input -s 172.29.73.23 -j accept

完全信任某一主機,盡量不使用

iptables -i input 2 -i lo -j accept

允許loopback。回環介面是乙個主機內部傳送和接收資料的虛擬裝置介面,應該放行所有資料報。指定插入位置為 2 則之前該編號為 2 規則依次後移。

iptables -a input -j reject --reject-with icmp-host-prohibited

這條規則用在input鏈默沒有drop的情況,作用與-p drop相同,當前面所有的規則都沒匹配時,自然落到這個 reject 上。

類似的forward鏈也可以這麼用:iptables -a forward -j reject --reject-with icmp-host-prohibited

當然,更強的規則是將ouput鏈也設定成drop,這樣一來情況就會複雜很多,如就是傳送名解析請求,也要新增規則iptables -a output -p udp --dport 53 -j accept

正是因為這樣的太過麻煩,所以一般output策略預設為accept。(安全性比較高的系統除外)

首先要開啟埠**器必須先修改核心執行引數ip_forward,開啟**:

# echo 1 > /proc/sys/net/ipv4/ip_forward   //此方法臨時生效

或# vi /ect/sysctl.conf //此方法永久生效

# sysctl -p

本機埠**

# iptables -t nat -a prerouting -p tcp -m tcp --dport 80 -j redirect --to-ports 8080
根據 iptables防火牆原理詳解 可知,實際上在資料報進入input鏈之前,修改了目標位址(埠),於是不難理解在開放埠時需要設定的是放行8080埠,無需考慮80:

# iptables -a input -s 172.29.88.0/24 -p tcp -m state --state new -m tcp --dport 8080 -j accept
此時外部訪問http的80埠便可自動轉到8080(瀏覽器位址列不會變),而且又具有很高的效能,但如果你通過伺服器本地主機的curl或firfox瀏覽器訪問http://localhost:80都是不行(假如你有這樣的奇葩需求),這是因為本地資料報產生的目標位址不對,你需要額外新增這條 output 規則:

iptables -t nat -a output -p tcp --dport 80 -j redirect --to-ports 8080
下面的規則可以達到同樣的效果:

iptables -t nat -a prerouting -p tcp -i eth0 -d $your_host_ip --dport 80 -j dnat --to $your_host_ip:8080

iptables -t nat -a output -p tcp -d $your_host_ip --dport 80 -j dnat --to 127.0.0.1:8080

iptables -t nat -a output -p tcp -d 127.0.0.1 --dport 80 -j dnat --to 127.0.0.1:8080

異機埠**要實現的是所有訪問 192.168.10.100:8000 的請求,**到 172.29.88.56:80 上,在 192.168.10.100 是哪個新增規則:

iptables -t nat -a prerouting -i eth0 -p tcp -d 192.168.10.100 --dport 8000 -j dnat --to-destination 172.29.88.56:80

iptables -t nat -a postrouting -o eth0 -j snat --to-source 192.168.10.100

或者iptables -t nat -a prerouting -d 192.168.10.100 -p tcp --dport 8000 -j dnat --to 172.29.88.56:80

iptables -t nat -a postrouting -d 172.29.88.56 -p tcp --dport 80 -j snat --to-source 192.168.10.100

需要注意的是,如果你的forward鏈預設為drop,上面所有埠**都必須建立在forward鏈允許通行的情況下:

iptables -a forward -d 172.29.88.56 -p tcp --dport 80 -j accept

iptables -a forward -s 172.29.88.56 -p tcp -j accept

為22埠的input包增加日誌功能,插在input的第1個規則前面,為避免日誌資訊塞滿/var/log/message,用--limit限制:

iptables -r input 1 -p tcp --dport 22 -m limit --limit 3/minute --limit-burst 8 -j log
vi /etc/rsyslog.conf編輯日誌配置檔案,新增kern.=notice /var/log/iptables.log,可以將日誌記錄到自定義的檔案中。

service rsyslog restart#重啟日誌服務

syn洪水是攻擊者傳送海量的syn請求到目標伺服器上的一種dos攻擊方法,下面的指令碼用於預防輕量級的dos攻擊:

ipt-tcp.sh

iptables -n syn-flood   (如果您的防火牆預設配置有「 :syn-flood - [0:0] 」則不許要該項,因為重複了)

iptables -a input -p tcp --syn -j syn-flood

iptables -i syn-flood -p tcp -m limit --limit 2/s --limit-burst 5 -j return

iptables -a syn-flood -j reject

# 防止dos太多連線進來,可以允許外網網絡卡每個ip最多15個初始連線,超過的丟棄

# 需要iptables v1.4.19以上版本:iptables -v

iptables -a input -p tcp --syn -i eth0 --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j drop

#用iptables抵禦ddos (引數與上相同)

iptables -a input -p tcp --syn -m limit --limit 5/s --limit-burst 10 -j accept

iptables -a forward -p tcp --syn -m limit --limit 1/s -j accept

iptables -a forward -p icmp -m limit --limit 2/s --limit-burst 10 -j accept

iptables -a input -p icmp --icmp-type 0 -s ! 172.29.73.0/24 -j drop

請參考:linux: 20 iptables examples for new sysadmins、iptables limits connections per ip、iptables預防ddos和cc攻擊配置

參考

iptables 常用規則使用例項

在本文中列出了一些實用的iptables規則,可以參考。1 清空資料報流量 清空鏈 清空規則 使用下面幾個命令可以清空iptables表 使用 t選項選擇哪個表,表有filter,nat mangle三個表 iptables t filter f iptables t filter x iptabl...

9個常用iptables配置例項

iptables命令可用於配置linux的包過濾規則,常用於實現防火牆 nat。咋一看iptables的配置很複雜,掌握規律後,其實用iptables完成指定任務並不難,下面我們通過具體例項,學習iptables的詳細用法。1.刪除已有規則 在新設定iptables規則時,我們一般先確保舊規則被清除...

iptables 配置例項

iptables f iptables x iptables f t mangle iptables t mangle x iptables f t nat iptables t nat x 首先,把三個表清空,把自建的規則清空。iptables p input drop iptables p ou...