Ubuntu配置iptables防火墙

语法:

iptables(选项)(参数)

命令选项输入顺序:

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

表名:

  • raw :高级功能,如:网址过滤。
  • mangle :数据包修改(QOS),用于实现服务质量。
  • nat :地址转换,用于网关路由器。
  • filter :包过滤,用于防火墙规则。

规则链名:

  • INPUT链 :处理输入数据包
  • OUTPUT链 :处理输出数据包
  • FORWARD链 :处理转发数据包
  • PREROUTING链 :用于目标地址转换(DNAT)
  • POSTOUTING链 :用于源地址转换(SNAT)

动作:

  • ACCEPT :接收数据包
  • DROP :丢弃数据包
  • REDIRECT :重定向、映射、透明代理
  • SNAT :源地址转换
  • DNAT :目标地址转换
  • MASQUERADE :IP伪装(NAT),用于ADSL。
  • LOG :日志记录
  • SEMARK : 添加SEMARK标记以供网域内强制访问控制(MAC)

选项:

  • -A :添加防火墙规则
  • -D :删除防火墙规则
  • -I :插入防火墙规则
  • -F :清空防火墙规则
  • -L :列出添加防火墙规则
  • -R :替换防火墙规则
  • -Z :清空防火墙数据表统计信息
  • -P :设置链默认规则

常用参数:

  • -p :匹配协议
  • -s :匹配源地址
  • -d :匹配目标地址
  • -i :匹配入站网卡接口
  • -o :匹配出站网卡接口
  • -j :匹配执行目标(动作)
  • –sport :匹配源端口
  • –dport :匹配目标端口
  • –limit :四配数据表速率
  • –stste :匹配状态(INVALID、ESTABLISHED、NEW、RELATED)
  • –sports :匹配源端口
  • –dports :匹配目标端口
  • –string :匹配应用层字串
  • –src-range :匹配源地址范围
  • –dst-range :匹配目标地址范围
  • –mac-source :匹配源MAC地址

iptables常用命令:

1
2
3
4
5
6
7
8
9
10
11
#允许所有访问22端口:
iptables -I INPUT -p tcp --dport 22 -j ACCEPT

#拒绝所有访问22端口:
iptables -I INPUT -p tcp --dport 22 -j DROP

#只允许10.0.0.2访问22端口:
iptables -I INPUT -p tcp --dport 22 -s 10.0.0.2 -j ACCEPT

#防止DoS攻击(允许最多每分钟25个连接,连接达到100时启动限制)
iptables -I INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

查看规则:

1
2
3
4
#查看INPUT规则并显示行号(生效的规则)
iptables -L INPUT --line-numbers
#或者(备份文件的规则)
vim /etc/network/iptables.up.rules

删除规则:

1
2
3
4
5
#删除INPUT第2条规则
iptables -D INPUT 2

#删除所有规则(谨慎使用)
iptables -F

保存应用规则:

1
2
3
4
5
6
7
#保存规则到iptables.up.rules文件(iptables-apply默认指向该文件)
iptables-save > /etc/network/iptables.up.rules

#应用更新规则(默认加载iptables.up.rules文件规则)
iptables-apply (输入y)
#或者(不建议)
iptables-restore < /etc/network/iptables.up.rules

iptables 持久化:

(否则重启服务器iptables策略失效,需要手动应用iptables.up.rules文件规则)
iptables-persistent持久化iptables规则

注意:

iptables 规则INPUT顺序问题
如果添加在reject-with icmp-host-prohibited后面,将无效