1、什么是iptables

  iptables是基于软件的形式实现的一种防火墙的软件工具,主要工作于主机边缘,只能对一台主机起到保护作用。

2、iptables的四表五链

  四表:filter、nat、mangle(做防火墙标记)、raw

  五链:INPUT、OUTPUT、FORWARD、PREROUTING(路由前)、POSTROUTING(路由后)

  filte:INPUT、OUTPUT、FORWARD

  nat:PREROUTING、OUTPUT、POSTROUTING

  mangle:PREOUTING、INPUT、FORWARD、OUTPUT、POSTROUTING

3、配置原则

  1. 将控制强的放在前面,应用访问频繁的也要放在前面
  2. 查询条件
  • IP:SIP、DIP
  • TCP:SPORT、DPORT、FLags
  • UDP:SPORT、DPORT
  • ICMP:ICMP-TYPE
  1. 处理机制
  • DROP(丢弃)
  • REJECT(拒绝,并返回)
  • ACCEPT(允许)
  • SNAT
  • DNAT
  • RETURN(返回)
  • REDIRECT(端口转发)
  • LOG(只记录日志)
  1. 规则样式
  • -t 表 -L 列出 -n 以数值方式显示
  • iptables [-t table ] -N chain  创建一条新的链
  • iptables [-t table ] -X chain  创建一条空规则的链
  • iptables [-t table ] -E old-chain-name new-chain-name  修改链名
  • iptables [-t table] -P chain—name target  为链指定默认策略,修改默认的属性
  • iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
  • -F 清空规则
  • -L list 列出表中的所有规则
  • -n 以数字格式显示ip和端口
  • -v 显示信息
  • pkts:packets,被本规则所有匹配到的报文的个数
  • baytes:被本规则所匹配到的所有报文的大小子和,单位是字节,会执行单位换算
  • target:目标,即处理机制
  • port:协议一般为(TCP|UDP|ICMP)
  • opt:可选项
  • in:数据包的流入端口
  • out:数据包的流出接口
  • scource:源地址
  • destination:目标地址
  • -vv
  • -vvv
  • -x:exactly:精确值,不执行单位换
  • --line-nambers:显示各规则的行号
  • -Z:zero 把规则计数器清零
  • iptables [-t table] {-A|-D} chain rule-specification
  • -A:append,附加一条规则
  • rule-specification   匹配条件 -j 处理机制
  • 匹配条件:
  • -s  匹配原地址,可以IP,也可以网络地址:可以使用!操作符取反,!172.168.0.0/16 相当于 --src,或 --source
  • -d  匹配目标地址,可以IP,也可以网络地址:可以使用!操作符取反,!172.168.0.0/16
  • -p  匹配协议,通常只能使用{TCP|UDP|ICMP}三者之一
  • -i   数据报文流入的接口,通常只用于INPUT,FORWARD和PREROUTING
  • -o  数据报文流出的接口,通常只用OUTPUT,FORWARD和POSTROUTING
  • service iptables save  规则会被保存至/etc/sysconfig/iptables文件中
  • iptables-save > /path/to/some_rulefile 保存iptables至别的位置
  • iptables-restore < /path/to/some_rulefile 从自定义的位置读取并使之生效
  • 规则命令
  • -A:添加
  • -D:删除
  • 插入规则  iptables [-t table] -I chain [rulenum] rule-specification
  • 替换规则(覆盖指定规则) iptables [-t table] -R chain rulenum rule-specification
  • 显示指定链上的规则添加命令 iptables [-t table] -S [chain [rulenum]]
  • 扩展匹配
  • -p tcp
  • --dport m[-n],匹配的目标端口,可以是连续的多个端口
  • --sport:m[-n],匹配的源端口,可以是连续的多个端口
  • --tcp-flags  URG PSH PST SYN ACK FIN
  • -p udp
  • --dport m[-n],匹配的目标端口,可以是连续的多个端口
  • --sport:m[-n],匹配的源端口,可以是连续的多个端口
  • -p icmp
  • icmp-type
  • 显式扩展:必须要明确指定的扩展模块
  • -m 扩展模块名称 --专用选项1 --专用选项2
  • multiport:多端口匹配,一次指定多个离散端口
  •  state:状态追踪

4、配置filter




