天天看點

25個iptables常用示例

格式

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,如需轉載請自行聯系原作者

繼續閱讀