您好,登錄后才能下訂單哦!
Linux系統iptables命令該怎樣使用,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
很多人以為iptables就是防護墻,其實iptables是一個命令行工具,其背后的netfilter才是防火墻,我們只是用iptables操作防火墻。
iptables -A INPUT -s 192.168.109.10 -j DROP:拒絕192.168.109.10主機訪問本服務器;
注意:-A:添加一條規則,默認是加在最后。
注意:“拒絕給192.168.109.10主機提供服務”,最好使用INPUT鏈。使用PREROUTING,也可以滿足要求,但是如果用戶的要求是讓服務器提供轉發功能,添加到PREROUTING鏈中,”轉發”功能也將被拒絕掉。
注意:鏈名要大寫;
注意:-s:指定源地址,可以是IP地址,也可以是網段”192.168.109.10/24″;”-s 為空”,表示拒絕所有;
注意:-j:指定所需要的操作;
注意:拒絕有兩種方式,一種是”REJECT”,還有一種是”DROP”;DROP是不回應,REJECT是拒絕;
注意:iptables -A INPUT -j DROP,表示拒絕所有。不過加規則的時候,不要將自己的ssh給拒絕掉。
iptables -nvL -t mangle:查看mangle表中的防火墻規則;
注意:-t:指定表名,默認情況下是”fliter”表;
注意:-v:查看詳細信息;
pkts:被本機報文所匹配的個數;
prot:放行哪種協議;
opt:額外的選項,–表示沒有;
target:處理機制;
注意:選項中”v”和”L”的順序(V只能在L的前面);
iptables -nvL –line-numbers:查看fliter表中規則的順序;
注意:–line-numbers:查看指定表中的規則的順序;
注意:不指定表,默認情況下就是”fliter”表;
注意:表中的規則是有執行順序的,編號(num)越小,越先執行。只要匹配到結果,就不會往下執行了;
iptables -F:清空”fliter”表中的所有的規則;
注意:-F:表示清空指定表中的所有鏈中的規則;
iptables -I INPUT -s 1.1.1.1 -j DROP:在”fliter”表中的INPUT鏈中,鏈首插入一條規則;
注意:-I:表示在指定的鏈中插入一條規則,可以指定編號;
iptables -R INPUT 1 -s 2.2.2.2 -j REJECT:表示替換第一條規則;
注意:-R,replace,替換指定的規則;
iptables -S:以iptables-save命令格式顯示fliter鏈上的規則;
iptables -A INPUT -s 192.168.109.10 -d 192.168.109.4 -j REJECT:拒絕來自192.168.109.10的主機訪問192.168.109.4的ip地址;
注意:-d:指定目標地址,使規則更加詳細;
iptables -A INPUT -s 192.168.109.10 -d 192.168.109.4,192.168.109.5 -j REJECT:拒絕192.168.109.10的主機訪問192.168.109.4,192.168.109.5這兩個ip地址。
注意:一條命令添加兩條規則;
注意:源地址也可以使用這種方式,快速添加規則;
注意:該命令在規則中的語義的含義,-s、-d屬于并且的關系,即:拒絕源是192.168.109.10的ip,且源是192.168.109.4的訪問;而192.168.109.4和192.168.109.5在邏輯上屬于或者的關系。
iptables -A INPUT -s 192.168.109.10 -p tcp –dport 22 -j REJECT:拒絕192.168.109.10主機使用tcp協議訪問我的所有ip的22端口。
注意:-p:指定協議;可以通過”/etc/protocols”文件查看協議類型;
注意:–dport:指定目標主機的端口號;(拒絕別人鏈接我。)
注意:–sport:指定源主機的端口號;(拒絕我鏈接別人。)
注意:此處,注意區分dport和sport;
iptables -A INPUT -s 192.168.109.10 -p icmp -j REJECT:拒絕來自192.168.109.10主機發來的ping包。
注意:icmp協議沒有端口號,即不屬于tcp也不屬于udp。由于icmp協議的特性,這條命令的結果會造成,192.168.109.10無法ping通自己,自己也無法ping通192.168.109.10主機。
注意:如果要想實現別人無法ping通自己,自己可以ping通別人,需要根據state來判斷。0表示回應包,8表示請求包。
iptables -A INPUT -s 192.168.109.10 -i eth0 -j REJECT:拒絕192.168.109.10主機訪問我的eth0網卡。
注意:-i:加上網卡名,表示報文流入的接口;
注意:-o:加上網卡名,表示報文流出的接口;
iptables -A INPUT ! -s 192.168.109.4 -p tcp –dport 80 -j REJECT:除了192.168.109.4的主機可以訪問我的tcp的80端口,其他的主機全部拒絕;
注意:!:表示”非”;一般情況下,很少使用該方式。
iptables -A INPUT -s 192.168.109.4 -p icmp –icmp-type 8 -j REJECT:拒絕來自192.168.109.10主機發送來的icmp的請求包。即192.168.109.10主機無法ping通我,我可以ping通它。
注意:icmp協議中,ping通需要滿足兩個條件,首先源主機向目標主機發送一個請求包(8),目標主機收到之后,便會返回一個回應包(0)。
注意:-p:指定協議;
注意:–icmp-type:指定ping包的類型。(code可以省略;)
iptables -A INPUT -s 192.168.109.10 -p tcp -m multiport –dports 20:22,80 -j REJECT:拒絕來自192.168.109.10主機發送來的訪問我的20-22,80端口的包。
注意:-m:后面跟模塊名,multiport:以離散形式表示的多端口(最多可以跟15個端口);
注意:–dports:目標端口是多個端口;
注意:使用samba服務測試多端口的話,可能存在問題。想要抓包測試的話,可以使用”tcpdump -i eth0 -nn host 192.168.109.4″;
iptables -A INPUT -m iprange –src-range 192.168.109.1-192.168.109.10 -j REJECT:拒絕192.168.109.1~192.168.109.10范圍內的所有主機的訪問。
注意:iprange:ip范圍的模塊;
注意:–src-range:源地址范圍;
注意:–dsc-range:目標地址的范圍;
iptables -A INPUT -m mac –mac-source 00:0c:29:2f:b1:d6 -j REJECT:拒絕該mac地址的主機訪問本主機的資源。
注意:mac:mac地址模塊;
注意:–mac-source:源主機的mac地址;
iptables -A OUTPUT -p tcp -m string –algo bm –string “han” -j REJECT:拒絕所有主機訪問訪問我的有”han”字符串的報文。
注意:string:字符串模塊;
注意:–algo:指定匹配算法,bm、kmp算法,兩個隨便選一個;
注意:–string:指定要匹配的字符串;
注意:–from offset:開始偏移,–to offset:結束偏移;
注意:添加的是OUTPUT鏈;
iptables -F OUTPUT:清空OUTPUT鏈中的規則;
iptables -A INPUT -m time –weekdays 1,2,3,4,5 –timestart 9:00 –timestop 10:00 -j REJECT:拒絕所有的主機在周一到周五的九點~十點之間,訪問本主機的所有資源;
注意:time:時間模塊;
注意:–datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期
–datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
–timestart hh:mm[:ss] 時間
–timestop hh:mm[:ss]
–monthdays day[,day…] 每個月的幾號
–weekdays day[,day…] 星期幾
注意:centos7中,使用的是UTC時間(北京時間轉化成UTC時間是減8);centos6中使用的是本地時間;
iptables -A INPUT -m connlimit –connlimit-above 2 -j REJECT:并發連接的數量大于兩條的時候,就拒絕;
注意:connlimit:并發連接數量的模塊;
注意:–connlimit-upto n:連接的數量小于等于n時匹配;
注意:–connlimit-above n:連接的數量大于n時匹配;
注意:可以使用ssh服務測試;
iptables -A INPUT -p icmp -m limit –limit 10/minute –limit-burst 5 -j ACCEPT:對于icmp協議,ping通5個包后,便會以每分鐘接收十個的速度匹配。
注意:–limit-burst 5:達到5個之后,便會限制速度;
注意:–limit 10/minute:以每分鐘通過10個的速度匹配;
注意:需要”iptables -A INPUT -p icmp -j REJECT”配合使用。
iptables -N ACCOUNT:在”fliter表中,”創建一個自定義鏈,命名為ACCOUNT;
注意:-N:創建一條鏈;建議,將一些常用的規則放在自定義的鏈中,當使用的時候,將自定義的鏈關聯到INPUT鏈中。
注意:可以將自定義鏈的操作,理解為函數的聲明。將關聯操作,理解為函數的調用;
iptables -A ACCOUNT -s 192.168.109.10,192.168.109.220 -j REJECT:在自定義鏈ACCOUNT中添加一條規則;
iptables -D INPUT 2:刪除INPUT鏈中的第二條;
iptables -A INPUT -j ACCOUNT:將ACCOUNT鏈關聯到INPUT鏈中;
iptables -F ACCOUNT:清空”fliter”表中的ACCOUNT鏈中的規則;
iptables -X ACCOUNT:刪除”fliter”表中ACCOUNRT鏈;
注意:-X:刪除指定的自定義的鏈
iptables -A INPUT -p icmp -m state –state NEW -j REJECT:拒絕使用icmp第一次連接的請求包;
注意:state:state模塊;
注意:NEW:第一連接(注意此處并不是三次握手中的狀態);
iptables -A INPUT -s 192.168.109.10 -j LOG –log-prefix “FROM .10~~”:當192.168.109.10主機訪問我時,將他記錄到/var/log/messige日志文件中,并且,日志中的記錄的前綴的”FROM .10~~”
注意:LOG,記錄日志的target;
注意:–log-prefix:定義日志文件中的記錄的前綴;
iptables -A FORWARD -s 192.168.109.4/24 -d 172.17.253.120/16 -m state –state NEW -j ACCEPT:在FORWARD表中添加一條規則,當源192.168.109.0網段中的主機,目標是172.17.0.0網段中的主機時,狀態是NEW(第一條連接)時,就允許連接;
iptables -A FORWARD -m state –state ESTABLISHED -j ACCEPT:對于狀態是ESTABLISHED的連接,允許通過。
iptables -A FORWARD -j REJECT:拒絕所有連接;
以上三條規則結合起來,可以實現允許192.168.109.0網段中的主機ping通172.17.0.0的主機,但是反過來,ping不通。實現網絡防火墻的功能。
可以通過實驗來驗證:
四臺機器,兩臺192的地址(A、B),一臺172的地址(D),還有一臺充當路由器(C),既有172的地址,又有192的地址。設置好四臺主機的路由表,并開啟C主機的路由轉發功能。然后,執行iptables的命令,添加規則,即可實現功能。
iptables -t nat -R POSTROUTING 1 -s 192.168.109.0/24 -j SNAT –to-source 172.17.250.111:在nat表中的POSTROUTING鏈中,添加一策略,當收到192.168.109.0/24網段的主機訪問的目標地址是任意地址的時候,就將該包的源地址改成172.17.250.111,發送。(SNAT)
注意:要保證防火墻主機上的路由表,有到達目標地址的路徑。
注意:在實驗中的C主機上,執行了該規則后,A主機通過C主機,到達C主機的POSTROUTING鏈的時候,將包的源地址改成C主機的公網地址,然后,發送給D主機。實驗的時候,將D主機上的默認路由刪掉。確保返回的包是將C主機的公網地址,作為目標地址的。
注意:可以在D主機上,安裝一個httpd服務,A訪問D之后,通過查看日志(/var/log/httpd/access_log),來驗證結果。
iptables -t nat -A PREROUTING -d 172.17.250.111 -dport 80 -j DNAT –to-destination 192.168.109.4:8080:當訪問172.17.250.111主機的80端口的時候,將目標端口改成192.168.109.4主機的8080端口。(DNAT)
注意:將192.168.109.4主機上的httpd服務監聽的端口改成8080;
看完上述內容,你們掌握Linux系統iptables命令該怎樣使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。