CentOS 7中的防火墙(firewall)是一个重要的安全功能,用于管理和控制网络流量,CentOS 7默认使用firewalld来管理netfilter子系统,尽管底层仍然是通过iptables命令实现的,以下是关于CentOS 7防火墙的详细介绍:
基本操作
1、安装:yum install firewalld firewallconfig。

2、启动:systemctl start firewalld。
3、查看状态:systemctl status firewalld。
4、停止:systemctl stop firewalld。
5、禁用:systemctl disable firewalld。
配置方法
1、查看版本:firewallcmd version。
2、显示状态:firewallcmd state。

3、查看所有打开的端口:firewallcmd zone=public listports。
4、更新防火墙规则:firewallcmd reload。
5、查看已激活的区域信息:firewallcmd getactivezones。
6、查看指定接口所属区域:firewallcmd getzoneofinterface=eth0。
7、拒绝所有包:firewallcmd panicon。
8、取消拒绝状态:firewallcmd panicoff。

9、查看是否拒绝:firewallcmd querypanic。
信任级别和区域管理
1、信任级别的分类
| 信任级别 | 描述 | |
| drop | 丢弃所有进入的包,而不给出任何响应 | |
| block | 拒绝所有外部发起的连接,允许内部发起的连接 | |
| public | 允许指定的进入连接 | |
| external | 同上,对伪装的进入连接,一般用于路由转发 | |
| dmz | 允许受限制的进入连接 | |
| work | 允许受信任的计算机被限制的进入连接,类似 workgroup | |
| home | 同上,类似 homegroup | |
| internal | 范围针对所有互联网用户 | |
| trusted | 信任所有连接 |
2、配置IP地址伪装
查看:firewallcmd zone=external querymasquerade。
打开:firewallcmd zone=external addmasquerade。
关闭:firewallcmd zone=external removemasquerade。
3、端口转发
打开端口转发:firewallcmd zone=external addmasquerade。
转发tcp 22端口至3753:firewallcmd zone=external addforwardport=22:port=tcp:toport=3753。
转发端口数据至另一个IP的相同端口:firewallcmd zone=external addforwardport=port=tcp:toaddr=X.X.X.X:toport=Y。
管理服务
以SMTP服务为例,添加到work zone:
1、添加:firewallcmd zone=work addservice=smtp。
2、查看:firewallcmd zone=work queryservice=smtp。
3、删除:firewallcmd zone=work removeservice=smtp。
配置文件管理
1、查看XX区域的永久配置文件:cat /etc/firewalld/zones/XX.xml。
2、配置方法:firewallconfig是图形化工具,firewallcmd是命令行工具,对于Linux来说,大家更习惯使用命令行方式的操作,所以这里不介绍firewallconfig。
3、什么是服务?在/usr/lib/firewalld/services/目录中,还保存了另外一类配置文件,每个文件对应一项具体的网络服务,如SSH服务等。
4、自定义服务端口:假如服务器的FTP不使用默认端口21改为1121,但想通过服务的方式操作防火墙,复制模版到/etc,以便修改和调用cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/,修改模版配置vim /etc/firewalld/services/ftp.xml,重新加载防火墙配置firewallcmd reload。
FAQs
1、如何查看当前防火墙的状态?
答:可以通过以下命令查看当前防火墙的状态:
```bash
systemctl status firewalld
```
或者使用firewallcmd命令:
```bash
firewallcmd state
```
2、如何在CentOS 7中开放一个端口?
答:要在CentOS 7中开放一个端口,可以使用以下命令:
```bash
firewallcmd zone=public addport=80/tcp permanent
firewallcmd reload
```
zone=public表示在公共区域中开放端口,addport=80/tcp表示开放TCP协议的80端口,permanent表示永久生效,最后使用reload重新加载防火墙规则。
