目录

防火墙

更新于 2021-01-25

防火墙

默认情况下CentOS 7可能已经安装了firewalld服务,若确实没有安装直接使用yum命令安装即可:

yum -y install firewalld

firewalld默认规则已经放行SSH服务(22端口),但如果您修改过SSH端口,则必须先放行。

systemctl start firewalld
systemctl enable firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent

firewall-cmd --zone=public --add-port=9091/tcp --permanent
firewall-cmd --zone=public --add-port=6800/tcp --permanent
firewall-cmd --zone=public --add-port=3389/tcp --permanent


firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload
firewall-cmd --zone=public --list-ports
firewall-cmd --list-service


firewall-cmd --zone=public --add-port=22393/tcp --permanent
firewall-cmd --reload

常用命令

#查看运行状态
firewall-cmd --state
#启动firewall
systemctl start firewalld
#设置开机自启
systemctl enable firewalld
#删除开机自启
systemctl disable firewalld
#停止firewall
systemctl stop firewalld

如果您在启动的时候提示**“Failed to start firewalld.service: Unit firewalld.service is masked.”**,输入下面的命令可解决:

systemctl unmask firewalld.service

常用例子

永久放行某个指定的TCP端口,如放行80端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports

永久放行端口范围(8000-9000):

firewall-cmd --zone=public --add-port=8000-9000/tcp --permanent

查看已经放行的端口:

firewall-cmd --zone=public --list-ports

删除某个已经放行的端口(6022):

firewall-cmd --zone=public --remove-port=6022/tcp --permanent

阻止某个IP(123.57.22.204)连接:

firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=123.57.22.204 reject"

注意上面的所有列子都需要输入: firewall-cmd --reload

重载firewall使其生效。

默认 CentOS7 使用的防火墙 firewalld 是关闭 http 服务的(打开 80 端口)。

$ sudo firewall-cmd --zone=public --permanent --add-service=http
success
$ sudo firewall-cmd --reload
success

打开之后,可以查看一下防火墙打开的所有的服务

firewall-cmd --list-service

ssh dhcpv6-client http

可以看到,系统已经打开了 http 服务。