iptables 详解

强大利器,iptables

Posted by 大可乐 on November 14, 2018

Linux 下配置iptables详解

itables规则链

  1. PREROUTE
  2. INPUT
  3. FORWARD
  4. OUTPUT
  5. POSTROUTING

防火墙策略

  1. 默认关闭,只有指定数据放行
  2. 默认开启,只有指定的开启

动作

  1. DEOP 丢弃
  2. REJECT 明示拒绝
  3. ACCEPT 接受
  4. custom_chain 转向一个自定义的链
  5. DNAT
  6. SNAT
  7. MASQUERADE 源地址伪装
  8. REDIRECT 端口重定向
  9. MARK 打防火墙的标志
  10. RETURN 返回在自定义链执行完毕后返回 来返回原规则链

iptables默认三个表

  1. filter
  2. nat
  3. manage

iptables基本命令

这些配置就像用命令配置IP一样,重起就会失去作用,所以我们需要去保存这个配置 /etc/rc.d/init.d/iptables save, 这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用. service iptables restart

1
2
3
iptables -L -n查询当前iptables的规则
iptables -F 清除预设表fliter中的所有规则链的规则
iptabl e -X  (OUTPUT)可以指定链清理 清除预设表filter中使用者自定链中的规则
  1. 设置预设规则

    1
    2
    3
    
     iptables -P INPUT DROP
     iptables -P OUTPUT  ACCEPT
     iptables -P FORWARD DROP > 上面命令的意思就是 输入的和转发的  如果不在我们定义的规则里面就丢弃掉(INPUT FORWARD) 而对于OUTPUT我们没有过多的限制  如果输出的不在我们的规则里面即通过       
    
  2. 添加规则

详细限制某个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 1.ipset安装

yum安装: yum install ipset 2.创建一个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 3.加入一个名单ip

ipset add blacklist 10.60.10.xx 4.去除名单ip

ipset del blacklist 10.60.10.xx 5.创建防火墙规则,与此同时,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 6.将ipset规则保存到文件

ipset save blacklist -f blacklist.txt ipset save whitelist -f whitelist.txt 7.删除ipset

ipset destroy blacklist ipset destroy whitelist 8.导入ipset规则

ipset restore -f blacklist.txt ipset restore -f whitelist.txt ipset的一个优势是集合可以动态的修改,即使ipset的iptables规则目前已经启动,新加的入ipset的ip也生效