自从 Red Hat® Enterprise Linux® (RHEL) 7 and CentOS® 7 开始, firewalld 开始作为默认的防火墙软件。 当然,你可以选择关闭 firewalld,而启用 iptbales 作为防火墙。这篇文章将指导你完成这个工作。
一、关闭 firewalld
执行以下命令:
$ systemctl stop firewalld
$ systemctl mask firewalld
二、安装并配置 iptables
执行以下命令安装:
$ yum install iptables-services
设置默认启动:
$ systemctl enable iptables
$ systemctl enable ip6tables
三、添加 iptables 防火墙规则
以下为最基础的规则, 开放 22 和 80 端口:
$ cat /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [214:43782]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
COMMIT
$cat /etc/sysconfig/ip6tables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [214:43782]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
COMMIT
四、重启 iptables 并查看 iptables 运行状态
重启 iptables
$ systemctl restart iptables
$ systemctl restart ip6tables
查看运行状态
$ systemctl status iptables
$ systemctl status ip6tables
查看 iptables 规则
$ iptables -L -n
$ ip6tables -L -n
查看端口及服务
$ netstat -plant
查看服务运行日志
查看 iptables 服务运行日志:
$ journalctl -f -u iptables.service
$ journalctl -f -u ip6tables.service
五、重启确认效果
重启服务,确认一下 iptables 规则是否生效。