iptables用法

http://www.linuxso.com/linuxpeixun/10332.htmlhtml

 

先查看本機配置linux

 

[html]  view plain  copy
 
 print?
  1. sudo iptables -L -n  

如要從新配置,則先清除已有配置web

[html]  view plain  copy
 
 print?
  1. sudo iptables -F        //清除預設表filter中的全部規則鏈的規則    
  2. sudo iptables -X        //清除預設表filter中使用者自定鏈中的規則  

若是是遠程經過ssh鏈接服務器進行配置,則先加入容許ssh的規則vim

[html]  view plain  copy
 
 print?
  1. sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  

設定預設規則,DROP掉INPUT鏈與FORWARD鏈安全

[html]  view plain  copy
 
 print?
  1. sudo iptables -P INPUT DROP    
  2. sudo iptables -P FORWARD DROP  

 

INPUT鏈規則配置服務器

容許來自於lo接口的數據訪問本機網絡

[html]  view plain  copy
 
 print?
  1. sudo iptables -A INPUT -i lo -j ACCEPT  

lo:loopback,迴環接口,一般對應的IP地址爲127.0.0.1(未開啓以前,本機不能ping通本機)app

容許icmp包經過,也就是容許pingssh

 

[html]  view plain  copy
 
 print?
  1. sudo iptables -A INPUT -p icmp -j ACCEPT  

 

開啓web服務端口tcp

 

[html]  view plain  copy
 
 print?
  1. sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  

FORWARD鏈規則配置

開啓轉發功能,(在作NAT時,FORWARD默認規則是DROP時,必須作)

 

[html]  view plain  copy
 
 print?
  1. sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT    
  2. sudo iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT  

丟棄壞的TCP包

 

[html]  view plain  copy
 
 print?
  1. sudo iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP  

處理IP碎片數量,防止攻擊,容許每秒100個

 

[html]  view plain  copy
 
 print?
  1. sudo iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT  

限制ICMP,容許每秒1個包,限制觸發條件是10個包

 

[html]  view plain  copy
 
 print?
  1. sudo iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT  

保存及調用

 

[html]  view plain  copy
 
 print?
  1. iptables-save > /etc/iptables.rules (可能須要切換至root用戶)  

重啓後會失效,從新調用配置

 

 

[html]  view plain  copy
 
 print?
  1. sudo iptables-restore < /etc/iptables.rules  

設置自動保存與調用

 

 

[html]  view plain  copy
 
 print?
  1. sudo vim /etc/network/interfaces  

[html]  view plain  copy
 
 print?
  1. auto ath0  
  2. iface ath0 inet dhcp  

後面加上

 

 

[html]  view plain  copy
 
 print?
  1. # Auto save and restore iptables rules  
  2. pre-up iptables-restore < /etc/iptables.rules  
  3. post-down iptables-save > /etc/iptables.rules  

解決INPUT DROP後,引發sshd服務DNS反向解析不順,從而致使登陸等待時間過長的問題:

vim /etc/ssh/sshd_config
在最後添加下面一行,關閉 SSH 的 DNS 反解析
UseDNS no
重啓sshd服務
sudo /etc/init.d/ssh restart

 

常見命令:

 

-A, --append 新增規則(追加方式)
-D, --delete 刪除規則
-L, --list 列出某規則鏈中的全部規則 iptables -L INPUT

常見參數:

-p, --protocol 指定協議

-s  --source  源地址
-d, --dst, --destination 指定目的地址
-i, --in-interface 指定入口網卡 iptables -A INPUT -i eth0 (-i eth+ 全部網卡)

--out-interface -o  指定出口網卡 iptables -A INPUT -o eth0 (-i eth+ 全部網卡)
--dport, --destination-port 目的端口
-j 指定對包的處理(ACCEPT、DROP、REJECT、REDIRECT)

 

-A:指定鏈名   
-p:指定協議類型   
-d:指定目標地址   
--dport:指定目標端口(destination port 目的端口)   
--sport:指定源端口(source port 源端口)   

-j:指定動做類型  

 

 

對於防火牆的設置,有兩種策略:一種是所有通信口都容許使用,只是阻止一些咱們知道的不安全的或者容易被利用的口;另一種,則是先屏蔽全部的通信口,而只是容許咱們須要使用的通信端口。

  1. sudo iptables -P INPUT DROP //一旦執行,將立刻阻斷全部進站數據,遠程配置時,注意順序問題(ssh先加入容許)  
  2. sudo iptables -P OUTPUT ACCEPT
  3. sudo iptables -P FORWARD DROP  

注意-P中的P須要大寫,表示Protocol。

能夠看出INPUT,FORWARD兩個鏈採用的是容許什麼包經過,而OUTPUT鏈採用的是不容許什麼包經過。
當超出了IPTABLES裏filter表裏的兩個鏈規則(INPUT、FORWARD)時,不在這兩個規則裏的數據包怎麼處理呢,那就是DROP(放棄)。應該說這樣配置是很安全的,咱們要控制流入數據包。
而對於OUTPUT鏈,也就是流出的包咱們不用作太多限制,而是採起ACCEPT,也就是說,不在這個規則裏的包怎麼辦呢,那就是經過。

 

爲INPUT鏈添加規則

容許icmp包經過,也就是容許ping

sudo iptables -A INPUT -p icmp -j ACCEPT  
 

容許loopback!(否則會致使DNS沒法正常關閉等問題)

sudo iptables -A INPUT -i lo -p all -j ACCEPT

 

對於OUTPUT規則,由於預設的是ACCEPT,因此要添加DROP規則,減小不安全的端口連接。

 
  1. sudo iptables -A OUTPUT -p tcp --sport 31337 -j DROP  
  2. sudo iptables -A OUTPUT -p tcp --dport 31337 -j DROP  

有些特洛伊木馬會掃描端口31337到31340(即黑客語言中的 elite 端口)上的服務。既然合法服務都不使用這些非標準端口來通訊,阻塞這些端口可以有效地減小你的網絡上可能被感染的機器和它們的遠程主服務器進行獨立通訊的機會。

咱們還能夠把規則限制到只容許某個IP:

 
  1. sudo iptables -A INPUT -s 192.168.0.18 -p tcp --dport 22 -j ACCEPT  

這表示只容許192.168.0.18的機器進行SSH鏈接。
若是要容許一個IP段,可使用下面的寫法:

 
  1. sudo iptables -A INPUT -s 192.168.0.1/255 -p tcp --dport 22 -j ACCEPT  

這表示容許192.168.0.1/255IP段的機器進行鏈接。
可是,注意咱們前面已經添加一條規則來容許全部IP鏈接22端口,須要把這條規則刪除掉。

 
  1. sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT  

在下面就是FORWARD鏈,FORWARD鏈的默認規則是DROP,因此咱們就寫須要ACCETP(經過)的鏈,對正在轉發鏈的監控
開啓轉發功能,(在作NAT時,FORWARD默認規則是DROP時,必須作)

 
  1. sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT  
  2. sudo iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT  

丟棄壞的TCP包

 
  1. sudo iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP  

處理IP碎片數量,防止攻擊,容許每秒100個

 
  1. sudo iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT  

設置ICMP包過濾,容許每秒1個包,限制觸發條件是10個包(在前面只容許ICMP包經過,在這裏做限制)

 
    1. sudo iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT 

 

例如我給SSH加放行的語句:   添加input記錄: iptables -A INPUT -p tcp --dport 22 -j ACCEPT   添加output記錄: iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT   

相關文章
相關標籤/搜索