linux centos 防火墙firewalld

一、firewad服务管理

  1. 安装firewalld

yum -y install firewalld

  1. 开机启动/禁用firewad服务

systemctl enable/disable firewalld

  1. 启动/关闭firewad服务

systemctl start/stop firewalld

  1. 查看firewad服务状态

systemctl status firewalld

二、firewall-cmd常用命令

  1. 查看系统自带默认有那些service配置

firewall-cmd --get-services

image.png

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
  1. 获取活动的区域

firewall-cmd --get-active-zones

  1. 获取所有支持的服务

firewall-cmd --get-service

  1. 应急模式(阻断所有的网络连接)

firewall-cmd --panic-on #开启应急模式

firewall-cmd --panic-off#关闭应急模式

firewall-cmd --query-panic #查询应急模式

  1. 修改配置文件后 使用命令重新加载

firewall-cmd --reload

通常手动修改zone配置进行规则添加后,需要进行重载生效,如--permanent参数就需要reload重载; root 身份执行命令,重新加载防火墙,并不中断用户连接,即不丢失状态信息;

firewall-cmd --complete-reload

注意:通常在防火墙出现严重问题时,这个命令才会被使用; 比如,防火墙规则是正确的,但却出现状态信息问题和无法建立连接;

  1. 启用某个服务/端口

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
  1. 查看开启的端口和服务

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 文件就会被修改;

  1. 设置某个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 :就是此条规则的执行方法是丢弃;
    如果要放行直接修改后面的rejectaccept即可;
  • 防火墙firewalld预定义的服务配置文件是xml文件,目录在 /usr/lib/firewalld/services/; 在 /etc/firewalld/services/ 这个目录中也有配置文件,但是/etc/firewalld/services/目录优先于 /usr/lib/firewalld/services/ 目录;
  • 如果规则中没有参数--permanent都是即时生效的,而且reload或者重启服务后都不会再有记录;
    添加了参数--permanent后需要手动reload或者重启服务才生效。 同时可以加入--zone 应用于于哪个区域的参数;
linux centos 防火墙firewalld_第1张图片
image.png

你可能感兴趣的:(linux centos 防火墙firewalld)