站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

IPTables-Linux Firewall

前言

在玩 IPTables 以前我們必須先了解一下,您所下的 iptables 防火牆規則對封包進行過濾、封包處理、封包狀態變更、NAT、封包 Qos...等,這些工作其實是核心 (kernel) 層級 Netfilter 在處理的,而 iptables 只是一個使用者端的工具讓您方便對 Netfilter 操作而以,以下是對於玩 iptables 時必須先了解的名詞及相關常用指令。

Netfilter 五種封包處理規則

必須注意的是 INPUT 及 Forward 處理封包的路徑是不同的,也就是說 Forward 處理的封包會略過 INPUT 及 OUTPUT 規則

Netfilter 三種過瀘規則鏈(chain)

Netfilter 四種封包狀態(NEW、INVALID、RELATED、ESTABLISHED)

IPTables 封包處理政策 (Policy) 及 目標 (Target)

IPTables 指令參數

處理 iptables 規則時常用到如下參數

處理 iptables 規則鏈(chain)時常用到如下參數

查看目前 iptables 規則時常用到如下參數

實作環境

安裝及設定

步驟1.修改 iptables 設定檔

iptables 主要設定檔位於 /etc/sysconfig/iptables 當系統重開機且設定開機自動啟動時,系統便會讀取此檔案並套用設定的防火牆規則,你可以把預設的防火牆規則拿來該改即可,你可以手動下 iptables 規則然後在 save 我個人的習慣是直接把規則寫在 /etc/sysconfig/iptables 內。

規則語法如下

 [-io 網路介面] [-p 協定] [-m 模組] [-s 來源] [-d 目的地] [-j 政策]

以下為一個很簡單的防火牆規則範例,只允許 SSH Service 可連接該主機

 *filter
 :INPUT DROP [0:0]
 :FORWARD DROP [0:0]
 :OUTPUT ACCEPT [0:0]
 -A INPUT -i lo -j ACCEPT                                     //pass Loopback
 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT      //keep state
 -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT           //pass icmp protocol
 -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT                 //pass ssh
 COMMIT

步驟2.設定開機自動啟動 iptables 服務

確定 iptables 服務是否開機會自動啟動 (ntsysv or setup)

 #chkconfig --list |grep iptables
 iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off

常用的 iptables 服務參數

 /etc/rc.d/init.d/iptables start           //啟動 iptables 服務
                           stop            //停止 iptables 服務
                           restart         //重新啟動 iptables 服務
                           status          //查看目前 iptables 規則
                           save            //將目前規則存入 iptables 設定檔

重新啟動 iptables 服務

 #/etc/rc.d/init.d/iptables restart
 Flushing firewall rules:                                   [  OK  ]
 Setting chains to policy ACCEPT: filter                    [  OK  ]
 Unloading iptables modules:                                [  OK  ]
 Applying iptables firewall rules:                          [  OK  ]
 Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]

查看我們剛才設定的規則

 #/etc/rc.d/init.d/iptables status
 Table: filter
 Chain INPUT (policy DROP)
 num  target     prot opt source               destination
 1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
 2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
 3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
 4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
 Chain FORWARD (policy DROP)
 num  target     prot opt source               destination
 Chain OUTPUT (policy ACCEPT)
 num  target     prot opt source               destination

補充:Web Server 防火牆規則設定

一個 Web Server 的基本 iptables 設定內容如下 (Service SSH、HTTP),我將 INPUT Policy 定義為 DROP 也就是說 eth0 網卡預設行為是丟棄封包、不回應要求、不傳送失敗訊息除新定義的 -j ACCEPT 之外。

 #cat /etc/sysconfig/iptables
 *filter                                                      //定義使用的 chain
 :INPUT DROP [0:0]                                            //定義 INPUT Policy
 :FORWARD DROP [0:0]                                          //定義 FORWARD Policy
 :OUTPUT ACCEPT [0:0]                                         //定義 OUTPUT Policy
 -A INPUT -i lo -j ACCEPT                                     //pass Loopback
 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT      //keep state
 -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT           //pass icmp protocol
 -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT                 //pass ssh
 -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT                 //pass http
 COMMIT

參考

[鳥哥的 Linux 私房菜 -- Linux 防火牆與 NAT 主機]

[对几次输入ssh密码错误的IP进行iptables drop - 操作系统研究 - 信息安全专业论坛 - 4v1.org]

[網中人 - SSH 的一些安全小技巧]

[Jamyy's Weblog: 以 Fail2ban 封鎖嘗試侵入的 IP]

[iptables 入門]

[Linux iptables - iptables 封包過瀘規則]

[上奇科技出版-LINUX FIREWALL技術手札]

[學貫行銷-RED HAT LINUX 網路及系統管理指南]

Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com