Centos7 默认是已安装了 Firewall,但是没有启动的,所以需要先启动下 Firewall,同时设置开机自启动,常用命令介绍

firewalld常用指令

查看已打开的所有端口:firewall-cmd --zone=public --list-ports
查询防火防所有开放端口及规则:firewall-cmd --list-all
启动:systemctl start firewalld
停止:systemctl stop firewalld
重启:systemctl restart firewalld
查状态:systemctl status firewalld
查看运行状态:firewall-cmd --state //running 表示运行
查看激活的zone :firewall-cmd --get-active-zones
查看 firewall  版本:firewall-cmd --version
安装指令(如果没有自带需手动安装): yum install firewalld
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed

放行端口方法

1、开启一个端口:firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent 永久生效,没有此参数重启后失效)

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd  --zone=public --add-port=50000-56635/tcp --permanent

指定IP访问

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept"

2、重新加载 firewall,修改配置后,必须重新加载才能生效:firewall-cmd --reload

firewall-cmd --reload

3、 查看已打开的所有端口:firewall-cmd --zone=public --list-ports

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

实操:

[root@localhost ~]# firewall-cmd --zone=public --list-port
9876/tcp 8090/tcp 80/tcp 8080/tcp
[root@localhost ~]# firewall-cmd --zone=public --add-port=3307/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --zone=public --list-port
9876/tcp 8090/tcp 80/tcp 8080/tcp 3307/tcp

关闭端口方法

1、关闭 9876 端口:(--permanent 表示永久生效,没有此参数重启后失效)

firewall-cmd --zone=public --remove-port=9898/tcp --permanent
firewall-cmd --zone=public --remove-port=50000-65535/tcp --permanent
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept"

2、重新加载 firewall,修改配置后,必须重新加载才能生效:firewall-cmd --reload

firewall-cmd --reload 

实操:

[root@localhost ~]# firewall-cmd --zone=public --list-ports
9876/tcp 8090/tcp 80/tcp 8080/tcp
[root@localhost ~]# firewall-cmd --zone=public --remove-port=9876/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --zone=public --list-ports
8090/tcp 80/tcp 8080/tcp

public.xml 文件修改防火墙端口

1、firewall-cmd对端口的操作,如开放端口等信息,都放在在"/etc/firewall/zones/public.xml"中记录
2、所以直接修改此文件也是可以的,这个文件会保存配置信息

  • 查看指定zone的所有信息 firewall-cmd --zone=public --list-all

  • 查看永久放行的服务

       firewall-cmd --get-service —permanent
    
  • 拒绝所有包 # firewall-cmd --panic-ond

  • 取消拒绝状态

    firewall-cmd --panic-off
    
  • 查看是否拒绝

     firewall-cmd --query-panic
    
  • 更新防火墙规则,不需要重启服务

    firewall-cmd --reload
    
  • 更新防火墙规则,并且重启服务

    firewall-cmd --complete-reload
    
  • 添加接口到指定zone,默认都在public zone

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

    如果不加--permanent参数,则该规则仅仅是运行时规则,firewall-cmd --reload 后该规则消失。

  • 设置默认zone,如果不设置,默认为public,本命令立即生效无需重启 # firewall-cmd --set-default-zone=myzone

  • 查看给定zone所有打开的端口: # firewall-cmd --zone=myzone --list-ports

  • 添加一个端口到区域

    firewall-cmd --zone=myzone --add-port=8080/tcp
    

    如果不加--permanent参数,则该规则仅仅是运行时规则,firewall-cmd --reload 后该规则消失。

  • 打开一个服务 # firewall-cmd --zone=work --add-service=ssh

  • 移除服务

    firewall-cmd --zone=work --remove-service=ssh
    

firewalld服务锁定与解锁

不能添加对应端口,和启动报错:

Failed to start firewalld.service: Unit is masked.

执行命令,即可实现取消服务的锁定

 systemctl unmask firewalld

下次需要锁定该服务时执行

 systemctl mask firewalld