9個常用iptables配置實例

jopen 8年前發布 | 96K 次閱讀 路由器/防火墻

iptables命令可用于配置Linux的包過濾規則,常用于實現防火墻、NAT。咋一看iptables的配置很復雜,掌握規律后,其實用iptables完成指定任務并不難,下面我們通過具體實例,學習iptables的詳細用法。

1.刪除已有規則

在新設定iptables規則時,我們一般先確保舊規則被清除,用以下命令清除舊規則:

iptables -F
(or iptables --flush)

 

2.設置chain策略

對于filter table,默認的chain策略為ACCEPT,我們可以通過以下命令修改chain的策略:

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

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

 

3.屏蔽指定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包丟棄。

 

4.配置服務項

利用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

 

5.網口轉發配置

對于用作防火墻或網關的服務器,一個網口連接到公網,其他網口的包轉發到該網口實現內網向公網通信,假設eth0連接內網,eth1連接公網,配置規則如下:

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

 

6.端口轉發配置

對于端口,我們也可以運用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.配置服務項”一節一樣,配置其支持連接建立的規則。

 

7.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 限制

 

8.配置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端口的流量均衡到三臺服務器。

 

9.將丟棄包情況記入日志

使用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的日志輸出。

來自: http://www.cnblogs.com/bangerlee/archive/2013/02/27/2935422.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!