linux centos 防火墙firewalld
一、firewad服务管理
- 安装firewalld
yum -y install firewalld
- 开机启动/禁用firewad服务
systemctl enable/disable firewalld
- 启动/关闭firewad服务
systemctl start/stop firewalld
- 查看firewad服务状态
systemctl status firewalld
二、firewall-cmd常用命令
- 查看系统自带默认有那些service配置
firewall-cmd --get-services
2.查看当前已经开放的service和port
firewall-cmd --list-services
firewall-cmd --zone=public --list-services
# 只查看指定pubilc区域的
firewall-cmd --list-ports
firewall-cmd --zone=public --list-ports
# 只查看指定pubilc区域的
firewall-cmd --list-all-zones
# 查看所有区域的
[root@localhost /etc/firewalld/services]#firewall-cmd --list-port
3306/tcp 80/tcp
[root@localhost /etc/firewalld/services]#firewall-cmd --list-service
ssh dhcpv6-client
- 获取活动的区域
firewall-cmd --get-active-zones
- 获取所有支持的服务
firewall-cmd --get-service
- 应急模式(阻断所有的网络连接)
firewall-cmd --panic-on
#开启应急模式
firewall-cmd --panic-off
#关闭应急模式
firewall-cmd --query-panic
#查询应急模式
- 修改配置文件后 使用命令重新加载
firewall-cmd --reload
通常手动修改zone配置进行规则添加后,需要进行重载生效,如--permanent参数就需要reload重载; root 身份执行命令,重新加载防火墙,并不中断用户连接,即不丢失状态信息;
firewall-cmd --complete-reload
注意:通常在防火墙出现严重问题时,这个命令才会被使用; 比如,防火墙规则是正确的,但却出现状态信息问题和无法建立连接;
- 启用某个服务/端口
firewall-cmd --zone=public --add-service=https
#临时
firewall-cmd --permanent --zone=public --add-service=https
#永久
firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp
#永久
firewall-cmd --zone=public --add-port=8080-8081/tcp
#临时
如果是要删除,直接修改成remove-service或者remove-port;
[root@localhost /etc/firewalld/services]#firewall-cmd --permanent --zone=public --add-port=8080/tcp
success
[root@localhost /etc/firewalld/services]#firewall-cmd --reload
success
[root@localhost /etc/firewalld/services]#firewall-cmd --list-ports
3306/tcp 80/tcp 8080/tcp
[root@localhost /etc/firewalld/services]#firewall-cmd --zone=public --remove-port=8080/tcp
success
[root@localhost /etc/firewalld/services]#firewall-cmd --list-ports
3306/tcp 80/tcp
- 查看开启的端口和服务
firewall-cmd --permanent --zone=public --list-services
#服务空格隔开 例如 dhcpv6-client https ss
firewall-cmd --permanent --zone=public --list-ports
#端口空格隔开 例如 8080-8081
在每次修改 端口和服务后 /etc/firewalld/zones/public.xml 文件就会被修改;
- 设置某个ip 访问某个服务
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="172.4.20.0/24" service name="http" accept"
#ip 172.4.20.0/24访问http
-
添加禁止响应ping
firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'
-
查看是否有此规则[等号后面跟详细的名称]
firewall-cmd --query-rich-rule='rule protocol value='icmp' drop'
-
删除方法
firewall-cmd --remove-rich-rule='rule protocol value=icmp drop'
-
添加拒绝某个IP访问ssh端口
firewall-cmd --add-rich-rule "rule family=ipv4 source address=10.0.10.1 service name='ssh' reject"
-
直接丢弃
firewall-cmd --add-rich-rule "rule family=ipv4 source address=10.0.10.1 service name='ssh' reject"
-
对端口进行操作
firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.10.1 port port=22 protocol=tcp reject'
-
允许来自此IP允许通过防火墙
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.10.1" accept'
-
允许一个IP(10.0.10.1)仅能通过指定端口(8080-8090)访问到目标(10.0.10.13):
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.10.1" destination address="10.0.10.13/32" port port="8080-8090" protocol="tcp" accept'
- 规则说明:
rule
:规则;
family:ipv4
指定ipv4的地址;
source address=10.0.10.1
要拒绝的IP,可以是IP或者是IP段;
service name='ssh'
指定的是ssh服务 ;
drop
:就是此条规则的执行方法是丢弃;
如果要放行直接修改后面的reject
为accept
即可;
- 防火墙firewalld预定义的服务配置文件是xml文件,目录在 /usr/lib/firewalld/services/; 在 /etc/firewalld/services/ 这个目录中也有配置文件,但是/etc/firewalld/services/目录优先于 /usr/lib/firewalld/services/ 目录;
image.png
- 如果规则中没有参数--permanent都是即时生效的,而且reload或者重启服务后都不会再有记录;
添加了参数--permanent后需要手动reload或者重启服务才生效。 同时可以加入--zone 应用于于哪个区域的参数;