Linux設置防火墻iptables
Linux設置防火墻iptables【艾娜】
查看(kan)防火墻規則(ze):iptables -L -n
添(tian)加防火墻規則:vi /etc/sysconfig/iptables
打(da)開(kai)防火墻:systemctl start iptables.service
關閉防火(huo)墻:systemctl stop iptables.service
重(zhong)啟防火墻(qiang):systemctl restart iptables
語法
iptables [-t 表] [操作命(ming)令] [鏈] [規則號碼] [匹(pi)配(pei)(pei)條件] [-j 匹(pi)配(pei)(pei)動作]
表
filter:確定是否放(fang)行該數據包(過濾(lv))
nat:修改數據(ju)包中(zhong)的源、目標地址或端(duan)口
mangle:為數據(ju)包設置(zhi)標記(ji)
raw:確實(shi)是(shi)否對該(gai)數據包進(jin)行(xing)狀態跟蹤
security:是否定義強(qiang)制訪(fang)問(wen)控制規則
鏈
INPUT: 處理(li)入站數據(ju)包
OUTPUT:處(chu)理出站(zhan)數據包
FORWARD: 處理轉發數據包
PREROUTING:在進行路由選擇(ze)前處理(li)數據包
POSTROUTING:在(zai)進行路(lu)由選(xuan)擇后(hou)處理數據包
操作命令
-A <鏈名> (APPEND,追加一條規則并放到(dao)最后)
iptables -t filter -A INPUT -j DROP
在(zai) filter 表的(de)INPUT鏈(lian)里(li)追加一(yi)條規則作(zuo)為最(zui)后一(yi)條規則,匹(pi)配所有訪問本機IP 的(de)數據包,匹(pi)配到的(de)丟棄(qi)。
-I <鏈名> [規則號碼] (INSERT,插入一條規則(ze))
iptables -I INPUT -j DROP
在 filter 表(biao)的(de)INPUT鏈里插入一條(tiao)規則(插入成(cheng)第 1條(tiao))
iptables -I INPUT 3 -j DROP
在 filter 表的(de)INPUT鏈里插入一(yi)條規則(ze)(插入成第(di) 3條)
【注(zhu)意: -t filter可不寫,不寫則自動默認是(shi) filter 表;-I鏈名 [規(gui)則號(hao)碼(ma)(ma)],如果不寫規(gui)則號(hao)碼(ma)(ma),則默認是(shi)1;確保規(gui)則號(hao)碼(ma)(ma) ≤(已有規(gui)則數 + 1),否則報錯】
-D <鏈名> <規則號碼 |具體規則內容> (DELETE,刪(shan)除(chu)一條(tiao)規則(ze))
iptables -D INPUT 3(按號碼匹配(pei))
刪除filter 表INPUT鏈中(zhong)的第三條規則
iptables -D INPUT -s 192.168.0.1 -j DROP(按內容匹(pi)配)
刪除filter 表(biao)INPUT鏈中內容(rong)為(wei)“-s 192.168.0.1 -j DROP”的規則
【注意:若規(gui)(gui)則(ze)(ze)列(lie)表中有多(duo)條相(xiang)同的規(gui)(gui)則(ze)(ze)時,按(an)內容(rong)匹配(pei)只刪(shan)除(chu)(chu)序號最(zui)小的一條;按(an)號碼匹配(pei)刪(shan)除(chu)(chu)時,確保規(gui)(gui)則(ze)(ze)號碼 ≤ 已有規(gui)(gui)則(ze)(ze)數,否則(ze)(ze)報(bao)錯;按(an)內容(rong)匹配(pei)刪(shan)除(chu)(chu)時,確保規(gui)(gui)則(ze)(ze)存在(zai),否則(ze)(ze)報(bao)錯】
-R <鏈名> <規則號碼> <具體規則內容> (REPLACE,替(ti)換一條規(gui)則)
iptables -R INPUT 3 -j ACCEPT
將原來編號為3 的(de)規則內容(rong)替換為“-j ACCEPT”
【注(zhu)意(yi):確保(bao)規則(ze)(ze)號碼(ma) ≤ 已有規則(ze)(ze)數,否則(ze)(ze)報錯】
-P <鏈名> <動作> (POLICY,設置(zhi)某個鏈的默認規則)
iptables -P INPUT DROP
設置 filter 表(biao)INPUT鏈的默(mo)認(ren)規(gui)則(ze)是(shi) DROP
【當數據包(bao)沒(mei)有被規(gui)(gui)則列表里(li)的(de)任何規(gui)(gui)則匹配(pei)到時(shi),按此默認規(gui)(gui)則處理。動(dong)作(zuo)(zuo)前(qian)(qian)面(mian)不能加(jia)–j,這(zhe)也是唯一一種匹配(pei)動(dong)作(zuo)(zuo)前(qian)(qian)面(mian)不加(jia)–j的(de)情況】
-F [鏈名] (FLUSH,清空規(gui)則)
iptables -F INPUT
清空 filter 表INPUT鏈中(zhong)的所有規則
iptables -t nat -F PREROUTING
清空(kong) nat 表(biao)PREROUTING 鏈中的所(suo)有規則
【注意:-F僅(jin)僅(jin)是清(qing)空(kong)鏈中(zhong)規(gui)則,并不影響 -P設置(zhi)的默認規(gui)則;-P設置(zhi)了 DROP后,使用 -F一定要小心;如果不寫鏈名,默認清(qing)空(kong)某表里所有鏈里的所有規(gui)則】
-L <鏈名> (LIST,列出規則)
v:顯示詳細信息,包括(kuo)每條規(gui)則的匹配(pei)包數(shu)量和匹配(pei)字(zi)節數(shu)
x:在v 的基礎上,禁止(zhi)自(zi)動單(dan)位換算(K、M)
n:只顯(xian)示IP 地址和端(duan)口號碼,不顯(xian)示域名(ming)和服務名(ming)稱(cheng)
iptables -L
粗略列出 filter 表所(suo)有鏈及(ji)所(suo)有規則
iptables -t nat-vnL
用詳細方(fang)式列出nat表所有鏈的(de)所有規則,只(zhi)顯示 IP地址和端口號
iptables -t nat-vxnLPREROUTING
用詳細方式列出nat表 PREROUTING 鏈的所有規(gui)則以及詳細數字
匹配條件
-i <匹配數據進入的網絡接口>
-i eth0 匹配是否從網(wang)絡接口eth0 進來
-i ppp0 匹配是否從網絡接(jie)口ppp0 進來
-o <匹配數據流出的網絡接口>
-o eth0
-o ppp0
-s <匹配來源地址> 可(ke)以是 IP、NET、DOMAIN,也可(ke)空(任何地址)
-s 192.168.0.1 匹配來(lai)自 192.168.0.1的數據(ju)包
-s 192.168.1.0/24 匹配來自 192.168.1.0/24網絡的數(shu)據包
-s 192.168.0.0/16 匹配來(lai)自(zi) 192.168.0.0/16網絡的(de)數(shu)據包(bao)
-d <匹配目的地址> 可以是 IP、NET、DOMAIN,也(ye)可以空
-d 202.106.0.20 匹配去往 202.106.0.20的(de)數據包
-d 202.106.0.0/16 匹(pi)配去往 202.106.0.0/16網絡的數據包
-d www.abc.com 匹配(pei)去往域(yu)名 www.abc.com的數據包
-p <匹配協議類型> 可以(yi)是(shi) TCP、UDP、ICMP等,也可為空
-p tcp
-p udp
--sport <匹配源端口> 可(ke)以(yi)是個別端口,可(ke)以(yi)是端口范圍(wei)
--sport 1000 匹配(pei)源端(duan)口是1000 的數據包
--sport 1000:3000 匹配源端口是 1000-3000的(de)數據包(含1000、3000)
--sport :3000 匹配源端口是3000 以下的數據包(bao)(含3000)
--sport 1000: 匹配(pei)源端口(kou)是1000 以上的數據包(含(han)1000)
--dport <匹配目的端口> 可以(yi)是個別端口,可以(yi)是端口范圍
--dport 80 匹配源端(duan)口是80 的數(shu)據包
--dport 6000:8000 匹(pi)配源端口是6000-8000 的數據包(含6000、8000)
--dport :3000 匹配源端口是3000 以下的數據包(含3000)
--dport 1000: 匹(pi)配源端口是1000 以上的數據包(bao)(含(han)1000)
【注意:--sport 和(he) --dport 必須(xu)配合 -p 參數(shu)使用】
動作
-j ACCEPT 通過,允(yun)許數據(ju)包通過本(ben)鏈而(er)不攔截它(ta)
iptables -A INPUT -j ACCEPT
允許所有訪問本機(ji) IP的數據包通過
-j DROP 丟棄,阻止數據(ju)包通(tong)過本鏈(lian)而丟棄它(ta)
iptables -A FORWARD -s 192.168.80.39 -j DROP
阻止來源地址為 192.168.80.39的數據包通過(guo)本(ben)機
-j DNAT --to IP(nat 表的PREROUTING鏈)
目的地址轉換(huan),DNAT 支(zhi)持轉換(huan)為單IP,也支(zhi)持轉換(huan)到一組連續的IP 地址
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1
把從 ppp0進(jin)來的要訪(fang)問 TCP/80的數據包目的地(di)址改為(wei) 192.168.0.1
-j SNAT --to IP(nat 表的POSTROUTING 鏈(lian))
源(yuan)地(di)址(zhi)轉換,SNAT 支持轉換為單IP,也支持轉換一組連續的IP 地(di)址(zhi)
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
將(jiang)內網 192.168.0.0/24的源(yuan)地址修改為 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的源(yuan)地址修改為一個地址池里(li)的 IP
-j MASQUERADE 動態源(yuan)地址轉換(動態 IP的情況下使用)
iptables -t nat -APOSTROUTING -s 192.168.0.0/24 -j MASQUERADE
將源地址(zhi)是 192.168.0.0/24的數據包(bao)進行地址(zhi)偽裝
附加模塊
-m state --state <狀態>
狀態:NEW、RELATED、ESTABLISHED、INVALID
NEW:新連(lian)接請求
ESTABLISHED:已建(jian)立的連接
RELATED:相關聯(lian)的(de)連(lian)(lian)接,當(dang)前連(lian)(lian)接是一個新請(qing)求,但附屬于某個已存(cun)在的(de)連(lian)(lian)接
INVALID:無(wu)法識別的(de)連接
UNTRACKED:未追蹤的連(lian)接
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
阻斷(duan)來自(zi)某MAC 地址的數據包(bao)通過本(ben)機
【注意(yi):報文經過路(lu)由后,數(shu)據包中(zhong)原有(you)的(de)mac 信息會被替換(huan),所以在路(lu)由后的(de)iptables中(zhong)使用 mac模塊(kuai)是沒有(you)意(yi)義的(de)】
-m limit --limit <匹配速率> 用一(yi)定速率去匹配數據(ju)包
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
【注(zhu)意:limit英(ying)語(yu)上看是限(xian)(xian)制的意思,但實際上只是按(an)一定速率去(qu)匹配而(er)已(yi),要想限(xian)(xian)制的話后面要再跟(gen)一條DROP】
-m multiport <--sports|--dports|--ports> 端口1[,端口2,..,端口n]
一次(ci)性匹配多個端口(kou),可以區分(fen)源(yuan)端口(kou),目的端口(kou)或不指定端口(kou)
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
美國站(zhan)群服務器 特(te)價歡迎聯(lian)系在(zai)線客(ke)服 QQ 4001886560 482986990

