iptables 使用概要

來源:互聯網
上載者:User

1、添加一條禁用連接埠命令,iptables -A INPUT -p tcp --dport 8702 -j DROP ;

2、刪除所有已經添加的規則:iptables -F

3、網卡重啟。service network restart;

4、service iptables save,儲存對iptables的設定為永久有效,即使已經 service network restart.

5、刪除一條iptables規則,iptables -D INPUT -p tcp --dport 8702 -j DROP。

 

附:

什麼是Iptables?

iptables 是建立在 netfilter
架構基礎上的一個包過濾管理工具,最主要的作用是用來做防火牆或透明代理。Iptables 從 ipchains
發展而來,它的功能更為強大。Iptables 提供以下三種功能:包過濾、NAT(網路位址轉譯)和通用的 pre-route packet
mangling。包過濾:用來過濾包,但是不修改包的內容。Iptables 在包過濾方面相對於 ipchians
的主要優點是速度更快,使用更方便。NAT:NAT 可以分為源地址 NAT 和目的地址 NAT。

Iptables
可以追加、插入或刪除包過濾規則。實際上真正執行這些過慮規則的是 netfilter 及其相關模組(如 iptables 模組和 nat
模組)。Netfilter 是 Linux 核心中一個通用架構,它提供了一系列的 “表”(tables),每個表由若干
“鏈”(chains)組成,而每條鏈中可以有一條或數條 “規則”(rule)組成。

系統預設的表為
“filter”,該表中包含了 INPUT、FORWARD 和 OUTPUT 3 個鏈。

每一條鏈中可以有一條或數條規則,每一條
規則都是這樣定義的:如果資料包頭符合這樣的條件,就這樣處理這個資料包。當一個資料包到達一個鏈時,系統就會從第一條規則開始檢查,看是否符合該規則所
定義的條件:
如果滿足,系統將根據該條規則所定義的方法處理該資料包;如果不滿足則繼續檢查下一條規則。最後,如果該資料包不符合該鏈中任一條規則的話,系統就會根據
該鏈預先定義的策略來處理該資料包。

? table,chain,rule

iptables 可以操縱3
個表:filter 表,nat 表,mangle 表。

NAT 和一般的 mangle 用 -t
參數指定要操作哪個表。filter 是預設的表,如果沒有 -t 參數,就預設對 filter 表操作。

Rule
規則:過濾規則,連接埠轉寄規則等,例如:禁止任何機器 ping 我們的伺服器,可以在伺服器上設定一條規則:

iptables -A
INPUT -s ! 127.0.0.1 -p icmp -j DROP

從 –s 開始即是一條規則,-j
前面是規則的條件,-j 開始是規則的行為(目的)。整條命令解釋為,在filter 表中的 INPUT 規則鏈中插入一條規則,所有源地址不為
127.0.0.1 的 icmp 包都被拋棄。

Chain 規則鏈:由一系列規則群組成,每個包順序經過 chain
中的每一條規則。chain 又分為系統 chain和使用者建立的 chain。下面先敘述系統 chain。

filter 表的系統
chain: INPUT,FORWAD,OUTPUT

nat 表的系統 chain:
PREROUTING,POSTROUTING,OUTPUT

mangle 表的系統 chain:
PREROUTING,OUTPUT

每條系統 chain
在確定的位置被檢查。比如在包過濾中,所有的目的地址為本地的包,則會進入INPUT 規則鏈,而從本地出去的包會進入 OUTPUT 規則鏈。


有的 table 和 chain 開機時都為空白,設定 iptables 的方法就是在合適的 table 和系統 chain 中添相應的規則。

--------------------------------------------------------------

IPTABLES 文法:

表: iptables從其使用的三個表(filter、nat、mangle)而得名,
對包過濾只使用 filter 表, filter還是預設表,無需顯示說明.

操作命令: 即添加、刪除、更新等。

鏈:
對於包過濾可以針對filter表中的INPUT、OUTPUT、FORWARD鏈,也可以操作使用者自訂的鏈。

