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   

相关文章
相关标签/搜索