iptables防火牆詳解(三)規則的匯出、匯入以及編寫防火牆指令碼

來源:互聯網
上載者:User

在前面的文章中我們已經學習了如何編寫一些簡單的防火牆規則了,但是這些規則只是臨時生效的,當防火牆關閉或者伺服器關機,重啟之後所有的規則將會清空。因此我需要將編寫好的防火牆規則儲存下來,以便在防火牆關閉或重新啟動系統後,防火牆規則還可以使用,而不需要再次編寫。

iptables規則的匯出、導人

防火牆規則的批量備份,還原需要用到兩個命令iptables-save、iptables-restore,分別用來儲存和恢複。

1、備份iptables規則

iptables-save命令用來大量匯出iptables防火牆規則,直接執行iptables-save時,將顯示出當前啟用的所有規則,按照raw、mangle、nat、filter表的順序依次列出;若只希望顯示出某一個表,應添加“-t表名”作為命令選項,然後結合重新導向輸入“>”將輸出內容重新導向到某個檔案中。

列如:備份所有表的規則,操作如下:

[root@localhost /]#iptables-save > /opt/iprules_all.txt

或者

[root@localhost /]#service iptables save

後者預設將所有規則儲存到“/etc/sysconfig/iptables”檔案中。

2、恢複iptables規則

iptables-retore命令用來大量匯入Linux防火牆規則,如果已經有使用iptable-save命令匯出的備份檔案,則恢複規則的過程也就是一瞬間的事。與iptables-save命令相對的,iptables-restore命令應結合重新導向輸入來指定備份檔案的位置。

列如:將上所備份的規則恢複到iptables中,操作如下:

[root@localhost /]#iptables-restore < /opt/iprules_all.txt

或者

[root@localhost /]#service iptables start

後者預設將“/etc/sysconfig/iptables”檔案中的內容載入到iptables中,也就是說,如果備份使用的是“service iptables save”那麼恢複的時候就應該使用“service iptables start”。

 

使用iptables服務

開啟或關閉iptables服務使用以下命令

[root@localhost /]#service iptables start //開啟iptables服務

[root@localhost /]#service iptables stop  //關閉iptables服務

前者開啟iptables服務,預設載入“/etc/sysconfig/iptables”中的規則,後者關閉iptables服務,預設將會清空所有的iptables規則。

 

編寫防火牆指令碼

在生產環境中,我很少會一條一條的去編寫iptables規則,最普遍的做法就是,將其寫到shell指令碼,進行一次性處理。常見的防火牆指令碼中,通常包括變數定義、模組載入、/proc調整、規則設定等多個部分,某些簡單的防火牆指令碼可能只包括規則設定部分。下面我們通過一個“網路型”防火牆指令碼執行個體來瞭解如何編寫防火牆指令碼。

[root@loaclhost /]#vim /opt/myipfw.sh

#!/bin/bash

# 1.定義基本變數

INET_IF="eth0"                 //外網介面

INET_IP="218.29.30.31"         //外網介面地址

LAN_IF="eth1"                  //內網介面

LAN_IP="192.168.1.1"           //內網介面地址

LAN_NET="192.168.1.0/24"       //內網網段

LAN_WWW_IP="192.168.1.7"       //網站伺服器的內部地址

IPT="/sbin/iptables"           //iptables命令的路徑

MOD="/sbin/modprobe"           //modprode命令的路徑

CTL="/sbin/sysctl"             //sysctl命令的路徑

# 2.載入核心模組

$MOD ip_tables              //iptables基本模組

$MOD ip_conntrack           //串連跟蹤模組

$MOD ipt_REJECT             //拒絕操作模組

$MOD ipt_LOG                //日誌記錄模組

$MOD ipt_iprange            //支援IP範圍匹配

$MOD xt_tcpudp              //支援tcp、udp協議

$MOD xt_state               //支援狀態匹配

$MOD xt_multiport           //支援多連接埠匹配

$MOD xt_mac                 //支援MAC地址匹配

$MOD ip_nat_ftp             //支援TFP地址轉換

$MOD ip_conntrack_ftp       //支援TFP串連跟蹤  

# 3.調整/porc參數

$CTL -w net.ipv4.ip_forward=1                      //開啟路由轉寄功能

$CTL -w net.ipv4.ip_default_ttl=128                //修改ICMP響應逾時

$CTL -w net.ipv4.icmp_echo_ignore_all=1            //拒絕響應ICMP請求

 

$CTL -w net.ipv4.icmp_echo_ignore_broadcasts       //拒絕響應ICMP廣播

 

$CTL -w net.ipv4.tcp_syncookies=1                  //啟用SYN Cookie機制

 

$CTL -w net.ipv4.tcp_syn_retries=3                 //最大SYN請求重試次數

 

$CTL -w net.ipv4.tcp_synack_retries=3              //最大ACK確認重試次數

 

$CTL -w net.ipv4.tcp_fin_timeout=60                //TCP串連等待逾時

 

$CTL -w net.ipv4.tcp_max_syn_backlog=3200          //SYN請求的隊列長度

# 4.設定具體的防火牆規則

# 4.1刪除自訂鏈、清空已有規則

$IPT -t filter -X       //清空各表中定義的鏈

$IPT -t nat -X

$IPT -t mangel -X

$IPT -t raw -X

$IPT -t filter -F       //清空各表中已有的規則

$IPT -t nat -F

$IPT -t mangel -F

$IPT -t raw -F

# 4.2定義預設規則

$IPT -P INPUT DROP

$IPT -P FORWARD DROP

$IPT -P OUTPUT ACCETP

# 4.3設定nat表中的各種策略

$IPT -t nat -A POSTROUTING -s $LAN_NAT -o $INET_IF -j SNAT --to-source $INET_IP

$IPT -t nat -A PREROUTING -i $INET_IF -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $LAN_WWW_IP

# 4.4設定filter表中的各種規則

$IPT -A INPUT -m state ESTABLISHED,RELATED -j ACCEPT

$IPT -A FORWARD -s $LAN_NET -o $INET_IF -p udp --dport 53 -j ACCEPT

$IPT -A FORWARD -s $LAN_NET -o $INET_IF -p tcp -m multiport --dport 20,21,25,80,110,143,443 -j ACCEPT

$IPT -A FORWARD -d $LAN_NET -i $INET_IF -m state ESTABLISHED,RELATED -j ACCEPT

$IPT -A FORWARD -d $LAN_WWW_IP -p tcp --dport 80 -j ACCEPT

$IPT -A FORWARD -d $LAN_WWW_IP -p tcp --sport 80 -j ACCEPT

 

上述防火牆指令碼執行個體中,僅列出其中最基礎的一些規則。更多具體的規則設定取決於實際的應用需求,還有待大家在生產環境中慢慢去體會,逐漸融會貫通。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.