CentOS 7 安装 iptables 防火墙

CentOS 7 默认的防火墙不是 iptables,而是 firewalle。下面介绍如何在 CentOS 7 下安装 iptables 防火墙。还有如果你是用的阿里云云服务器 ECS 的 CentOS 7 系统,默认情况下是不启用 firewalle 防火墙的,所以可以跳过下面关闭 firewalle 防火墙的步骤。

安装 iptable iptable-service

  1. # 先检查是否安装了 iptables
  2. service iptables status
  3. # 安装 iptables
  4. yum install -y iptables
  5. # 升级 iptables
  6. yum update iptables
  7. # 安装 iptables-services
  8. yum install iptables-services

禁用/停止自带的 firewalld 服务

  1. # 停止 firewalld 服务
  2. systemctl stop firewalld
  3. # 禁用 firewalld 服务
  4. systemctl mask firewalld

设置 iptable 防火墙现有规则

  1. # 查看 iptables 现有规则
  2. iptables -L -n
  3. # 先允许所有,不然有可能会杯具
  4. iptables -P INPUT ACCEPT
  5. # 清空所有默认规则
  6. iptables -F
  7. # 清空所有自定义规则
  8. iptables -X
  9. # 所有计数器归 0
  10. iptables -Z
  11. # 允许来自于 lo 接口的数据包(本地访问)
  12. iptables -A INPUT -i lo -j ACCEPT
  13. # 开放 22 端口
  14. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  15. # 开放 21 端口(FTP)
  16. iptables -A INPUT -p tcp --dport 21 -j ACCEPT
  17. # 开放 80 端口(HTTP)
  18. iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  19. # 开放 443 端口(HTTPS)
  20. iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  21. # 允许 ping
  22. iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
  23. # 允许接受本机请求之后的返回数据 RELATED,是为 FTP 设置的
  24. iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  25. # 其他入站一律丢弃
  26. iptables -P INPUT DROP
  27. # 所有出站一律绿灯
  28. iptables -P OUTPUT ACCEPT
  29. # 所有转发一律丢弃
  30. iptables -P FORWARD DROP

iptable 防火墙其他规则设定

  1. # 如果要添加内网 ip 信任(接受其所有 TCP 请求)
  2. iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
  3. # 过滤所有非以上规则的请求
  4. iptables -P INPUT DROP
  5. # 要封停一个 IP,使用下面这条命令:
  6. iptables -I INPUT -s ***.***.***.*** -j DROP
  7. # 要解封一个 IP,使用下面这条命令:
  8. iptables -D INPUT -s ***.***.***.*** -j DROP

保存规则设定

  1. # 保存上述规则
  2. service iptables save

开启 iptables 服务

  1. # 注册 iptables 服务
  2. # 相当于以前的 chkconfig iptables on
  3. systemctl enable iptables.service
  4. # 开启服务
  5. systemctl start iptables.service
  6. # 查看状态
  7. systemctl status iptables.service

解决 vsftpd 在 iptables 开启后,无法使用被动模式的问题。

1、首先在/etc/sysconfig/iptables-config中修改或者添加以下内容:

  1. # 添加以下内容,注意顺序不能调换
  2. IPTABLES_MODULES="ip_conntrack_ftp"
  3. IPTABLES_MODULES="ip_nat_ftp"

2、重新设置 iptables 设置

  1. iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

以下为完整设置脚本

  1. #!/bin/sh
  2. iptables -P INPUT ACCEPT
  3. iptables -F
  4. iptables -X
  5. iptables -Z
  6. iptables -A INPUT -i lo -j ACCEPT
  7. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  8. iptables -A INPUT -p tcp --dport 21 -j ACCEPT
  9. iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  10. iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  11. iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
  12. iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  13. iptables -P INPUT DROP
  14. iptables -P OUTPUT ACCEPT
  15. iptables -P FORWARD DROP
  16. service iptables save
  17. systemctl restart iptables.service

(完)