承接上文,上文介紹了iptables的工作原理,四表五鏈,以及基本規(guī)則的增刪改查。本文為上文的拓展,繼續(xù)延申iptables規(guī)則設(shè)置的匹配方式。以及如何備份,還原iptables設(shè)置,還有修改iptables的初始化設(shè)置
內(nèi)容預(yù)知
?1.通用匹配
1.1 協(xié)議匹配?
1.2 地址匹配?
1.3 接口匹配
?2.隱含匹配
?2.1 端口匹配
2.2 TCP標(biāo)志位的匹配?
?2.3 ICMP的類型匹配
?2.3.1? 請求規(guī)則設(shè)置
?2.3.2? 回顯匹配
2.3.3 顯示目的不可達(dá)匹配?
?3.顯示匹配
3.1? 多端口匹配
3.2 IP范圍匹配
3.3 MAC匹配
3.4 狀態(tài)匹配
?4. 備份與還原iptables規(guī)則設(shè)置
?4.1? ?備份iptables設(shè)置
4.2? 一鍵導(dǎo)出,設(shè)置為當(dāng)前防火墻設(shè)置?
4.3 修改iptables的默認(rèn)設(shè)置?
?文章來源地址http://www.zghlxwxcb.cn/news/detail-803612.html
?1.通用匹配
?直接指定目的網(wǎng)段,IP地址,出入站網(wǎng)卡,從而直接對該類主機(jī)進(jìn)行權(quán)限設(shè)置操作
?文章來源:http://www.zghlxwxcb.cn/news/detail-803612.html
?通用的匹配方式一般為三種:
?
協(xié)議匹配 | -p 協(xié)議名 |
地址匹配 | -s 源地址、-d 目的地址 ??梢允荌P、網(wǎng)段、域名、空(任何地址 |
接口匹配 | -i 入站網(wǎng)卡、-o 出站網(wǎng)卡 |
1.1 協(xié)議匹配?
?
上文中運(yùn)用的實(shí)例基本都是協(xié)議匹配完成,協(xié)議匹配中還存在一個(gè)取反匹配?
[root@localhost ~]#iptables -A INPUT ! -p icmp -j ACCEPT
[root@localhost ~]#iptables -nL
測試結(jié)果:
?
?
1.2 地址匹配?
?直接對IP地址,源地址,目的地址或則網(wǎng)段中的主機(jī)進(jìn)行權(quán)限操作
[root@localhost ~]#iptables -A INPUT -s 192.168.73.110 -j DROP
[root@localhost ~]#iptables -nL
?
?測試結(jié)果:
?
?
1.3 接口匹配
可以認(rèn)為是對地址匹配的進(jìn)一步設(shè)置,具體化到防火墻主機(jī)的網(wǎng)卡設(shè)置 。
?
[root@localhost ~]#iptables -A INPUT -i ens33 -s 192.168.73.0/24 -j DROP
?
?
?2.隱含匹配
?要求以特定的協(xié)議匹配作為前提,包括端口、TCP標(biāo)記、ICMP類 型等條件。
?
?2.1 端口匹配
?
--sport | 源端口 |
--dport | 目的端口 |
?
對于端口的指定可以為單一,也可以為一個(gè)范圍
--sport 100? ? 指定的就是匹配源端口100
--sport? 100:200? 就是指定100-200這個(gè)范圍
--sport? 100:? 就是指定100及其100以上的端口
--sport? 200:? 就是指定200及其200以下的源端口?
?
?
[root@localhost ~]#iptables -A INPUT -p tcp --dport 20:21 -j REJECT
?
?
2.2 TCP標(biāo)志位的匹配?
?
這里的防火墻規(guī)則運(yùn)用到了TCP的三次握手規(guī)則,我在之前的博客中有詳細(xì)記錄三次握手:?
?一次性學(xué)會傳輸層協(xié)議相關(guān)內(nèi)容(站在外面干啥呢?點(diǎn)進(jìn)來看看?。站在這別動(dòng),我去給你買橘子的博客-CSDN博客https://blog.csdn.net/qq_62462797/article/details/125764066?spm=1001.2014.3001.5501
?--tcp-flags? ?TCP? ? 標(biāo)記
?
[root@localhost ~]# iptables -I INPUT -p tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN,ACK -j REJECT
[root@localhost ~]# iptables -I OUTPUT -p tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN,ACK -j REJECT
?
?
?
?2.3 ICMP的類型匹配
?
?ICMP類型可以是字符串、數(shù)字代碼:
ICMP類型 | 含義 |
Echo-Request (代碼為8) | 表示請求 |
Echo- -Reply (代碼為0) | 表示回顯 |
Dest ination-Unreachable (代碼為3) | 表示目標(biāo)不可達(dá) |
?--icmp-type ICMP類型
?2.3.1? 請求規(guī)則設(shè)置
[root@localhost ~]#iptables -A INPUT -p icmp --icmp-type 8 -j REJECT
?
其他主機(jī)ping本機(jī)測試:
?
?
?2.3.2? 回顯匹配
?
[root@localhost ~]#iptables -A INPUT -p icmp --icmp-type 0 -j REJECT
其他主機(jī)ping本機(jī)測試:
?
?
如果設(shè)置到出站數(shù)據(jù)包處理鏈(OUTPUT上),就是雙方無法進(jìn)行平命令,且沒有信息的回顯?
?
?
2.3.3 顯示目的不可達(dá)匹配?
?
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
?
?
?3.顯示匹配
?要求以“-m擴(kuò)展模塊”的形式明確指出類型,包括多端口、MAC地址、IP范圍、數(shù)據(jù)包狀態(tài)等條件
?
3.1? 多端口匹配
?
- -m multiport --sport 源端口列表
- -m multiport --dport 目的端口列表
[root@localhost ~]#iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
[root@localhost ~]#iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
?
?
3.2 IP范圍匹配
?
- -m iprange --src-range 源IP范圍
- -m iprange --dst-range 目的IP范圍
[root@localhost ~]# iptables -A FORWARD -p udp -m iprange --src-range 192.168.73.150-192.168.73.200 -j DROP
?
?
3.3 MAC匹配
?
該方式范圍過于有限,且操作不方便,所以并不受行內(nèi)推崇使用?
??-m mac -- -mac- source MAC地址
iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
#禁止來自某MAC地址的數(shù)據(jù)包通過本機(jī)轉(zhuǎn)發(fā)
?
3.4 狀態(tài)匹配
?
格式:
-m state --state連接狀態(tài)
狀態(tài) | 含義 |
NEW | 主機(jī)連接目標(biāo)主機(jī),在目標(biāo)主機(jī)上看到的第一個(gè)想要連接的包 |
ESTABLISHED | 主機(jī)已與目標(biāo)主機(jī)進(jìn)行通信,判斷標(biāo)準(zhǔn)只要目標(biāo)主機(jī)回應(yīng)了第一個(gè)包,就進(jìn)入該狀態(tài) |
RELATED | 主機(jī)已與目標(biāo)主機(jī)進(jìn)行通信,目標(biāo)主機(jī)發(fā)起新的鏈接方式,一般與ESTABLISHED配合使用 |
INVALID | 無效的封包,例如數(shù)據(jù)破損的封包狀態(tài) |
?
[root@localhost ~]# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
[root@localhost ~]#iptables -A INPUT -p tcp -m multiport --dport 443,80,22,21,20,53 -j ACCEPT
[root@localhost ~]#iptables -A INPUT -p udp --dport 53 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@localhost ~]# iptables -P INPUT DROP
?
?
?最后一步設(shè)置為白名單:代表只有通過層層篩選最終能夠建立聯(lián)系的主機(jī),才能夠與本機(jī)進(jìn)行所有端口的連接使用
?
?4. 備份與還原iptables規(guī)則設(shè)置
?我們對iptables命令行中的設(shè)置,都是臨時(shí)設(shè)置,只要遇到服務(wù)器關(guān)機(jī),或者服務(wù)重啟時(shí),所有的設(shè)置都會清空且還原為原本的設(shè)置。為此,我們可以對已經(jīng)測試完畢符合我們需求的防火墻設(shè)置進(jìn)行備份,在必要時(shí),可以一鍵還原
?
?4.1? ?備份iptables設(shè)置
?
格式: iptables-save >/指定的文件?
[root@localhost ~]#iptables-save >/opt/iptables.bak
?
4.2? 一鍵導(dǎo)出,設(shè)置為當(dāng)前防火墻設(shè)置?
?
[root@localhost ~]#iptables-restore </opt/iptables.bak
?
?
4.3 修改iptables的默認(rèn)設(shè)置?
?iptables的默認(rèn)配置文件存在于? ? /etc/sysconfig/iptables
?
?
?若想永久修改只需要將備份的iptables文件重定向輸入到默認(rèn)配置文件(覆蓋)
?
cat /opt/iptables.bak >/etc/sysconfig/iptables
?
或則將當(dāng)前的設(shè)置修改為默認(rèn)配置:
?
iptables-save >/etc/sysconfig/iptables
?注意:無論時(shí)什么要修改方式,謹(jǐn)記修改重要配置先備份的原則,修改iptables默認(rèn)設(shè)置前先進(jìn)行備份
?
?
到了這里,關(guān)于Linux防火墻之iptables(下)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!