1. 程式人生 > >Linux iptables常用命令

Linux iptables常用命令

原文地址:https://www.cnblogs.com/ilinuxer/p/6364064.html

目錄

0.安裝ipatbles.service

1. 基本操作

檢視 IPTABLES 版本

檢視當前 IPTABLES 規則

檢視幫助

2. iptables 規則中各指令(command)的含義

–APPEND -A

–DELETE -D

–INSERT -I

–REPLACE -R

–LIST -L

–LIST-RULES -S

–FLUSH -F

–ZERO -Z

–NEW -N

–DELETE-CHAIN -X

–POLICY -P

–RENAME-CHAIN -E

3. iptables 規則中各引數的含義

-P 代表協議(PROTOCOL)

-S 代表源地址(SOURCE)

-D 代表目的地址(DESTINATION)

-J 代表跳轉(TARGET)

-I 代表 IN INTERFACE(入站介面)

-O 代表 OUT INTERFACE(出站介面)

4. 其它防火牆引數選項

–SPORT 表示 SOURCE PORT (源埠,用於 -P TCP, 或者 -P UDP)

–DPORT 表示 DESTINATION PORT (目的埠,-P TCP, 或者 -P UDP)

–TCP-FLAGS 表示 TCP FLAGS (用於 -P TCP)

–ICMP-TYPE 表示 ICMP TYPE (ICMP 型別,用於 -P ICMP)

5. 用於僅允許入站 SSH 連線的 iptables 示例

1. 刪除已有的規則

2. 僅允許 SSH

3. 丟棄所有其它包

4. 檢視 SSH 規則和測試



iptables 是 Linux 中重要的訪問控制手段,是俗稱的 Linux 防火牆系統的重要組成部分。這裡記錄了iptables 防火牆規則的一些常用的操作指令。

下面的操作以 CentOS 為基礎介紹,應該對不同的 Linux 發行版都差不多。在 CentOS 5.x 和 6.x 中,iptables 是預設安裝的(如果沒有安裝,先

安裝 iptables 即可)。如果對 iptables 的工作流程不太瞭解,可以先讀讀這篇 iptables 工作流程的通俗理解

下面的操作指的是直接從 Linux 命令列輸入的指令,也可以寫成 .sh 檔案批處理執行。

注意:操作的時候弄清楚指令的作用再執行,操作伺服器請謹慎處理!

0.安裝ipatbles.service

剛剛弄完了Tomcat後,想使用iptables來開放8080埠的時候,設定完之後,想儲存規則,發生錯誤Failed to start ipatbles.service: Unit not found.原因是centos從7開始預設用的是firewalld,這個是基於iptables的,雖然有iptables的核心,但是iptables的服務是沒安裝的。

停止firewalld服務 停止防火牆,並禁用這個服務

sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service


安裝iptables
如果你要改用iptables的話,需要安裝iptables服務:

#安裝
sudo yum install iptables-services
#開啟iptables
sudo systemctl enable iptables
sudo systemctl enable ip6tables
#啟動服務
sudo systemctl start iptables
sudo systemctl start ip6tables

---------------------
作者:狂飆的yellowcong
來源:CSDN
原文:https://blog.csdn.net/yelllowcong/article/details/75945339?utm_source=copy
版權宣告:本文為博主原創文章,轉載請附上博文連結!

1. 基本操作

檢視 IPTABLES 版本

rpm -q iptables

這裡返回的結果類似於 iptables-1.4.7-9.el6.i686

檢視當前 IPTABLES 規則

service iptables status

或者

iptables -L --line-numbers

該命令會以列表的形式顯示出當前使用的 iptables 規則,每一條規則前面的編號可以用來做為其它操作——例如後面的刪除操作——的引數,很有用。顯示的結果類似於,

# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

顯示出該 iptables 中有一個表 filter,其中在 INPUT chain 中有 5 條規則,在 FORWARD chain 中有 1 條規則,在 OUTPUT chain 中沒有規則。

檢視幫助

操作指令也是直接在終端輸入,

iptables --help

可以檢視 iptables 的幫助資訊:

Usage: iptables -[AD] chain rule-specification [options]
iptables -I chain [rulenum] rule-specification [options]
iptables -R chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
iptables -[LS] [chain [rulenum]] [options]
iptables -[FZ] [chain] [options]
iptables -[NX] chain
iptables -E old-chain-name new-chain-name
iptables -P chain target [options]
iptables -h (print this help information)

