设为首页 加入收藏

TOP

Linux 中使用 firewalld(一)
2019-09-03 01:52:09 】 浏览:38
Tags:Linux 使用 firewalld

firewalld 是一种动态防火墙管理解决方案。Centos 7 默认使用 firewalld。firewalld 是对 iptables 的一个封装,可以让你更容易地管理 iptables 规则。它并不是 iptables 的替代品,虽然 iptables 命令仍可用于 firewalld,但建议 firewalld 时仅使用 firewalld 命令。 与 iptables 相比,我觉得 firewalld 更好用

用一个例子说明下。比如要开放 8080 端口。

  • firewalld
firewalld-cmd  --zone=public --add-port=5000/tcp --permanent
firewalld-cmd --reload
  • iptables
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
service iptables save
systemctl iptables restart

相比之下 firewalld 更容易看懂,且步骤更少,又不用重启服务。 另外 firewalld 还有分区的概念容易整理一系列的端口。Centos 7 默认防火墙使用 Firewalld 还觉得挺好的。

安装 firewalld

Centos 7 会默认安装 firewalld,若卸载了要重新安装

yum -y install firewalld

基本管理

  • 启动 systemctl start firewalld
  • 设置开机启动 systemctl enable firewalld
  • 重启 systemctl restart firewalld
  • 关闭开机启动 systemctl disable firewalld
  • 查看状态 systemctl status firewalld 或者 firewall-cmd --state

区域(zones)

Firewalld 有区域(zones)的概念。这有什么用呢?比如说,公共 WIFI 是不可信任的网络类型,而家庭网络几乎是完全可信任。如果这两者都采取相同的安全策略,就会有很多策略是冗余的。根据网络的类型,将防火墙分成不同的区域有它存在的价值。而在firewalld中会,会预先为你设定了很多个区域。 用下面的语句可以看到所有的区域

firewall-cmd --get-zones
block dmz drop external home internal public trusted work

其中从不信任到信任的排序是:

  • drop(丢弃):最低级别的信任。任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
  • block(限制):和上面相似,任何接收的网络连接都被 IPv4 的 icmp-host-prohibited (ping 不到) 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝
  • public(公共):在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。
  • external(外部):特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。
  • dmz(非军事区用):于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。
  • work(工作):用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。
  • home(家庭):用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。
  • internal(内部):用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。
  • trusted(信任):可接受所有的网络连接

区域命令

获取默认区域

sudo firewall-cmd --get-default-zone
public

查看所有区域的信息

sudo firewall-cmd --list-all-zones
block
      target: %%REJECT%%
      icmp-block-inversion: no
      interfaces:
      sources:
      services:
      ports:
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:
    
    dmz
      target: default
    ...

获取与 public 区域相关的信息

sudo firewall-cmd --list-all

sudo firewall-cmd --zone=public --list-all
  public
      target: default
      icmp-block-inversion: no
      interfaces:
      sources:
      services: ssh dhcpv6-client
      ports:
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:

当前活动区域

sudo firewall-cmd --get-active-zones

默认是没有活动区域的,主要原因是没有为该区域设置网络接口,设置了网络接口后就可以了

为区域设置网络接口

sudo firewall-cmd  --change-interface=eth0 --zone=public --permanent 
sudo firewall-cmd --reload

其中 firewall-cmd --reload 可以在不用重启的情况重新加载配置 而 --permanent 的意思是持久化的配置, 机器重启后规则依然能生效 至于如果看网络接口,可以用 ip addr 命令去看,其中lo是本地回环接口,其余的不是。 提示:要注意切换接口的区域,如果网络接口切入到一个drop区域什么的,会马上连 ssh 都连不上,谨慎切换 然后再

sudo firewall-cmd --get-active-zones
    public
      interfaces: eth0

设置默认区域

如果你所有接口都用单区域去处理,那么只需选择默认区域就可以,而设置默认区域的命令是

sudo firewall-cmd --set-default-zone=public

通过网络接口找区域

firewall-cmd --get-zone-of-interface=eth0
public

通过区域找接口

firewall-cmd --zone=public --list-interfaces
    eth0

区域的服务

获取能添加的所有服务

服务挺多的

sudo firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine ...

对应的文件在 /usr/lib/firewalld/services/ 的文件夹中,每个服务都有一个 xml 文件来定义。比如 :https.xml 的文件

    <?xml version="1.0" encodi
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Logrotate实现Catalina.out日志每.. 下一篇001.Heartbeat简介

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目