Linux設置防火墻iptables
Linux設置防火墻iptables【艾娜】
查看防火墻規則:iptables -L -n
添加防火墻規則:vi /etc/sysconfig/iptables
打開防火墻:systemctl start iptables.service
關閉防火墻:systemctl stop iptables.service
重啟防火墻:systemctl restart iptables
語法
iptables [-t 表] [操作命令] [鏈] [規則號碼] [匹配條件] [-j 匹配動作]
表
filter:確定是否放行該數據包(過濾)
nat:修改數據包中的源、目標地址或端口
mangle:為數據包設置標記
raw:確實是否對該數據包進行狀態跟蹤
security:是否定義強制訪問控制規則
鏈
INPUT: 處理入站數據包
OUTPUT:處理出站數據包
FORWARD: 處理轉發數據包
PREROUTING:在進行路由選擇前處理數據包
POSTROUTING:在進行路由選擇后處理數據包
操作命令
-A <鏈名> (APPEND,追加一條規則并放到最后)
iptables -t filter -A INPUT -j DROP
在 filter 表的INPUT鏈里追加一條規則作為最后一條規則,匹配所有訪問本機IP 的數據包,匹配到的丟棄。
-I <鏈名> [規則號碼] (INSERT,插入一條規則)
iptables -I INPUT -j DROP
在 filter 表的INPUT鏈里插入一條規則(插入成第 1條)
iptables -I INPUT 3 -j DROP
在 filter 表的INPUT鏈里插入一條規則(插入成第 3條)
【注意: -t filter可不寫,不寫則自動默認是 filter 表;-I鏈名 [規則號碼],如果不寫規則號碼,則默認是1;確保規則號碼 ≤(已有規則數 + 1),否則報錯】
-D <鏈名> <規則號碼 |具體規則內容> (DELETE,刪除一條規則)
iptables -D INPUT 3(按號碼匹配)
刪除filter 表INPUT鏈中的第三條規則
iptables -D INPUT -s 192.168.0.1 -j DROP(按內容匹配)
刪除filter 表INPUT鏈中內容為“-s 192.168.0.1 -j DROP”的規則
【注意:若規則列表中有多條相同的規則時,按內容匹配只刪除序號最小的一條;按號碼匹配刪除時,確保規則號碼 ≤ 已有規則數,否則報錯;按內容匹配刪除時,確保規則存在,否則報錯】
-R <鏈名> <規則號碼> <具體規則內容> (REPLACE,替換一條規則)
iptables -R INPUT 3 -j ACCEPT
將原來編號為3 的規則內容替換為“-j ACCEPT”
【注意:確保規則號碼 ≤ 已有規則數,否則報錯】
-P <鏈名> <動作> (POLICY,設置某個鏈的默認規則)
iptables -P INPUT DROP
設置 filter 表INPUT鏈的默認規則是 DROP
【當數據包沒有被規則列表里的任何規則匹配到時,按此默認規則處理。動作前面不能加–j,這也是唯一一種匹配動作前面不加–j的情況】
-F [鏈名] (FLUSH,清空規則)
iptables -F INPUT
清空 filter 表INPUT鏈中的所有規則
iptables -t nat -F PREROUTING
清空 nat 表PREROUTING 鏈中的所有規則
【注意:-F僅僅是清空鏈中規則,并不影響 -P設置的默認規則;-P設置了 DROP后,使用 -F一定要小心;如果不寫鏈名,默認清空某表里所有鏈里的所有規則】
-L <鏈名> (LIST,列出規則)
v:顯示詳細信息,包括每條規則的匹配包數量和匹配字節數
x:在v 的基礎上,禁止自動單位換算(K、M)
n:只顯示IP 地址和端口號碼,不顯示域名和服務名稱
iptables -L
粗略列出 filter 表所有鏈及所有規則
iptables -t nat-vnL
用詳細方式列出nat表所有鏈的所有規則,只顯示 IP地址和端口號
iptables -t nat-vxnLPREROUTING
用詳細方式列出nat表 PREROUTING 鏈的所有規則以及詳細數字
匹配條件
-i <匹配數據進入的網絡接口>
-i eth0 匹配是否從網絡接口eth0 進來
-i ppp0 匹配是否從網絡接口ppp0 進來
-o <匹配數據流出的網絡接口>
-o eth0
-o ppp0
-s <匹配來源地址> 可以是 IP、NET、DOMAIN,也可空(任何地址)
-s 192.168.0.1 匹配來自 192.168.0.1的數據包
-s 192.168.1.0/24 匹配來自 192.168.1.0/24網絡的數據包
-s 192.168.0.0/16 匹配來自 192.168.0.0/16網絡的數據包
-d <匹配目的地址> 可以是 IP、NET、DOMAIN,也可以空
-d 202.106.0.20 匹配去往 202.106.0.20的數據包
-d 202.106.0.0/16 匹配去往 202.106.0.0/16網絡的數據包
-d www.abc.com 匹配去往域名 www.abc.com的數據包
-p <匹配協議類型> 可以是 TCP、UDP、ICMP等,也可為空
-p tcp
-p udp
--sport <匹配源端口> 可以是個別端口,可以是端口范圍
--sport 1000 匹配源端口是1000 的數據包
--sport 1000:3000 匹配源端口是 1000-3000的數據包(含1000、3000)
--sport :3000 匹配源端口是3000 以下的數據包(含3000)
--sport 1000: 匹配源端口是1000 以上的數據包(含1000)
--dport <匹配目的端口> 可以是個別端口,可以是端口范圍
--dport 80 匹配源端口是80 的數據包
--dport 6000:8000 匹配源端口是6000-8000 的數據包(含6000、8000)
--dport :3000 匹配源端口是3000 以下的數據包(含3000)
--dport 1000: 匹配源端口是1000 以上的數據包(含1000)
【注意:--sport 和 --dport 必須配合 -p 參數使用】
動作
-j ACCEPT 通過,允許數據包通過本鏈而不攔截它
iptables -A INPUT -j ACCEPT
允許所有訪問本機 IP的數據包通過
-j DROP 丟棄,阻止數據包通過本鏈而丟棄它
iptables -A FORWARD -s 192.168.80.39 -j DROP
阻止來源地址為 192.168.80.39的數據包通過本機
-j DNAT --to IP(nat 表的PREROUTING鏈)
目的地址轉換,DNAT 支持轉換為單IP,也支持轉換到一組連續的IP 地址
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1
把從 ppp0進來的要訪問 TCP/80的數據包目的地址改為 192.168.0.1
-j SNAT --to IP(nat 表的POSTROUTING 鏈)
源地址轉換,SNAT 支持轉換為單IP,也支持轉換一組連續的IP 地址
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
將內網 192.168.0.0/24的源地址修改為 1.1.1.1
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10
將內網 192.168.0.0/24的源地址修改為一個地址池里的 IP
-j MASQUERADE 動態源地址轉換(動態 IP的情況下使用)
iptables -t nat -APOSTROUTING -s 192.168.0.0/24 -j MASQUERADE
將源地址是 192.168.0.0/24的數據包進行地址偽裝
附加模塊
-m state --state <狀態>
狀態:NEW、RELATED、ESTABLISHED、INVALID
NEW:新連接請求
ESTABLISHED:已建立的連接
RELATED:相關聯的連接,當前連接是一個新請求,但附屬于某個已存在的連接
INVALID:無法識別的連接
UNTRACKED:未追蹤的連接
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-m mac --mac-source MAC 匹配某個 MAC地址
iptables -A FORWARD -m --mac-source xx:xx:xx:xx:xx:xx -j DROPs
阻斷來自某MAC 地址的數據包通過本機
【注意:報文經過路由后,數據包中原有的mac 信息會被替換,所以在路由后的iptables中使用 mac模塊是沒有意義的】
-m limit --limit <匹配速率> 用一定速率去匹配數據包
iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT
iptables -A FORWARD -d 192.168.0.1 -j DROP
【注意:limit英語上看是限制的意思,但實際上只是按一定速率去匹配而已,要想限制的話后面要再跟一條DROP】
-m multiport <--sports|--dports|--ports> 端口1[,端口2,..,端口n]
一次性匹配多個端口,可以區分源端口,目的端口或不指定端口
iptables -A INPUT -p tcp -m multiport --dports 21,22,25,80,110 -j ACCEPT
【注意:必須與 -p參數一起使用】
所有鏈名必須大寫
INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING
所有表名必須小寫
filter/nat/mangle
所有動作必須大寫
ACCEPT/DROP/SNAT/DNAT/MASQUERADE
所有匹配必須小寫
-s/-d/-m <module_name>/-p
-------------------------------
新上的美國站群服務器8C 現貨 限量特價 速定! cn2限量一人3臺
E5 16G 1T 8C 232IP
E5*2 32G 1T 8C 232IP
E5*2 32G 2T 8C 232IP
E5*2 32G 3T 8C 232IP
美國站群服務器 特價歡迎聯系在線客服 QQ 4001886560 482986990