指令Commands:
Either long(單詞,以 -- 做前導) or short(字母,區分大小寫,以 - 做前導) options are allowed.
--append -A chain Append to chain
--delete -D chain Delete matching rule from chain
--delete -D chain rulenum
Delete rule rulenum (1 = first) from chain
--insert -I chain [rulenum]
Insert in chain as rulenum (default 1=first)
--replace -R chain rulenum
Replace rule rulenum (1 = first) in chain
--list -L [chain [rulenum]]
List the rules in a chain or all chains
--list-rules -S [chain [rulenum]]
Print the rules in a chain or all chains
--flush -F [chain] Delete all rules in chain or all chains
--zero -Z [chain [rulenum]]
Zero counters in chain or all chains
--new -N chain Create a new user-defined chain
--delete-chain
-X [chain] Delete a user-defined chain
--policy -P chain target
Change policy on chain to target
--rename-chain
-E old-chain new-chain
Change chain name, (moving any references)
引數(選項)Options:
[!] --proto -p proto protocol: by number or name, eg. `tcp'
[!] --source -s address[/mask][...]
source specification
[!] --destination -d address[/mask][...]
destination specification
[!] --in-interface -i input name[+]
network interface name ([+] for wildcard)
--jump -j target
target for rule (may load target extension)
--goto -g chain
jump to chain with no return
--match -m match
extended match (may load extension)
--numeric -n numeric output of addresses and ports
[!] --out-interface -o output name[+]
network interface name ([+] for wildcard)
--table -t table table to manipulate (default: `filter')
--verbose -v verbose mode
--line-numbers print line numbers when listing
--exact -x expand numbers (display exact values)
[!] --fragment -f match second or further fragments only
--modprobe= try to insert modules using this command
 --set-counters PKTS BYTES set the counter during insert/append
 [!] --version -V print package version.

2. iptables 規則中各指令(command)的含義

各種指令如下(前面的幫助資訊中列出來的第一大塊內容)。既可以使用長指令(單詞,以 — 做前導),也可以使用短指令字母,區分大小寫,以 – 做前導),例如,

iptables --append chain firewall-rule

等價於,

iptables -A chain firewall-rule

下面介紹各種指令。因為形式都一樣,下面針對 –append -A 作詳細介紹,其它的只介紹其作用。舉例時僅使用短指令。

另外,指令後面所帶的引數/選項,如果以 [ ] 包括,則表示該引數/選項可省略(有預設值)。

–APPEND -A

指令形式,

iptables -A chain firewall-rule 
  • -A chain – 指定規則應該新增到的 chain 的名稱。例如,使用 INPUT 將會把規則新增到預設的 INPUT(入站)鏈的末尾,而使用 OUTPUT 則會將規則新增到出站鏈的末尾。
  • firewall-rule – 包含各種引數選項的防火牆規則,一次一條規則

“-A” 的意思是附加(append),並不是新增(Add)的意思。它是將規則新增到已有的防火牆鏈(chain)的末尾的操作指令。這是特別重要的,因為規則在 iptables 中的位置非常重要,所以千萬要記住, -A 的意思是將規則新增到末尾。因為一般情況下 iptables 中最後一條規則是丟棄所有資料包。如果你已經有了一條這樣的規則,使用 -A 引數新增的規則將會在丟棄規則之後,以至於新規則根本無法起作用。如果要插入到中間位置,需要用 -I 指令。

如果不理解 chain(鏈)的含義,最好先讀讀 iptables fundamentals

–DELETE -D

從 chain 中刪除與指定規則匹配,或指定編號的條目。

形式,

iptables -D chain firewall-rule

表示從 chain 中刪除對應規則 firewall-rule 的那一條目。這種形式刪除規則比較麻煩,通常用下面的形式

iptables -D chain rulenum

刪除 chain 中編號為 rulenum 的那條規則。1 表示第一條。

–INSERT -I

形式,

iptables -I chain [rulenum] firewall-rule

將 firewall-rule 新增為 chain 中的第 rulenum 條規則,原先的第 rulenum 條及以後各條的需要順次 +1。如上面一樣,1 表示該 chain 中第一條。預設為 1,即,如果沒有指定 rulenum 則將該 chain 中第一條規則替換掉。

–REPLACE -R

形式,

iptables -R chain [rulenum] firewall-rule

將 chain 中原來的第 rulenum 條規則替換為 firewall-rule。如果沒有指定 rulenum,則替換該 chain 中第一條。

–LIST -L

形式,

iptables -L [chain [rulenum]]

列出 chain 或者所有 chain(當未指定 chain 名稱時)中的 第 rulenum 條規則或者所有規則(當未指定 rulenum 時)。不過要注意,如果未指定 chain 則不能帶 rulenum 引數。

