Centos7 firewall 基本操作

放肆的年华 提交于 2020-11-19 00:13:45

Centos7 默认启用 firewall 替代原来的 iptables。firewall 与 iptables 一个明显的区别是: firewall 属于动态防火墙,它拥有运行时配置和永久配置选项,它支持允许服务或者应用程序直接添加防火墙规则的接口,而 iptables 属于静态防火墙,任何操作都需要重启 iptables 服务。

这里整理一些常用的 firewall 基本操作。

1. 查看 firewall 启动停止状态

#查看状态
systemctl status firewalld
#启动
systemctl start firewalld
#停止
systemctl stop firewalld

2. 查看开启端口

firewall-cmd --list-all

输出

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources: 
  services: dhcpv6-client ssh
  ports: 80/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules:

可以看到 ports 这个节点, 我这里只开启了80端口。

3. 增加需要开放的端口

firewall-cmd --permanent --zone=public --add-port=8080/tcp

--permanent: 永久增加

--zone=public: 增加到一个名字叫 public 的 zone 里面

--add-port: 增加tcp 8080端口

zone是什么意思? zone(网络区域)定义了网络连接的可信等级。这是一个 一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接。

重启防火墙

[root@localhost ~]# systemctl restart firewalld
[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources: 
  services: dhcpv6-client ssh
  ports: 80/tcp 8080/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 

我们可以看到在 ports 节点已经添加了 8080 端口。在篇头我们已经讲到了 firewall 是动态防火墙,这里添加完端口需要重启服务是因为加了 --permanent。

这里我们加一个临时的 8088 端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=8088/tcp
success
[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources: 
  services: dhcpv6-client ssh
  ports: 80/tcp 8080/tcp 8088/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 

可以只是临时增加端口不需要重启服务。

4.移除端口号

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

--remove-port: 移除端口号

[root@localhost ~]# firewall-cmd --permanent --zone=public --remove-port=80/tcp
success
[root@localhost ~]# systemctl restart firewalld
[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources: 
  services: dhcpv6-client ssh
  ports: 8080/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules:

可以看到 80 端口已经被移除

5.firewall 配置文件

以上操作都是通过命令来实现的,其实最终都反应到它的配置文件。

打开 zone 下面的 public.xml 文件

vi /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="dhcpv6-client"/>
  <service name="ssh"/>
  <port protocol="tcp" port="8080"/>
</zone>

可以看到刚才加的 8080 端口还是配置文件中。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!