關於iptables的常用技巧方法

2021-08-09 05:37:46 字數 3751 閱讀 3828

iptables的起源發展防火牆的工作原理等這裡我們就不在複述。這裡主要記錄下日常運維過程中關於iptables的命令,引數及實際運用。

iptables -f 清除預設表filter中的所有規則鏈的規則

iptables -x 清除預設表filter中使用者自定鏈中的規則

iptables -p :設定預設策略的

iptables -z:清空鏈,及鏈中預設規則的計數器

iptables -n:new 支援使用者新建乙個鏈

iptables -l -n 檢視規則

-a:追加,在當前鏈的最後新增乙個規則

-i num : 插入,把當前規則插入為第幾條。

-i 3 :插入為第三條
-o 指定資料報傳出的那個網路介面。經常與output鏈配合

-p 指定規則使用的協議

常用 tcp,udp,icmp,all
-s 指定**ip或者網路,可以整個段,可以單個ip

例如 192.168.31.0/24 192.168.31.2

規則前加 !表示取反 例如:

iptables -a input -i eth0 -p tcp --dport=80 -s 192.168.31.0/24 -j accept

這表示允許192.168.31.0網段的機器通過eth0網絡卡訪問本機80埠

iptables -a input -i eth0 -p tcp --dport=80 -s !192.168.31.0/24 -j accept

這就表示不允許了 因為!取反

-d 與-s類似功能

-j 需要執行的動作

主要有accept,drop,reject,redirect
-i 指定資料報進入的那個網絡卡。

如 eth0,lo 此引數一般配合input鏈使用
-m 指定使用的模組

例如: multiport(啟用多埠擴充套件)

state(狀態監測)

limit(限制)

mac(網絡卡實體地址)

.......

-r num:replays替換/修改第幾條規則

格式:iptables -r 3 …………
-d num:刪除,明確指定刪除第幾條規則

-p 指定鏈策略

-t 指定鍊錶

例如允許所有資料流出

iptables -p output accept (不指定-t 預設為filter表)
–sport 限制**的埠號

tcp連線實際是兩個埠建立連線。

所以**埠號就是別人訪問你這個服務時他的埠號

–dport 恰恰相反.也就是你服務的埠號。所以我們基本使用的都是dport

-m state –state 《狀態》

有數種狀態,狀態有:

- invalid:無效的封包,例如資料破損的封包狀態

- established:已經聯機成功的聯機狀態;

- new:想要新建立聯機的封包狀態;

- related:表示這個封包是與我們主機傳送出去的封包有關, 可能是響應封包或者是聯機成功之後的傳送封包!這個狀態很常被設定,因為設定了他之後,只要未來由本機傳送出去的封包,即使我們沒有設定封包的 input 規則,該有關的封包還是可以進入我們主機, 可以簡化相當多的設定規則。

iptables -a input -m state --state established,related -j accept

iptables -p output accept

iptables -a input -i lo -j accept

一般當我們需要建立一些臨時規則時 一般會在開頭加上這3句

這樣的作用:

不影響現有的傳入資料。而且也不用擔心開放了之前拒絕的埠

不影響流出資料

不影響本地lo環路資料(訪問本地127.0.0.1)

常用的規則配置:

允許192.168.31.0網段訪問80埠

iptables -a input -p tcp --dport 80 -s 192.168.31.0/24 -j accept
不允許

iptables -a input -p tcp --dport 80 -s !192.168.31.0/24 -j accept

或iptables -a input -p tcp --dport 80 -s 192.168.31.0/24 -j drop

只允許 mac位址為aa:bb:cc:dd:ee:ff 的機器訪問本地ssh埠

iptables -a input -m mac --mac-source aa:bb:cc:dd:ee:ff -p tcp --dport 22 -j accept
將80埠重定向到8080埠

iptables -t nat -a prerouting -p tcp --dport 80 -j redirect --to-ports 8080
443埠限流,每秒最多150個連線(防ddos)

iptables -a input -i eth0 -p tcp --dport 443  -m limit --limit 150/s  --limit-burst 150 -j accept
防syn_flood

iptables -n syn-flood   (新建一條鏈)

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

iptables -a syn-flood -p tcp -m limit --limit 2/s --limit-burst 50 -j return

iptables -a syn-flood -j drop

單個ip最大併發數50

iptables -i input -p tcp --dport 80 -m connlimit  --connlimit-above 50 -j reject
對訪問本機的22埠進行限制,每個ip每小時只能連線5次,超過的拒接,1小時候重新計算次數

iptables -a input -p tcp --dport 22 -m state --state new -m recent --name sshpool --rcheck --seconds 3600 --hitcount 5 -j drop

iptables -a input -p tcp --dport 22 -m state --state new -m recent --name sshpool --set -j accept

(上面recent規則只適用於預設規則為drop中,如果要適用預設accept的規則,需要--set放前面 並且無-j accept)

預防cc攻擊

tcpdump -tnn dst port 80 -c 100 | awk -f"." '' | sort | uniq -c | sort -n -r |head -20

查詢發包最多的ip

iptables -i input -s ip -j reject

封掉

iptables技巧之常用命令

1,如何實現基於乙個網段的連續的ip的驗證?因為託管機房分配給我們的ip位址通常是連續的,所以會有這個需求 需要使用iprange模組 如下 a input m iprange src range 192.168.6.106 192.168.6.129 j accept 2,備註 2.4核心的ipt...

iptables常用配置

常用的iptables模板 bin sh 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 ...

iptables常用配置

常用的iptables模板 bin sh 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 ...