格式
iptables [-t 表名] 選項 [鍊名] [條件] [-j 控制類型]
參數
-P 設定預設政策:iptables
-P INPUT (DROP|ACCEPT)
-F 清空規則鍊
-L 檢視規則鍊
-A 在規則鍊的末尾加入新規則
-I num 在規則鍊的頭部加入新規則
-D num 删除某一條規則
-s 比對來源位址IP/MASK,加歎号"!"表示除這個IP外。
-d 比對目标位址
-i 網卡名稱 比對從這塊網卡流入的資料
-o 網卡名稱 比對從這塊網卡流出的資料
-p 比對協定,如tcp,udp,icmp
--dport num 比對目标端口号
--sport num 比對來源端口号
示例
1. 删除已有規則
在開始建立iptables規則之前,你也許需要删除已有規則。指令如下:
2.設定鍊的預設政策
鍊的預設政策設定為”ACCEPT”(接受),若要将INPUT,FORWARD,OUTPUT鍊設定成”DROP”(拒絕),指令如下:
當INPUT鍊和OUTPUT鍊都設定成DROP時,對于每一個防火牆規則,我們都應該定義兩個規則。例如:一個傳入另一個傳出。在下面所有的例子中,由于我們已将DROP設定成INPUT鍊和OUTPUT鍊的預設政策,每種情況我們都将制定兩條規則。當然,如果你相信你的内部使用者,則可以省略上面的最後一行。例如:預設不丢棄所有出站的資料包。在這種情況下,對于每一個防火牆規則要求,你隻需要制定一個規則——隻對進站的資料包制定規則。
3. 阻止指定IP位址
例:丢棄來自IP位址x.x.x.x的包
注:當你在log裡發現來自某ip位址的異常記錄,可以通過此指令暫時阻止該位址的通路以做更深入分析
例:阻止來自IP位址x.x.x.x eth0 tcp的包
4. 允許所有SSH的連接配接請求
例:允許所有來自外部的SSH連接配接請求,即隻允許進入eth0接口,并且目标端口為22的資料包
5. 僅允許來自指定網絡的SSH連接配接請求
例:僅允許來自于192.168.100.0/24域的使用者的ssh連接配接請求
6.允許http和https的連接配接請求
例:允許所有來自web - http的連接配接請求
例:允許所有來自web - https的連接配接請求
7. 使用multiport 将多個規則結合在一起
允許多個端口從外界連入,除了為每個端口都寫一條獨立的規則外,我們可以用multiport将其組合成一條規則。如下所示:
例:允許所有ssh,http,https的流量通路
8. 允許從本地發起的SSH請求
請注意,這與允許ssh連入的規則略有不同。本例在OUTPUT鍊上,我們允許NEW和ESTABLISHED狀态。在INPUT鍊上,我們隻允許ESTABLISHED狀态。ssh連入的規則與之相反。
9. 僅允許從本地發起到一個指定的網絡域的SSH請求
例:僅允許從内部連接配接到網域192.168.100.0/24
10. 允許從本地發起的HTTPS連接配接請求
下面的規則允許輸出安全的網絡流量。如果你想允許使用者通路網際網路,這是非常有必要的。在伺服器上,這些規則能讓你使用wget從外部下載下傳一些檔案
注:對于HTTP web流量的外聯請求,隻需要将上述指令中的端口從443改成80即可。
11. 負載平衡傳入的網絡流量
使用iptables可以實作傳入web流量的負載均衡,我們可以傳入web流量負載平衡使用iptables防火牆規則。
例:使用iptables nth将HTTPS流量負載平衡至三個不同的ip位址。
12. 允許外部主機ping内部主機
13. 允許内部主機ping外部主機
14. 允許回環通路 例:在伺服器上允許127.0.0.1回環通路。
15. 允許内部網絡域外部網絡的通信
防火牆伺服器上的其中一個網卡連接配接到外部,另一個網卡連接配接到内部伺服器,使用以下規則允許内部網絡與外部網絡的通信。此例中,eth1連接配接到外部網絡(網際網路),eth0連接配接到内部網絡(例如:192.168.1.x)。
16. 允許出站的DNS連接配接
17. 允許NIS連接配接
如果你使用NIS管理使用者帳戶,你需要允許NIS連接配接。如果你不允許NIS相關的ypbind連接配接請求,即使SSH連接配接請求已被允許,使用者仍然無法登入。NIS的端口是動态的,先使用指令rpcinfo –p來知道端口号,此例中為853和850端口。
例:允許來自111端口以及ypbind使用端口的連接配接請求
注:當你重新開機ypbind之後端口将不同,上述指令将無效。有兩種解決方案:
1)使用你NIS的靜态IP
2)編寫shell腳本通過“rpcinfo - p”指令自動擷取動态端口号,并在上述iptables規則中使用。
18. 允許來自指定網絡的rsync連接配接請求
例:允許來自網絡192.168.101.0/24的rsync連接配接請求
19. 允許來自指定網絡的MySQL連接配接請求
很多情況下,MySQL資料庫與web服務跑在同一台伺服器上。有時候我們僅希望DBA和開發人員從内部網絡(192.168.100.0/24)直接登入資料庫,可嘗試以下指令:
20. 允許Sendmail, Postfix郵件服務
Sendmail和postfix都使用了25端口,是以我們隻需要允許來自25端口的連接配接請求即可。
21. 允許IMAP和IMAPS 例:允許IMAP/IMAP2流量,端口為143
例:允許IMAPS流量,端口為993
22. 允許POP3和POP3S 例:允許POP3通路
例:允許POP3S通路
23. 防止DoS攻擊
上述例子中: -m limit: 啟用limit擴充 –limit 25/minute: 允許最多每分鐘25個連接配接(根據需求更改)。 –limit-burst 100: 隻有當連接配接達到limit-burst水準(此例為100)時才啟用上述limit/minute限制。
24. 端口轉發 例:将來自422端口的流量全部轉到22端口。
這意味着我們既能通過422端口又能通過22端口進行ssh連接配接。啟用DNAT轉發。
除此之外,還需要允許連接配接到422端口的請求
25. 記錄丢棄的資料表 第一步:建立名為LOGGING的鍊
第二步:将所有來自INPUT鍊中的資料包跳轉到LOGGING鍊中
第三步:為這些包自定義個字首,命名為”IPTables Packet Dropped”
第四步:丢棄這些資料包
iptables -A LOGGING -j DROP
本文轉自Linux就該這麼學部落格園部落格,原文連結:http://www.cnblogs.com/linuxprobe/p/5381519.html,如需轉載請自行聯系原作者