iptables规则链
- PREROUTE
- INPUT
- FORWARD
- OUTPUT
- POSTROUTING
防火墙策略
- 默认关闭,只有指定数据放行
- 默认开启,只有指定的开启
动作
- DEOP 丢弃
- REJECT 明示拒绝
- ACCEPT 接受
- custom_chain 转向一个自定义的链
- DNAT
- SNAT
- MASQUERADE 源地址伪装
- REDIRECT 端口重定向
- MARK 打防火墙的标志
- RETURN 返回在自定义链执行完毕后返回 来返回原规则链
iptables默认三个表
- filter
- nat
- manage
iptables基本命令
- 这些配置就像用命令配置IP一样,重起就会失去作用,所以我们需要去保存这个配置
/etc/rc.d/init.d/iptables save
- 这样就可以写到
/etc/sysconfig/iptables
文件里了. - 写入后记得把防火墙重起一下,才能起作用.
service iptables restart
iptables -L -n
查询当前iptables的规则
iptables -F
清除预设表fliter中的所有规则链的规则
iptabl e -X (OUTPUT)
可以指定链清理 清除预设表filter中使用者自定链中的规则
设置预设规则
iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP
- 上面命令的意思就是 输入的和转发的 如果不在我们定义的规则里面就丢弃掉
(INPUT FORWARD)
而对于OUTPUT
我们没有过多的限制 如果输出的不在我们的规则里面即通过
添加规则
- 详细限制某个ip访问
iptables -t filter -A OUTPUT -s 192.168.31.210 -d 192.168.31.211 -p tcp --dport 22 -j ACCEPT
参数效果 -t指定表-s指定输入源-d指定接收-p tcp指定协议--dport指定端口-j指定规则
- 开启ping
iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)
- 关闭一下不必要端口
iptables -A OUTPUT -p tcp --sport 31337 -j DROP
这个是可以任何ip访问 只是开放了端口
开启ftp服务
iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 20 -j ACCEPT
- 如果一个ip访问web服务并发20以上就拒绝该连接
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j REJECT
ipset
- ipset安装
yum安装: yum install ipset - 创建一个
ipset
ipset create xxx hash:net
(也可以是hash:ip ,这指的是单个ip,xxx是ipset名称)
ipset
默认可以存储65536
个元素,使用maxelem
指定数量
ipset create blacklist hash:net maxelem 1000000
#黑名单
ipset create whitelist hash:net maxelem 1000000
#白名单
- 查看已创建的
ipset
ipset list
- 加入一个名单
ip
ipset add blacklist 10.60.10.xx
- 去除名单
ip
ipset del blacklist 10.60.10.xx
- 创建防火墙规则,与此同时,
allset
这个IP
集里的ip
都无法访问80
端口(如:CC攻击可用
)
iptables -I INPUT -m set –match-set blacklist src -p tcp -j DROP
iptables -I INPUT -m set –match-set whitelist src -p tcp -j DROP
service iptables save
iptables -I INPUT -m set –match-set setname src -p tcp –destination-port 80 -j DROP
- 将
ipset
规则保存到文件ipset save blacklist -f blacklist.txt
ipset save whitelist -f whitelist.txt
- 删除
ipset
ipset destroy blacklist
ipset destroy whitelist
- 导入
ipset
规则ipset restore -f blacklist.txt
ipset restore -f whitelist.txt
ipset
的一个优势是集合可以动态的修改,即使ipset
的iptables
规则目前已经启动,新加的入ipset
的ip
也生效