如果在 -L 後再加上 –line-numbers,則表示在每條規則前面顯示序號。如,

iptables -L --line-numbers

–LIST-RULES -S

形式,

iptables -S [chain [rulenum]]

打印出 chain 或者所有 chain(當未指定 chain 名稱時)中的 第 rulenum 條規則或者所有規則(當未指定 rulenum 時)。不過要注意,如果未指定 chain 則不能帶 rulenum 引數。

–FLUSH -F

形式,

iptables -F [chain]

清空 chain 或所有 chain (當未指定 chain 名稱時)中的規則。

–ZERO -Z

形式,

iptables -Z [chain [rulenum]]

把 chain 或者所有 chain(當未指定 chain 名稱時)的包及位元組的計數器清空。

–NEW -N

形式,

--new -N chain

建立一個名稱為 chain 的新鏈。

–DELETE-CHAIN -X

形式,

iptables -X [chain]

刪除使用者自定義 chain 或者所有使用者自定義 chain(當未指定 chain 名稱時)。該指令不影響預設規則(如 INPUT、OUTPUT、FORWARD 等)。

–POLICY -P

形式,

iptables -P chain target

改變 chain 的策略為 target。

–RENAME-CHAIN -E

形式,

iptables -E old-chain new-chain

將 old-chain 名稱更改為 new-chain。這樣做可以使所有引用 old-chain 的規則失效。

3. iptables 規則中各引數的含義

各種引數如下(前面的幫助資訊中列出來的第二大塊內容)。

-P 代表協議(PROTOCOL)

  • 指明當前規則針對的傳輸協議(如 TCP、UDP、ICMP 等)
  • 可能的引數值有:tcp, udp, icmp, all
  • 使用 “all” 表示適用於所有協議。而如果在規則中不指定 -p 引數,則預設使用 “all” 引數。一般不使用 “all” 這個值,要麼指定某個特定的協議,要麼就指定 -p 引數。
  • -p 的引數值既可以用名稱(如 tcp)也可以用協議對應的數值(如 6 代表 tcp 協議)
  • /etc/protocols 檔案中包含了所有允許的協議名稱和相應數值
  • 也可以用長的引數名 –protocol

-S 代表源地址(SOURCE)

  • 指定資料包的源地址
  • 可以是 ip 地址,或者網路地址,或者主機名(hostname)
  • 例如:-s 192.168.1.101 表示針對特定的 ip 地址
  • 對於網路掩碼,使用 /mask。例如,“-s 192.168.1.0/24″ 表示網路掩碼為 255.255.255.0 的所有 192.168.1.x 地址都匹配。
  • 如果不指定 -s 引數,預設匹配所有源地址
  • 也可以用長引數名 –src 或者 –source

-D 代表目的地址(DESTINATION)

  • 指定資料包的目的地址
  • 使用方式與上面的 “-s” 一樣(不同之處僅在於 -s 指源,而 -d 表示目的地址)
  • 也可以用長引數名 –dst 或者 –destination

-J 代表跳轉(TARGET)

  • j 的意思是 “jump”(跳轉) 到目標
  • 指定當某個資料包滿足該規則的時候的就跳轉到的下一個處理規則,而不再順序執行後面的規則判斷
  • 可能的值有:ACCEPT, DROP, QUEUE, RETURN,分別表示接受、丟棄、進入佇列,返回(跳出,通常是從某個 chain 中跳回到呼叫該 chain 的上層 chain)
  • 也可以跳轉到某個自定義的 chain 中,使用該 chain 的名稱做為跳轉目標

-I 代表 IN INTERFACE(入站介面)

  • i 表示 “input interface”(輸入介面,即,指定網路資料處理的網絡卡,一般 eth0 即表示第一塊有線網絡卡的外網介面,lo 表示區域網介面)
  • 可以直接理解為 “-i” 表示介面。不過,-i 和 -o 都表示介面,-i 表示輸入時的介面,而 -o 特指輸出用的介面。
  • 指定資料包進入 INPUT、FORWARD 和 PREROUTING 鏈時經由的介面。
  • 例如:-i eth0 表示該規則應該針對從 eth0 介面進來的資料包。
  • 如果不指定 -i 引數,則經由系統中所有可用的介面進入的資料包都可以匹配該規則。
  • 也可以使用長引數 –in-interface

