linux 防火墙--firewalld学习

时间:2021-07-15 15:50:37

firewalld是centos7默认的防火墙,相比于iptables重要的优势:

1 支持动态更新;

2 不用重启服务;

同时增加了防火墙的“zone”概念,具体差异没做过多了解,这篇文章只记录firewalld简单学习历程

centos7默认安装的就是firewalld,默认的public中开启dhcpv6-client ssh这两个服务,这也就是当装完centos7后启动nginx 80端口拒绝连接,我们却找不到iptables命令的原因。

启动、关闭、重启firewalld服务命令:

$ systemctl start firewalld
$ systemctl stop firewalld
$ systemctl restart firewalld
$ firewall-cmd --state # 查看firewalld运行情况

其他可查阅systemctl命令。

规则管理命令

$ firewall-cmd --panic-on           # 丢弃
$ firewall-cmd --panic-off # 取消丢弃
$ firewall-cmd --query-panic # 查看丢弃状态
$ firewall-cmd --reload # 更新规则,不重启服务
$ firewall-cmd --complete-reload # 更新规则,重启服务

firewalld zone区域是新引入的概念,Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别

  • drop: 丢弃所有进入的包,而不给出任何响应
  • block: 拒绝所有外部发起的连接,允许内部发起的连接
  • public: 允许指定的进入连接
  • external: 同上,对伪装的进入连接,一般用于路由转发
  • dmz: 允许受限制的进入连接
  • work: 允许受信任的计算机被限制的进入连接,类似 workgroup
  • home: 同上,类似 homegroup
  • internal: 同上,范围针对所有互联网用户
  • trusted: 信任所有连接

firewalld-cmd 支持动态更新,修改更新操作默认为立刻生效,--permanent参数配合重新加载实现永久生效

对应zone常用的命令:

$ firewall-cmd --list-all-zone #获取全部zone
$ firewall-cmd --get-active-zone  #获取活跃的zone
$ firewall-cmd --get-default-zone  #获取默认的zone
$ firewall-cmd --set-default-zone=work  #修改默认的zone
$ firewall-cmd --zone=work --change-interface=eno16777736  #修改网卡关联的zone
$ firewall-cmd --zone=public --list-all  #查询zone=public配置信息

服务管理

$ firewall-cmd --zone=work --add-service=smtp
$ firewall-cmd --zone=work --remove-service=smtp
$ firewall-cmd --get-service

端口号管理

$ firewall-cmd --zome=dmz --list-ports
$ firewall-cmd --zone=dmz --add-port=8080/tcp
$ firewall-cmd --zome=public --add-port=8080-8090/udp

firewalld 有一个被称为 “direct interface”(直接接口),它可以直接通过 iptablesip6tablesebtables 的规则。它适用于应用程序,而不是用户。如果您不太熟悉 iptables,那么使用直接接口是很危险的,因为您可能无意中导致防火墙被入侵。firewalld 保持对所增加项目的追踪,所以它还能质询 firewalld 和发现由使用直接端口模式的程序造成的更改。直接端口由增加 --direct 选项到 firewall-cmd 命令来使用。