zones

防火墙能够根据用户设置的信任级别把网络划分成许多的区域,一个网络连接只能归属于一个区域
系统默认的所有区域存储在 /usr/lib/firewalld/zones

  • block : 对于外部主动主动发起的连接,主机会返回一个 icmp 包来拒绝,但主机可以向外部主动发起连接
  • dmz: 非军事区域内的计算机可以公开访问,但是对于内部网络,只接受指定的连接
  • drop:对于传入的网络数据包,主机直接拒接,不返回任何消息包,只允许从主机传出数据包
  • external:用于使用伪装的外部网络,尤其是路由器,为了防止网络中其他计算机的攻击,仅接受指定的传入连接
  • home: 用于在家里使用,此时,对于网络中的计算机,大多比较信任,也是仅接受指定的传入连接
  • internal:用于内部网络,此时,对于网络中的计算机,大多比较信任,也是仅接受指定的传入连接
  • public:用于公共区域,此时,不能信任网络中的计算机,仅接受指定的传入连接
  • trusted:接受所有的网络连接
  • work:用于工作区域,此时,对于网络中的计算机,大多比较信任,但也仅接受指定的传入连接

public 是安装防火墙时默认的区域

安装

Linux发行版默认安装了防火墙,如果没有安装,可使用如下命令安装:

yum install firewalld -y
启动、关闭防火墙
systemctl start firewalld   # 启动防火墙服务
systemctl stop firewalld    # 关闭防火墙服务
设置开机启动、禁止开机启动
systemctl enable firwalld   # 开机启动防火墙服务
systemctl disable firwalld  # 禁止开机启动防火墙服务
firewall-cmd

firewall-cmd 是防火墙配置管理工具,它的参数较多,下表列出常用的参数及作用,更多参数自行通过 man 命令进行查看

选项说明
–state防火墙开启状态
–reload重新加载防火墙规则
–get-default-zone获取默认区域
–set-default-zone=xxx设置默认区域为 xxx
–list-ports --zone=xxx列出 xxx 区域中添加的端口
–add-port=x --zone=xxxxxx 区域中添加 x 端口
–remove-port=x --zone=xxxxxx区域中移除 x 端口
–query-port=x --zone=xxx查询 xxx 区域中是否已添加 x 端口
–list-services=x --zone=xxx列出 xxx 区域中所有允许的服务器
–query-service=x --zone=xxx查询是否允许 xxx 区域中 x 服务的流量
–add-service=x --zone=xxx --timeout= t允许 xxx 区域中 x 服务的流量,超时时间 t
–remove-service=x --zone=xxx从 xxx 区域中移除 x 服务
运行时和永久

防火墙规则的修改有运行时和永久两种模式。默认为运行时模式,它在防火墙服务重新加载、重启服务,重启系统时会失效。
–permanent 是设置永久的选项,设置之后不会立马生效,需要重启服务、重新加载防火墙服务或者系统重启才生效。另外,–permanent 选项并不是对所有的选项都有效。

例如:现在设置 public 区域允许 80 端口 TCP 流量通过,并且运行时和永久性都都生效,具体的设置如下

firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=80/tcp --permanent
查看防火墙状态
firewall-cmd --state
重新加载

重新加载会导致已经添加的运行时的规则丢失

firewall-cmd --reload
Logo

更多推荐