Hazx小屋 Hazx小屋

Firewall防火墙的基本操作

in 服务器相关 阅读: 802 文章转载请注明来源!

  拖了很久很久... 终于想起来写firewall了...

  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
  • 端口流量转发(不同服务器)
    在需要的区域激活Masquerade
firewall-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下的对应文件将被重命名为 <file>.old 然后启用备用配置。

WeChat Pay

微信打赏

Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

服务器相关
最后由Hazx修改于2018-12-05 13:03
发表新评论
博客系统已萌萌哒运行了
© 2019 Hazx. Theme by Jrotty.
前篇 后篇
雷姆
拉姆