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
重新加载防火墙规则。