在CentOS6中常用的防火墙是iptables,但是升级到CentOS7以后就开始使用firewall-cmd作为防火墙软件了。

命令介绍

1
firewall-cmd [选项 ... ]

其常用的参数:

1
2
3
4
5
6
7
8
9
-h, --help    # 显示帮助信息;
-V, --version # 显示版本信息. (这个选项不能与其他选项组合);
-q, --quiet # 不打印状态消息;

--state # 显示firewalld的状态;
--reload # 不中断服务的重新加载;
--complete-reload # 中断所有连接的重新加载;
--runtime-to-permanent # 将当前防火墙的规则永久保存;
--check-config # 检查配置正确性;

实例

对外暴露指定端口

1
firewall-cmd --permanent --add-port=8080/tcp

其中--permanent表示永久生效,如果不加这个参数,操作系统重启后则该规则失效。

指定某个端口只能特定的IP访问

1
2
3
4
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.10.1.1/24" port protocol="tcp" port="8080" accept"

firewall-cmd --reload

8080端口只能通过10.10.1.1网段的IP访问。

将网卡添加到区域内

1
firewall-cmd --zone=public --add-interface=eth0

查看区域信息

1
firewall-cmd --get-active-zones

查看防火墙状态

1
firewall-cmd --state

允许/禁止 FTP服务

1
2
3
firewall-cmd --new-service=ftp

firewall-cmd --delete-service=ftp

类似的服务还有ssh,http

查看防火墙

1
firewall-cmd --list-all

端口转发

1
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080

80端口转发到8080.

服务启停

1
2
3
4
5
systemctl start  firewalld # 启动
systemctl stop firewalld # 停止
systemctl enable firewalld # 启用自动启动
systemctl disable firewalld # 禁用自动启动
systemctl status firewalld # 或者 firewall-cmd --state 查看状态