centos 7 使用 iptables 作为防火墙

自从 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 规则是否生效。

添加新评论