首頁 > 軟體

iptables使用總結

2020-06-16 17:55:28

iptables是Linux中的防火牆,在Linux中可以過濾封包。下面簡單的介紹下iptables的應用。

①iptables在Linux中有五個勾點函數(hook function)

PREROUTING:封包進入了主機,但是還沒有被路由的階段。

INPUT:封包進入到主機內部。

FORWARD:封包將由從本主機轉發出去。

POSTROUTING:封包馬上由本級傳送出去。

OUTPUT:封包從本主機傳送出去。

②iptables在Linux中的四個鏈

fileter:可以應用在 INPUT FORWARDOUTPUT上面

nat:可以應用在PREROUTINGPOSTROUTING OUTPUT上面

mangle:可以應用在PREROUTINGPOSTROUTING OUTPUT INPUT FORWARD。

raw:可以應用在PREROUTINGOUTPUT上面。

③iptables通用匹配

-s:指定過濾封包的源地址。

-d:指定過濾封包的目標地址。

-p:指定過濾的協定型別。

-i:指定過濾的封包進入的網絡卡介面。

-o:指定過濾的封包流出的網絡卡介面。

-j:對指定的封包的動作

I:ACCEPT---------接受指定的封包。

II:DROP----------丟棄指定的封包。

III:REJECT-------丟棄指定的封包。

eg:對192.168.5.1存取192.168.5.10的http封包進行丟棄的操作

iptables –A INPUT –s 192.168.5.1 –d192.168.5.10 –p tcp --dport 80 –j DROP

eg:對192.168.5.1存取192.168.5.10的http封包進行接受的動作

iptables –A INPUT –s 192.168.5.1 –d192.168.5.10 –p tcp –doprt 80 –j ACCEPT

iptables –A OUTPUT –s 192.168.5.10 –d192.168.5.1 –p tcp –sport 80 –j ACCEPT

在對接受的封包進行處理的時候,需要注意的是封包一來一回的雙向處理。

對自定義的iptables規則就行儲存

service iptables save

iptables –L –nv  --line-numbers //檢視自定義的防火牆規則。

④管理規則

-A:新增一條規則,新增的位置在規則的末尾。

-I:新增一條規則,如果省略新增的位置,預設的新增的位置在規則的最上方。

-D:刪除一條規則。

-R:對某條指定的規則進行修改。

對鏈進行管理:

-F:清空一條鏈上面的所有的規則。

-P:更改制定鏈的預設規則。

-N:自定義一條新的空鏈。

-X:刪除一個自定義的空鏈。

⑤擴充套件選項使用

eg:對於http的服務請求,192.168.5.1伺服器段進行連線狀態的控制

iptables –A INPUT  -d 192.168.5.1 –p tcp –dport 80 –m state–state NEW,ESTABLISHED –j ACCEPT

iptables –A OUTPUT –s 192.168.5.1 –p tcp–sport 80 –m state –state ESTABLISHED –j ACCEPT

//伺服器對於INPUT伺服器的NEW和ESTABLISHED狀態的報文給予響應,對於OUTPUTon伺服器的報文只響應ESTABLISHED型別的報文。

eg:多埠的相應

iptables –A INPUT –d 192.168.5.1 –p tcp –m–multiport –destination-ports 21,22,80 –m state –state NEW,ESTABLISHED –jACCEPT

//在INPUT鏈上給予21,22,80埠並且是NEW或者是ESTABLISHED的報文放行處理。

eg:編寫規則,一個IP地址的ssh連線最多可以有三個。當超過三個的時候過5分鐘之後在進行連線處理。

iptables –A INPUT –d 192.168.5.1 –p tcp–dport 22 –m connlimit –connlimit-above 3 –j DROP

iptables –A INPUT –d 192.168.5.1 –p tcp–dport 22 –m state –state NEW –m recent –set –name SSH //記錄存取ssh的新的連線,記錄來源IP地址。

iptables –A INPUT –d 192.168.5.1 –p tcp–dport 22 –m state –state NEW –m recent –update –seconds 300 –hitcount 3 –nameSSH –j DROP //當超過三次之後,300秒內不許連線—seconds和—hitcount 必須和—update一起使用。

eg:在請求http的過程中,如果請求的頁面還有H7N9則不允許顯示

iptables –A OUTPUT –d 192.168.5.1 –p tcp–dport 80 –m string –algo kmp –string “H7N9” –j DROP

//注意方向是OUTPUT方向。

⑥nat:

DNAT:目標地址轉換

SNAT:源地址轉換

eg:存取外網時,將192.168.5.0/24地址轉化為172.16.10.1

iptables –A POSTROUTING –s 192.168.5.0/24 –jSNAT –to-source 172.16.10.1

iptables –A POSTROUTING –s 192.168.5.0/24 –jSNAT MASQUERADE //如果需要轉化的地址是一個動態變化的地址,那麼可以使用MASQUERADE來進行自動的轉換。

eg:當存取外放的伺服器172.16.10.1的時候轉換到內網的192.168.5.1進行存取

iptables –A PREROUTING –d 172.16.10.1 –p tcp–dport 80 –j DNAT –to-destination 192.168.5.1

同樣可以進行埠對映

iptables –A PREROUTING –d 172.16.10.1 –p tcp–dport 80 –j DNAT –to-destination 192.168.5.1:8080

⑦在開啟了iptables的過程中。利用lsmod|grepip 可以檢視載入了那些模組。在Linux6.4系統中,在/proc/sys/net/nf_conntrack_max可以檢視iptables允許的最大的連線數量。如果一個伺服器非常繁忙的話,當連線數量超過了組態檔的數量的時候,那麼就會有大量的請求被丟棄。在/proc/net/nf_conntrack中記錄了當前連線的狀態資訊。這些狀態資訊也可以利用iptstate來檢視。

--------------------------------------分割線 --------------------------------------

CentOS 7.0關閉預設防火牆啟用iptables防火牆  http://www.linuxidc.com/Linux/2015-05/117473.htm

iptables使用範例詳解 http://www.linuxidc.com/Linux/2014-03/99159.htm

Linux防火牆iptables詳細教學 http://www.linuxidc.com/Linux/2013-07/87045.htm

iptables的備份、恢復及防火牆指令碼的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm

Linux下防火牆iptables用法規則詳解 http://www.linuxidc.com/Linux/2012-08/67952.htm

--------------------------------------分割線 --------------------------------------

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-08/121549.htm


IT145.com E-mail:sddin#qq.com