1 ###############配置filter表防火墙###############
  2 
  3 #清除预设表filter中的所有规则链的规则
  4 iptables -F
  5 
  6 #清除预设表filter中使用者自定链中的规则
  7 iptables -X
  8 
  9 #保存iptables配置
 10 service iptables save
 11 
 12 #重启iptables服务
 13 service iptables restart
 14 
 15 #查看iptables规则
 16 iptables -L -n
 17 
 18 #查看iptables规则文件
 19 cat /etc/sysconfig/iptables
 20 
 21 #设定预设规则
 22 iptables -P INPUT DROP
 23 iptables -P OUTPUT ACCEPT
 24 iptables -P FORWARD DROP
 25 
 26 #开启22端口
 27 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
 28 #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
 29 #关闭22端口 iptables -D INPUT -p tcp --dport 22 -j ACCEPT
 30 
 31 #开启常用端口
 32 iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 33 iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
 34 #iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
 35 #iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT
 36 #iptables -A INPUT -p tcp --dport 20 -j ACCEPT
 37 #iptables -A INPUT -p tcp --dport 21 -j ACCEPT
 38 #iptables -A INPUT -p tcp --dport 10000 -j ACCEPT
 39 #iptables -A INPUT -p tcp --dport 25 -j ACCEPT
 40 #iptables -A INPUT -p tcp --dport 110 -j ACCEPT
 41 #iptables -A INPUT -p udp --dport 53 -j ACCEPT
 42 
 43 #允许ping
 44 iptables -A INPUT -p icmp -j ACCEPT
 45 #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -p icmp -j ACCEPT
 46 
 47 #允许loopback
 48 iptables -A INPUT -i lo -p all -j ACCEPT
 49 #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -o lo -p all -j ACCEPT
 50 
 51 #屏蔽指定ip
 52 #iptables -A INPUT -p tcp -s 192.168.10.1 -j DROP
 53 
 54 #减少不安全的端口连接
 55 #iptables -A OUTPUT -p tcp --sport 31337 -j DROP
 56 #iptables -A OUTPUT -p tcp --dport 31337 -j DROP
 57 
 58 #允许某个IP远程连接
 59 #iptables -A INPUT -s 192.168.10.1 -p tcp --dport 22 -j ACCEPT
 60 #允许某个网段的IP远程连接
 61 iptables -A INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
 62 
 63 #允许指定网段通过、指定网口通过SSH连接本机
 64 #iptables -A INPUT -i eth0 -p tcp -s 192.168.10.0/24 --dport 22 -m state --state NEW,ESTABLESHED -j ACCEPT
 65 #iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
 66 #iptables -A INPUT -i eth0 -p tcp -s 192.168.10.0/24 --dport 22 -m state --state ESTABLESHED -j ACCEPT
 67 #iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
 68 
 69 #开启转发功能
 70 #iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
 71 #iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
 72 
 73 #丢弃坏的TCP包
 74 #iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
 75 
 76 #处理IP碎片数量,防止攻击,允许每秒100个
 77 #iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
 78 
 79 #设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包
 80 #iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
 81 
 82 #丢弃非法连接
 83 iptables -A INPUT -m state --state INVALID -j DROP
 84 iptables -A OUTPUT -m state --state INVALID -j DROP
 85 iptables -A FORWARD -m state --state INVALID -j DROP
 86 
 87 #允许所有已经建立的和相关的连接
 88 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 89 iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 90 
 91 
 92 
 93 ###############配置NAT表防火墙###############
 94 
 95 #查看NAT表规则
 96 iptables -t nat -L
 97 
 98 #清除NAT规则
 99 iptables -F -t nat
100 iptables -X -t nat
101 iptables -Z -t nat
102 
103 #防止外网用内网IP欺骗
104 #iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
105 #iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
106 #iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
107 
108 #禁止与某个IP的所有连接
109 #iptables -t nat -A PREROUTING -d 192.168.10.1 -j DROP
110 
111 #禁用80端口
112 #iptables -t nat -A PREROUTING -p tcp --dport 80 -j DROP
113 
114 #禁用某个IP的80端口
115 #iptables -t nat -A PREROUTING -p tcp --dport 21 -d 192.168.10.1 -j DROP
116 
117 
118 
119 ###############保存iptables文件,重启服务###############
120 
121 #保存iptables规则
122 service iptables save
123 
124 #重启iptables服务
125 service iptables restart


View Code


     源地址转换

iptables -t nat -A POSTROUTING -s 10.60.196.211/32 -j SNAT --to-source 10.60.196.209