歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> iptables使用總結

iptables使用總結

日期:2017/2/28 13:59:06   编辑:Linux教程

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

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

Copyright © Linux教程網 All Rights Reserved