規則匹配器:可以指定
各種規則匹配,如IP地址、連接埠、包類型等。

目標動作:當規則匹配一個包時,真正要執行的任務,常用的有:

ACCEPT
允許包通過

DROP 丟棄包

一些擴充的目標還有:

REJECT
拒絕包,丟棄包同時給寄件者發送沒有接受的通知

LOG 包有關資訊記錄到日誌

TOS 改寫包的TOS值


使FORWARD規則能夠生效,可使用下面2種方法的某種:

[root@rhlinux root]# vi
/proc/sys/net/ipv4/ip_forward
[root@rhlinux root]# echo "1" >
/proc/sys/net/ipv4/ip_forward

[root@rhlinux root]# vi
/etc/sysconfig/network
[root@rhlinux root]# echo "FORWARD_IPV4=true"
> /etc/sysconfig/network

--------------------------------------------------------

iptables文法可以簡化為下面的形式:

iptables [-t table] CMD [chain]
[rule-matcher] [-j target]

--------------------------------------------------------

常用操作命令:

-A 或 -append 在所選鏈尾加入一條或多條規則

-D 或
-delete 在所選鏈尾部刪除一條或者多條規則

-R 或 -replace 在所選鏈中替換一條匹配規則

-I 或
-insert 以給出的規則號在所選鏈中插入一條或者多條規則. 如果規則號為1,即在鏈頭部.

-L 或 -list
列出指定鏈中的所有規則,如果沒有指定鏈,將列出鏈中的所有規則.

-F 或 -flush 清除指定鏈和表中的所由規則,
假如不指定鏈,那麼所有鏈都將被清空.

-N 或 -new-chain 以指定名建立一條新的使用者自訂鏈,不能與已有鏈名相同.

-X
或 -delete-chain 刪除指定的使用者定義簾,必需保證鏈中的規則都不在使用時才能刪除,若沒有指定鏈,則刪除所有使用者鏈.

-P
或 -policy
為永久簾指定預設規則(內建鏈策略),使用者定義簾沒有預設規則,預設規則也使規則鏈中的最後一條規則,用-L顯示時它在第一行顯示.

-C
或 -check 檢查給定的包是否與指定鏈的規則相匹配.

-Z 或 -zero
將指定簾中所由的規則包位元組(BYTE)計數器清零.

-h 顯示協助資訊.

-------------------------------------------------------------

常用匹配規則器:

-p , [!] protocol 指出要匹配的協議,可以是tcp, udp, icmp,
all, 首碼!為邏輯非,表示除該協議外的所有協議.

-s [!] address[/mask] 指定源地址或者位址範圍.

-sport
[!] port[:port] 指定源連接埠號碼或範圍,可以用連接埠號碼也可以用/ETC/SERVICES檔案中的名子.

-d [!]
address[/mask] 指定目的地址或者位址範圍.

-dport [!] port[:port]
指定目的連接埠號碼或範圍,可以用連接埠號碼也可以用/ETC/SERVICES檔案中的名子.

-icmp-type [!]
typename 指定匹配規則的ICMP資訊類型(可以使用 iptables -p icmp -h 查看有效ICMP類型名)

-i
[!] interface name[+]
匹配單獨或某種類型的介面,此參數忽略時,預設符合所有介面,介面可以使用"!"來匹配捕食指定介面來的包.參數interface是介面名,如
eth0, eht1,
ppp0等,指定一個目前不存在的介面是完全合法的,規則直到介面工作時才起作用,折中指定對於PPP等類似串連是非常有用的."+"表示匹配所有此類型
介面.該選項只針對於INPUT,FORWARD和PREROUTING鏈是合法的.

-o [!] interface
name[+] 匹配規則的對外網路介面,該選項只針對於OUTPUT,FORWARD,POSTROUTING鏈是合法的.

