冰冰的小屋

路漫漫其修远兮,吾将上下而求索

CentOS 7 下使用 Firewall


在 CentOS 7 中,引入了一个新的服务,Firewalld,下面一张图,让大家明确的了解 Firewall 与 iptables 之间的关系与区别。

安装它,只需

如果需要图形界面的话,则再安装

一、介绍

防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

zone

Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别

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

过滤规则

  • source: 根据源地址过滤
  • interface: 根据网卡过滤
  • service: 根据服务名过滤
  • port: 根据端口过滤
  • icmp-block: icmp 报文过滤,按照 icmp 类型配置
  • masquerade: ip 地址伪装
  • forward-port: 端口转发
  • rule: 自定义规则

其中,过滤规则的优先级遵循如下顺序

  1. source
  2. interface
  3. firewalld.conf

二、使用方法

具体的规则管理,可以使用 firewall-cmd,具体的使用方法可以

1. 查看规则

查看运行状态

查看已被激活的 Zone 信息

查看指定接口的 Zone 信息

查看指定级别的接口

查看指定级别的所有信息,譬如 public

查看所有级别被允许的信息

查看重启后所有 Zones 级别中被允许的服务,即永久放行的服务

2. 管理规则

添加某接口至某信任等级,譬如添加 eth0 至 public,永久修改

设置 public 为默认的信任级别

a. 管理端口

列出 dmz 级别的被允许的进入端口

允许 tcp 端口 8080 至 dmz 级别

允许某范围的 udp 端口至 public 级别,并永久生效

b. 网卡接口

列出 public zone 所有网卡

将 eth0 添加至 public zone,永久

eth0 存在与 public zone,将该网卡添加至 work zone,并将之从 public zone 中删除

删除 public zone 中的 eth0,永久

c. 管理服务

添加 smtp 服务至 work zone

移除 work zone 中的 smtp 服务

d. 配置 external zone 中的 ip 地址伪装

查看

打开伪装

关闭伪装

e. 配置 public zone 的端口转发

要打开端口转发,则需要先

然后转发 tcp 22 端口至 3753

转发 22 端口数据至另一个 ip 的相同端口上

转发 22 端口数据至另一 ip 的 2055 端口上

f. 配置 public zone 的 icmp

查看所有支持的 icmp 类型

列出

添加 echo-request 屏蔽

移除 echo-reply 屏蔽

g. IP 封禁

当然,我们仍然可以通过 ipset 来封禁 ip

封禁 ip

封禁网段

倒入 ipset 规则

然后封禁 blacklist

重新载入以生效

以上都是一些常用方法,更多高级方法,请参考:

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注