如果你是一名系統管理員或者開發人員,那麼一定會涉及到iptables,而/etc/sysconfig/iptables就是iptables的配置文件,本篇文章就從多個方面對其進行詳細的闡述。
一、文件結構
首先,我們來看一下這個文件的結構:
# Generated by iptables-save v1.4.21 on Thu Nov 12 18:06:14 2015 *mangle # mangle表 :PREROUTING ACCEPT [37252064:27810940639] :INPUT ACCEPT [2572727:495785847] :FORWARD ACCEPT [34664836:27213642408] :OUTPUT ACCEPT [800121:260735656] :POSTROUTING ACCEPT [35466240:53167302970] -A PREROUTING -p tcp -m tcp --dport 80 -j TOS --set-tos Maximize-Delay COMMIT # Completed on Thu Nov 12 18:06:14 2015 # Generated by iptables-save v1.4.21 on Thu Nov 12 18:06:14 2015 *filter # filter表 :INPUT ACCEPT [2572727:495785847] :FORWARD ACCEPT [34664836:27213642408] :OUTPUT ACCEPT [800121:260735656] -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Thu Nov 12 18:06:14 2015 # Generated by iptables-save v1.4.21 on Thu Nov 12 18:06:14 2015 *nat # nat表 :PREROUTING ACCEPT [1219495:92669159] :INPUT ACCEPT [201:9725] :OUTPUT ACCEPT [388:32374] :POSTROUTING ACCEPT [388:32374] COMMIT # Completed on Thu Nov 12 18:06:14 2015
其中,文件中有三個表,分別是:
- mangle表:處理數據包的信息,如TOS、QoS等。
- filter表:過濾數據包,處理轉發數據包。
- nat表:進行網路地址轉換。
每個表中都有對應的鏈,iptables會依次按表、鏈處理數據包。
二、配置文件說明
1. 表示注釋
配置文件中,使用#表示注釋。
2. 表示表和鏈
iptables中最常見的的關鍵字除了表示注釋的#之外,就是表示表和鏈的關鍵字。
格式:*table name
table name為表名,常見的有三個:mangle、nat、filter,表示其他進程、網路地址轉換、過濾。
在表名下方是鏈。格式::chain name action [parameters]
chain name為鏈名,action為操作,parameters為參數。
其中,鏈名是使用自定義名稱,操作為ACCEPT、DROP、REJECT等操作用於匹配、操作數據包,參數根據具體使用情況決定。
3. 表示規則
iptables中的規則有兩個關鍵字:-A和-I。
-A表示追加規則(append),即在鏈末尾添加新規則。
-I表示插入規則(insert),即在鏈首部插入新規則。
規則格式:
-A chain[-i|-o] [-s source/][–sport sport][:d [i [p protocol] [–dport dport]]] [-j target]
其中,[-i|-o]可選參數指定輸入和輸出介面。[-s source/][–sport sport][:d [i [p protocol] [–dport dport]]]用來指定來或去目的地IP地址/埠號,protocol表示協議。[-j target]指定匹配規則後對應的操作,如ACCEPT、DROP等。
三、實例
1. 允許本地訪問
配置文件內容:
# 允許本地訪問 -A INPUT -i lo -j ACCEPT
-A表示追加規則,INPUT表示過濾表中的輸入鏈。
此處表示訪問本機網路介面的數據包,因為規則中指定了-i lo,所以這個規則只允許從本地訪問。
如果要禁止本地訪問,可以將-j ACCEPT改成-j DROP。
2. 允許ICMP協議包的進入
配置文件內容:
# 允許ICMP協議包 -A INPUT -p icmp -j ACCEPT
-p表示篩選協議(protocol),輸入心跳數據包的協議是ICMP,-j ACCEPT表示通過。
如果要關閉ICMP協議包的進入,可以將-j ACCEPT改成-j DROP。
3. 允許SSH遠程連接
配置文件內容:
# 允許SSH -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-p tcp表示規則為TCP協議。–dport 22表示埠為22(SSH默認埠),-j ACCEPT表示此數據包允許通過。
如果要禁止SSH遠程連接,可以將-j ACCEPT改成-j DROP。
總結
以上就是iptables的主要配置格式和用法,此外iptables還有很多其他的使用和配置方式,如標記、跟蹤、鏈特性等,需要根據具體情況使用。
總之,掌握iptables的基本配置和規則將會對系統運維和安全有很大幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/279418.html