-O 代表 OUT INTERFACE(出站介面)

  • o 表示 “output interface”(出站經由介面)
  • 指定傳送出去的資料包進入 INPUT、FORWARD 和 PREROUTING 鏈時經由的介面。
  • 如果不指定 -o 引數,則經由系統中所有可用的介面發出的資料包都可以匹配該規則。
  • 也可以使用長引數 –out-interface

4. 其它防火牆引數選項

上面某些防火牆引數還有屬於它自己的引數選項,可以與其配合使用。下面是一些常用的選項。

要使用這些引數選項,需要指定相應的引數,例如,要使用 “–sport” 選項,應該在規則中指定 “-p tcp” (或者 “-p udp”)等引數。

注意:所有這些選項前面都是 –(2個短橫線 – )。

–SPORT 表示 SOURCE PORT (源埠,用於 -P TCP, 或者 -P UDP)

  • 預設匹配所有埠(未特別指定時)
  • 可以指定埠號(數字),也可以指定埠名稱。例如,預設的 SSH 埠號碼為 22,名稱為 ssh,可以表示為 “–sport 22″ 或者 “–sport ssh”。
  • /etc/services 檔案包含了所有允許的埠名稱和對應的埠號碼。
  • 在規則中使用號碼比使用名稱要好(效率高些)
  • 要匹配一個埠範圍,使用英文半形冒號(:),如 22:100 匹配從 22 到 100 的所有埠號。
  • 也可以使用長名稱 –source-port

–DPORT 表示 DESTINATION PORT (目的埠,-P TCP, 或者 -P UDP)

  • 與 –sport 的用法相同,區別僅在於物件是目的埠
  • 也可以使用長名稱 –destination-port

–TCP-FLAGS 表示 TCP FLAGS (用於 -P TCP)

  • 可以使用英文半形逗號(,)來指定多個 TCP 狀態標識
  • 可能值有:SYN, ACK, FIN, RST, URG, PSH。可以全用,也可以不用。

–ICMP-TYPE 表示 ICMP TYPE (ICMP 型別,用於 -P ICMP)

  • 當使用 icmp 協議 “-p icmp” 的時候,可以使用 “–icmp-type” 特別指定 ICMP 型別
  • 例如,使用 “–icmp-type 0″ 表示 “Echo Reply”,“–icmp-type 8″ 表示 “Echo”。

5. 用於僅允許入站 SSH 連線的 iptables 示例

在瞭解了各種 iptables 引數以及引數選項之後,再來看看下面的例項。

在這個例子中,我們的目標是:僅允許 SSH 連線到伺服器,而其它所有連線都被禁止(包括 ping)。

警告:如果設定不當,可能會使系統無法通過網路訪問,所以在玩 VPS 的時候要特別注意。不過如果是 Linode VPS 的話,它提供了 LISH 介面,可以讓你象訪問本地系統一樣的操作 VPS,倒也不用太擔心,只是有些麻煩而已。如果是別的 VPS,我就不太瞭解了。總之,萬事小心!最好在本地的虛擬機器裡面測試這些玩意兒,否則把自己擋在了 VPS 外面無法通過 SSH 來連線控制檯,那可就不好玩了。

1. 刪除已有的規則

如果已經有了某些規則,需要先備份一下,以後恢復起來也方便:

service iptables save 

iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

預設儲存為 /etc/sysconfig/iptables。我們可以將這個檔案再備份一下,

cp /etc/sysconfig/iptables /etc/sysconfig/iptables.x0

然後清空所有規則,從頭開始,

iptables -F

當我們完成下面的設定後,就只能通過 SSH 連線伺服器,而無法 ping 通或者訪問伺服器上的別的服務(如網站)了。切記不要在生產環境中玩。

2. 僅允許 SSH

下面開始設定使得伺服器只接受 SSH 連線(不限制發起連線的位置),假設 SSH 使用了預設的埠 22.

使用下面的規則,讓伺服器接受所有通過 22 號埠進入的連線。

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

上面的指令中包含了 4 個部分:

  • “-A INPUT” – 表示我們要在 INPUT 鏈的最後增加後面的規則。所以這條規則將會應用於入站的資料包。
  • “-i eth0″ – 表示檢查通過 eth0 介面進入的資料包,看看是否匹配此規則。
  • “-p tcp –dport 22″ – 該規則針對的是 TCP 資料包,並且使用了 -p 引數的選項 “–dport 22″ 來指定該規則針對的是要傳送到伺服器 22 號埠(即 SSH 埠)的資料包。
  • “-j ACCEPT” – 跳轉到 ACCEPT,即接受滿足這些匹配規則的資料包的傳輸。

