標籤:centos 防火牆 規則配置
開頭:資料來源網上搜尋,整理成自己的筆記形式
一.IPTABLES服務狀態的檢查:
命令:service iptables status
情形1:防火牆服務已安裝,但還未運行
[[email protected] ~]# service iptables status
iptables: Firewall is not running.
情形2:表示防火牆服務已安裝且已開啟,但還是未配置狀態。
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/82/B6/wKiom1de2bTxloGFAAAk7E8EJj0979.png" title="QQ圖片20160614000304.png" alt="wKiom1de2bTxloGFAAAk7E8EJj0979.png" />
情形3:表示防火牆服務尚未安裝
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/82/B4/wKioL1de29XC8sruAAAPNpOynIA219.png" title="QQ圖片20160614000304.png" alt="wKioL1de29XC8sruAAAPNpOynIA219.png" />
二.IPTABLES服務的安裝與開啟等維護方式:
安裝:(此處以yum為例) yum install -y iptables
2.開啟: service iptables start 與此相應的關閉: service iptables stop
三.IPTABLES的基礎配置知識
I:常見的參數:
-A 附加在末尾
-I 插入指定位置
-d 目的地址
-D 刪除某條規則 比如:iptables -D INPUT 8
-n 只顯示IP地址和連接埠號碼,不將ip解析為網域名稱
-R 替換某條規則 比如: iptables -R INPUT 1 -s 192.168.0.1 -j DROP 把第一條規則替換為 指定源IP:192.168.0.1 不允許登入
-i 指定網卡名稱如eth0 #指定進入介面,要在INPUT鏈上定義
-o 指定網卡名稱如eth0 #指定傳出介面,要在OUTPUT鏈上定義
-m 模組調用 模組選項載入iptables功能模組
-L 查看規則的配置資訊 常與 --line-numbers 選項連用, 顯示規則的序號資訊
II.常見的操作:
清空所有規則: iptables -F
情況自訂的所有規則: iptables -X
屏蔽IP段:
形如:
#屏蔽整個段(A類地址)即從192.0.0.1到192.255.255.254,則添加以下規則。
-I INPUT -s 192.0.0.0/8 -j DROP
#封IP段(B類地址)即從192.168.0.1到192.168.255.254,則添加以下規則。
-I INPUT -s 192.168.0.0/16 -j DROP
#封IP段(C類地址)即從192.168.200.1到192.168.200.254,則添加以下規則。
-I INPUT -s 192.168.200.0/24 -j DROP
4.指定物理地址訪問:-m mac --mac-source
形如 iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT
5.匹配資料包的欄位內容: -mstring --string "想要匹配的資料包中字串"
形如:
iptables -A FORWARD -p udp --dport 53 -m string --string "tencent"--algo kmp -j DROP
#通過UDP協議並匹配關鍵字
#--algo指定字串模式比對策略,支援KMP和BM兩種字串搜尋演算法,二者中任意指定一個即可。
6.網口轉寄配置
對於用作防火牆或網關的伺服器,一個網口串連到公網,其他網口的包轉寄到該網口實現內網向公網通訊,假設eth0串連內網,eth1串連公網,配置規則如下:
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
7.連接埠轉寄配置
對於連接埠,我們也可以運用iptables完成轉寄配置:
iptables -t nat -A PREROUTING -p tcp -d 192.168.0.1 --dport 80 -j DNAT --to 192.168.1.1:8080
以上命令將源IP:192.168.0.1的80連接埠的包轉寄到192.168.1.1的8080連接埠
8.指定網卡同時配置連續連接埠規則:iptables -A INPUT -i eth0 -p tcp -s 192.168.140.0/24 --dport 137:139 -j ACCEPT #允許訪問137到139連接埠 備忘:多連接埠的配置另外一種方式:通過逗號分隔連接埠。如 iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -j ACCEPT
四.規則儲存:
1.service iptables save 或 iptables-save
另存新檔的方式: service iptables save > /指定目錄
iptables-save > /指定目錄
備忘: 防火牆規則在沒儲存之前,重啟後是不生效的
2.#添加到自啟動chkconfig
chkconfig iptables on
3.還原規則的方式:
service iptables start 或 iptables-restore < /規則儲存路徑
備忘:注意規則表的儲存方式與還原方式是對應的,採用了什麼方式的儲存,就需要用什麼方式進行還原。
五.進階知識
規則表知識:
五個規則表nat,mangle ,filter,raw,security 通過-t選項指定,預設為 filter。規則表的功能介紹:
nat :擁有 Prerouting 和 postrouting 兩個規則鏈,主要功能為進行一對一、一對多、多對多等網址轉譯工作(SNATDNAT),由於轉譯工作的特性,需進行目的地網址轉譯的封包,就不需要進行來源網址轉譯,反之亦然,因此為了提升改寫封包的速率,在防火牆運作時,每個封包只會經過這個規則表一次。如果我們把封包過濾的規則定義在這個資料表裡,將會造成無法對同一包進行多次比對,因此這個規則表除了作網址轉譯外,請不要做其它用途。
mangle:擁有 Prerouting、FORWARD 和 postrouting 三個規則鏈。
除了進行網址轉譯工作會改寫封包外,在某些特殊應用可能也必須去改寫封包(TTL、TOS)或者是設定 MARK(將封包作記號,以進行後續的過濾),這時就必須將這些工作定義在 mangle 規則中,由於使用率不高,我們不打算在這裡討論 mangle 的用法。
filter:這個規則表是預設規則表,擁有 INPUT、FORWARD 和 OUTPUT 三個規則鏈,這個規則表顧名思義是用來進行封包過濾的處理動作(例如:DROP、 LOG、 ACCEPT 或 REJECT),我們會將基本規則都建立在此規則表中。
nat: 用於佈建封包,raw 中的資料包不會被系統跟蹤。
security: 用於強制存取控制網路規則。
2.規則鏈:
表由鏈組成,鏈是一些按順序排列的規則的列表。
iptables一共有INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING五個規則鏈。對應的規則鏈可表述為:
INPUT:網路資料包流向伺服器
OUTPUT:網路資料包從伺服器流出
FORWARD:網路資料包經伺服器路由
PREROUTING, (prerouting, pre-route,預路由, 到達前)網路資料包到達伺服器時可以被修改
POSTROUTING, (postrouting, post-route,流出前) 網路資料包在即將從伺服器發出時可以被修改
3.規則表中的常用的處理動作:ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK:
ACCEPT: 將封包允許存取,進行完此處理動作後,將不再比對其它規則,直接跳往下一個規則鏈(natostrouting)。
REJECT: 攔阻該封包,並傳送封包通知對方,可以傳送的封包有幾個選擇:ICMP port-unreachable、ICMP echo-reply 或是tcp-reset(這個封包會要求對方關閉聯機),進行完此處理動作後,將不再比對其它規則,直接 中斷過濾程式。簡單樣本如下:
iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
DROP: 丟棄封包不予處理,進行完此處理動作後,將不再比對其它規則,直接中斷過濾程式。
REDIRECT: 將封包重新導向到另一個連接埠(PNAT),進行完此處理動作後,將 會繼續比對其它規則。這個功能可以用來實作通透式porxy 或用來保護 網頁伺服器。例如:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
LOG: 將封包相關訊息紀錄在 /var/log 中,詳細資料可以查閱 /etc/syslog.conf 組態檔,進行完此處理動作後,將會繼續比對其規則。例如:
iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"
SNAT: 改寫封包來源 IP 為某特定 IP 或 IP 範圍,可以指定 port 對應的範圍,進行完此處理動作後,將直接跳往下一個規則(mangleostrouting)。對於snat,不管是幾個地址,必須明確的指定要snat的IP。假如我們的電腦使用ADSL撥號方式上網,那麼外網IP是動態,這時候我們可以考慮使用MASQUERADE 相應的範例如下:
iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000
iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE
MASQUERADE:改寫封包來源 IP 為防火牆 NIC IP,可以指定 port 對應的範圍,進行完此處理動作後,直接跳往下一個規則(mangleostrouting)。這個功能與 SNAT 略有不同,當進行 IP 偽裝時,不需指定要偽裝成哪個 IP,IP 會從網卡直接讀,當使用撥接連線時,IP 通常是由 ISP 公司的 DHCP 伺服器指派的,這個時候 MASQUERADE 特別有用。範例如下:
iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000
DNAT: 改寫封包目的地 IP 為某特定 IP 或 IP 範圍,可以指定 port 對應的範圍,進行完此處理動作後,將會直接跳往下一個規煉(filter:input 或 filter:forward)。範例如下:
iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination
192.168.1.1-192.168.1.10:80-100
MIRROR: 鏡射封包,也就是將來源 IP 與目的地 IP 對調後,將封包送回,進行完此處理動作後,將會中斷過濾程式。
QUEUE: 中斷過濾程式,將封包放入隊列,交給其它程式處理。透過自行開發的處理常式,可以進行其它應用,例如:計算聯機費.......等。
RETURN:結束在目前規則煉中的過濾程式,返回主規則煉繼續過濾,如果把自訂規則煉看成是一個子程式,那麼這個動作,就相當提早結束子程式並返回到主程式中。
MARK: 將封包標上某個代號,以便提供作為後續過濾的條件判斷依據,進行完此處理動作後,將會繼續比對其它規則。範例如下:
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2
4.參考連結:
I:http://beginman.cn/python/2015/09/08/linux-firewall/ II:https://wiki.archlinux.org/index.php/Iptables_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
III:https://wiki.centos.org/zh/HowTos/Network/IPTables
本文出自 “拾掇知識的片段” 部落格,請務必保留此出處http://wyh550.blog.51cto.com/10089932/1789371
centos 防火牆與其一些規則設定