Firewall 防火墙的基本操作

教程1周前更新 administrator
173 00

firewall(firewalld)是 CentOS 7 开始自带的防火墙,操作方式与规则等都与 iptables 不同。(CentOS 6 及早期版本 iptables 防火墙可以参考《iptables 防火墙基本配置操作》)
firewall 相比较 iptables 操作更加简单,不需要记太繁琐的规则写法,记几条命令就足以够用。

服务相关

    • 开启 / 关闭 / 重启 / 查询进程状态systemctl start/stop/restart/status firewalld

    • 设置开机自启 / 关闭开机自启systemctl enable/disable firewalld

    • 查看防火墙状态firewall-cmd --state

常用操作

    • 重载防火墙(删除非永久配置、应用永久配置,配置完防火墙规则后需要执行此命令才能生效firewall-cmd --reload

    • 查看所有配置(包括已开启的端口及服务)firewall-cmd --zone=public --list-all

    • 开启端口firewall-cmd --zone=public --add-port=80/tcp --permanent 如果需要开启 UDP 协议,把 tcp 改成 udp 即可,下同。

    • 开启连续的多个端口firewall-cmd --zone=public --add-port=3000-3100/tcp --permanent

    • 禁用端口firewall-cmd --zone=public --remove-port=80/tcp --permanent

    • 添加服务firewall-cmd --zone=public --add-service=http --permanent 添加服务其实也是开启端口,只是内置的服务规则已经包含了常见的各种软件的通信端口,使用更加方便。例如添加 http 服务,开启默认的 80 端口;添加 ssh 服务,开启默认的 22 端口。

    • 删除服务firewall-cmd --zone=public --remove-service=http --permanent

    • 查看所有可添加的服务(含未启用)firewall-cmd --get-service

不常用的高端骚操作

一般根本用不上,如果只是简单控制一下端口,只掌握上面的 “常用操作” 就行啦。不如说,我也不怎么做以下高大上的骚操作,因为平时实在是用不上,没有太多实践论证,所以内容仅供参考...

    • 开启端口firewall-cmd --zone=public --add-port=80/tcp --permanent --zone 作用域
      --permanent 永久生效,没有此参数时 命令会临时生效,但重启和 reload 防火墙后会失效
      这里跟 “常用操作” 里那个开启端口是一样一样的,如果想高级使用,可以活用 --zone 和 --permanent 参数。CentOS7 默认的作用域都是 public。

    • 查看指定区域的所有配置firewall-cmd --zone=public --list-all --zone=public 指定区域

    • 查看所有区域的所有配置firewall-cmd --list-all-zones

    • 查看规则中已启用的服务firewall-cmd --list-services

    • 添加自定义服务

在 /usr/lib/firewalld/services/ 下自定义服务 xml 文件即可,写法可以参考目录下面系统内置的文件。

    • 查看所有 icmp 规则(含未启用)firewall-cmd --get-icmptype

    • 查询默认区域firewall-cmd --get-default-zone 默认区域为 public

    • 设置默认区域firewall-cmd --set-default-zone=internal

    • 将指定网口增加到区域firewall-cmd --zone=zone --add-interface=网口名称

    • 查看所有区域(含未启用)firewall-cmd --get-zones

    • 查看网口使用的区域firewall-cmd --get-active-zones

    • 查看指定区域所有端口firewall-cmd --zone=public --list-ports

    • 端口流量转发(同一台服务器,从 80 到 12345)firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=12345

    • 端口流量转发(不同服务器)
      在需要的区域激活 Masqueradefirewall-cmd --zone=public --add-masquerade

    • 添加规则,从本机 80 转发到 1.2.3.4 的 8080 端口firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=1.2.3.4

    • 删除流量转发规则firewall-cmd --zone=public --remove-masquerade

    • 启用 / 禁用 / 查询区域端口和协议组合firewall-cmd --permanent [--zone=<zone>] --add(/remove/query)-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]

    • 在区域中启用 / 禁止 / 查询端口转发或映射firewall-cmd --permanent [--zone=<zone>] --add(/remove/query)-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }

    • 启用 / 禁用 / 查询区域中的服务firewall-cmd --permanent [--zone=<zone>] --add(/remove/query)-service=<service>

    • 永久启用 / 禁用 / 查询区域中的 ICMP 阻塞firewall-cmd --permanent [--zone=<zone>] --add(/remove/query)-icmp-block=<icmptype>

    • /usr/lib/firewalld 中的默认 / 备用配置

该目录包含了由 firewalld 提供的默认以及备用的 ICMP 类型、服务、区域配置。由 firewalld 软件包提供的这些文件不能被修改,即使修改也会随着 firewalld 软件包的更新被重置。 其他的 ICMP 类型、服务、区域配置可以通过软件包或者创建文件的方式提供。

    • /etc/firewalld 中的系统配置

存储在此的系统或者用户配置文件可以是系统管理员通过配置接口定制的,也可以是手动定制的。这些文件将重载默认配置文件。

为了手动修改预定义的 icmp 类型,区域或者服务,从默认配置目录将配置拷贝到相应的系统配置目录,然后根据需求进行修改。

如果你加载了有默认和备用配置的区域,在 /etc/firewalld 下的对应文件将被重命名为 .old 然后启用备用配置。

© 版权声明

相关文章

暂无评论

none
暂无评论...