用普通話來講,上面的規則就是說:所有從 eth0 介面傳入的 SSH 連線都接受。

3. 丟棄所有其它包

指明瞭系統可以接受的連線之後,一般要設定一條“丟棄”規則,將所有那些沒有打算接受的資料包統統拋棄。

這樣的規則應該放到 INPUT 鏈的最末位置。

要丟棄所有資料包(因為在剛才的那條接受 SSH 連線的規則的後面,所以不會影響到剛才那條規則),使用下面的命令新增規則,

iptables -A INPUT -j DROP

4. 檢視 SSH 規則和測試

要檢視剛才新增的規則,使用命令 iptables -L,下面同時給了該命令的輸出結果。

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
DROP       all  --  anywhere             anywhere

從上面的結果可以看到,規則是按照我們輸入的順序排列的,

  • 第一條接受所有傳入的 SSH 連線;
  • 第二條丟棄所有剩下(與第一條不匹配)的資料包。

如果不想一條條的從命令列輸入這些規則命令,最好建立一個指令碼檔案(shell script)來包含所有規則,然後自動執行。例如,

# vi iptables.sh
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP

# sh -x iptables.sh
+ iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
+ iptables -A INPUT -j DROP

# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
DROP       all  --  anywhere             anywhere

看了上面的 iptables 命令及其引數/選項之後,應該就可以看懂我的 VPS 安全策略中的 iptables 設定了。

上面的介紹針對的是 iptables,也就是針對 IPv4 的防火牆。IPv6 的與之類似,不過 IPv6 的防火牆是 ip6tables。©

5.設定chain策略

對於filter table,預設的chain策略為ACCEPT,我們可以通過以下命令修改chain的策略:

iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP

以上命令配置將接收、轉發和發出包均丟棄,施行比較嚴格的包管理。由於接收和發包均被設定為丟棄,當進一步配置其他規則的時候,需要注意針對INPUT和OUTPUT分別配置。當然,如果信任本機器往外發包,以上第三條規則可不必配置。

6.遮蔽指定ip

有時候我們發現某個ip不停的往伺服器發包,這時我們可以使用以下命令,將指定ip發來的包丟棄:

BLOCK_THIS_IP="x.x.x.x" iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

以上命令設定將由x.x.x.x ip發往eth0網口的tcp包丟棄。

7.配置服務項

利用iptables,我們可以對日常用到的服務項進行安全管理,比如設定只能通過指定網段、由指定網口通過SSH連線本機:

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLESHED -j ACCEPT 

iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

若要支援由本機通過SSH連線其他機器,由於在本機埠建立連線,因而還需要設定以下規則:

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state ESTABLESHED -j ACCEPT 

iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

類似的,對於HTTP/HTTPS(80/443)、pop3(110)、rsync(873)、MySQL(3306)等基於tcp連線的服務,也可以參照上述命令配置。

對於基於udp的dns服務,使用以下命令開啟埠服務:

iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT 

iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

8.網口轉發配置

對於用作防火牆或閘道器的伺服器,一個網口連線到公網,其他網口的包轉發到該網口實現內網向公網通訊,假設eth0連線內網,eth1連線公網,配置規則如下:

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

9.埠轉發配置

對於埠,我們也可以運用iptables完成轉發配置:

iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22

以上命令將422埠的包轉發到22埠,因而通過422埠也可進行SSH連線,當然對於422埠,我們也需要像以上“4.配置服務項”一節一樣,配置其支援連線建立的規則。

10.DoS攻擊防範

利用擴充套件模組limit,我們還可以配置iptables規則,實現DoS攻擊防範:

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

--litmit 25/minute 指示每分鐘限制最大連線數為25

--litmit-burst 100 指示當總連線數超過100時,啟動 litmit/minute 限制

11.配置web流量均衡

我們可以將一臺伺服器作為前端伺服器,利用iptables進行流量分發,配置方法如下:

iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:80 

iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.102:80 

iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.103:80

以上配置規則用到nth擴充套件模組,將80埠的流量均衡到三臺伺服器。

12.將丟棄包情況記入日誌

使用LOG目標和syslog服務,我們可以記錄某協議某埠下的收發包情況。拿記錄丟包情況舉例,可以通過以下方式實現。

首先自定義一個chain:

iptables -N LOGGING

其次將所有接收包匯入LOGGING chain中:

iptables -A INPUT -j LOGGING

然後設定日誌字首、日誌級別:

iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7

最後將包倒向DROP,將包丟棄:

iptables -A LOGGING -j DROP

另可以配置syslog.conf檔案,指定iptables的日誌輸出。