[!]
--syn 僅僅匹配設定了SYN位, 清除了ACK, FIN位的TCP包.
這些包表示請求初始化的TCP串連.阻止從介面來的這樣的包將會阻止外來的TCP串連請求.但輸出的TCP串連請求將不受影響.這個參數僅僅當協議類型設
置為了TCP才能使用. 此參數可以使用"!"標誌匹配已存在的返回包,一般用於限制網路流量,即只允許已有的,向外發送的串連所返回的包.

----------------------------------------------------------

如何制定永久規則集:

/etc/sysconfig/iptables 檔案是 iptables
守護進程調用的預設規則集檔案.

可以使用以下命令儲存執行過的IPTABLES命令:

/sbin/iptables-save
> /etc/sysconfig/iptables

要恢複原來的規則庫,可以使用:

/sbin/iptables-restore
< /etc/sysconfig/iptables

iptables命令和route等命令一樣,重啟之後就會恢複,所以:

[root@rhlinux root]# service iptables save
將當前規則儲存到
/etc/sysconfig/iptables: [ 確定 ]

令一種方法是 /etc/rc.d/init.d/iptables
是IPTABLES的啟動指令碼,所以:

[root@rhlinux root]#
/etc/rc.d/init.d/iptables save
將當前規則儲存到 /etc/sysconfig/iptables: [
確定 ]

以上幾種方法只使用某種即可.

若要自訂指令碼,可直接使用iptables命令編寫一個規
則指令碼,並在啟動時執行:

例如若規則使用指令檔名/etc/fw/rule,
則可以在/etc/rc.d/rc.local中加入以下代碼:

if [-x /etc/fw/rule]; then
/etc/fw/sule; fi;

這樣每次啟動都執行該規則指令碼,如果用這種方法,建議NTSYSV中停止IPTABLES.

----------------------------------------------------------

執行個體:

鏈基本操作:

[root@rh34 root]# iptables -L -n
(列
出表/鏈中的所有規則,包過濾防火牆預設使用的是filter表,因此使用此命令將列出filter表中所有內容,-n參數可加快顯示速度,也可不加-n
參數。)

[root@rh34 root]# iptables -F
(清除預設表filter中所有規則鏈中的規則)

[root@rh34
root]# iptables -X
(清除預設表filter中使用者自訂鏈中的規則)

[root@rh34
root]# iptables -Z
(將指定鏈規則中的所有包位元組計數器清零)

------------------------------------------------------------

設定鏈的預設策略,預設允許所有,或者丟棄所有:

[root@rh34 root]# iptables -P
INPUT ACCEPT
[root@rh34 root]# iptables -P OUTPUT ACCEPT
[root@rh34
root]# iptables -P FORWARD ACCEPT
(以上我們在不同方向設定預設允許策略,若丟棄則應是DROP,嚴格意
義上防火牆應該是DROP然後再允許特定)

---------------------------------------------------------------

向鏈中添加規則,下面的例子是開放指定網路介面(信任介面時比較實用):

[root@rh34 root]#
iptables -A INPUT -i eth1 -j ACCEPT
[root@rh34 root]# iptables -A
OUTPUT -o eth1 -j ACCEPT
[root@rh34 root]# iptables -A FORWARD -i
eth1 -j ACCEPT
[root@rh34 root]# iptables -A FORWARD -o eth1 -j
ACCEPT

--------------------------------------------------------------

使用使用者自訂鏈:

[root@rh34 root]# iptables -N brus
(建立一個用
戶自訂名叫brus的鏈)

[root@rh34 root]# iptables -A brus -s 0/0 -d 0/0
-p icmp -j DROP
(在此鏈中設定了一條規則)

[root@rh34 root]# iptables -A
INPUT -s 0/0 -d 0/0 -j brus
(向預設的INPUT鏈添加一條規則,使所有包都由brus自訂鏈處理)

----------------------------------------------------------------

基本匹配規則執行個體:

匹配協議:

iptables -A INPUT -p tcp
(指
定匹配協議為TCP)

iptables -A INPUT -p ! tcp
(指定匹配TCP以外的協議)


配地址:

iptables -A INPUT -s 192.168.1.1
(匹配主機)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.