1.firewalld的基本使用
屏蔽/解除屏蔽
# systemctl mask/unmask firewalld.service
启动/停止/重新启动
# systemctl stasrt/stop/restart firewalld
启用/停用(开机启动/停用)
# systemctl enable/disable firewalld
查看防火墙状态
systemctl status firewalld
查看防火墙是否已经开机启动
# systemctl is-enabled firewalld
查看防火墙服务是否已经启用
# systemctl list-unit-files |grep firewalld
2.配置firewalld-cmd
显示状态
# firewall-cmd --state
查看所有打开的端口
# firewall-cmd --zone=public --list-ports
查看区域信息
# firewall-cmd --get-active-zones
查看ens160所属区域
# firewall-cmd --get-zone-of-interface=ens160
拒绝操作
拒绝所有包:# firewall-cmd --panic-on 取消拒绝状态: # firewall-cmd --panic-off 查看是否拒绝:# firewall-cmd --query-panic
更新防火墙规则(重要)
# firewall-cmd --reload
3.firewalld放行端口
如果需要针对区域操作的话需要在firewalld-cmd后面添加 – -zone=你的区域 ,一般使用默认区域即可
开启80号端口
# firewall-cmd --add-port=80/tcp --permanent // --permanent 代表永久生效,不添加的话重启主机就会失效 # firewall-cmd --reload # firewall-cmd --list-ports //查看所有已打开的端口 注意如果添加多个端口的话(删除的话同理) --add-port=80/tcp 就要写成 --add-port={80/tcp,81/tcp,82/tcp}
移除已经开启的80端口
# firewall-cmd --remove-port=80/tcp --permanent # firewall-cmd --reload
4.firewalld放行服务
有时开放端口后仍不能访问各自端口,就需要进行如下操作
# firewall-cmd --get-services //查看可以打开的服务有哪些 # firewall-cmd --add-service=http --permanent //添加服务到firewalld 多个服务可写成{http,ssh} # firewall-cmd --add-port=80/tcp --permanent # firewall-cmd --reload # firewall-cmd --list-service //查看所有添加的服务
移除服务的话同理
# firewall-cmd --remove-service=http --permanent # firewall-cmd --reload
放行自定义的服务(示例,添加一个test服务,端口tcp1111)
# cd /usr/lib/firewalld/services/ //每个服务都在这里有个xml文件 # cp http.xml test.xml //复制一个http模板来修改 # vi test.xml <port protocol="tcp" port="1111"/> //将这行改成你自定义服务的端口 :wq # systemctl restart firewalld # firewall-cmd --add-service=test --permanent # firewall-cmd --add-port=1111/tcp --permanent # firewall-cmd --reload
5.对特定ip禁止某种服务
例子:禁止192.168.10.0/24访问ssh服务
# firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject" --permanent //改成允许的话将reject改成accept # firewall-cmd --reload # firewall-cmd --list-all //查看防火墙规则
例子:允许192.168.1.1访问80号端口
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.1.1/24" port protocol="tcp" port="80" accept" --permanent
如果你平时不知道服务的端口是多少你就可以# cat /usr/lib/firewalld/services/http.xml | grep port