使用CentOS/RHEL防火墙

https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html html


4.5.1. 防火墙简介

动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙,用以支持网络 zones ,以分配对一个网络及其相关连接和界面必定程度的信任。它具有对 IPv4 和 IPv6 防火墙设置的支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具有一个通向服务或者应用程序以直接增长防火墙规则的接口。网络

4.5.2. 了解防火墙

一个图像化的配置工具,firewall-config,用于配置 firewalld:它依次用 iptables工具 与执行数据包筛选的内核中的 Netfilter 通讯,app

使用图像化的 firewall-config 工具,按下 Super 键进入活动总览,点击 firewall,而后按下 Enterfirewall-config 工具就出现了。您将被提示输入管理员密码。ide

firewall-config 工具里有一个标记为 Configuration 的下拉菜单,能够在 运行时间 和 永久 两种模式之间进行选择。要注意,若是您选择了 Permanent ,在左上角会出现一排附加的图标。由于不能在运行模式下改变一个服务参数,因此这些图标仅在永久配置模式中出现。工具

由 firewalld 提供的是动态的防火墙服务,而非静态的。由于配置的改变能够随时随地马上执行,再也不须要保存或者执行这些改变。现行网络链接的意外中断不会发生,正如防火墙的全部部分都不须要从新下载。ui

提供命令行客户端,firewall-cmd,用于进行永久性或非永久性运行时间的改变,正如在 man firewall-cmd(1)所解释的同样。永久性改变须要按照 firewalld(1) 手册页的解释来进行。注意, firewall-cmd 命令能够由 root 用户运行,也能够由管理员用户——换言之, wheel 群体的成员运行。在后一种状况里,命令将经过 polkit 进程来受权。spa

firewalld 的配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 里的各类 XML 文件里,这样保持了这些文件被编辑、写入、备份的极大的灵活性,使之可做为其余安装的备份等等。命令行

其余应用程序可使用 D-bus 和 firewalld 通讯。code

4.5.3. 比较 system-config-firewall 以及 iptables 的 firewalld

firewalld 和 iptables service 之间最本质的不一样是: xml

  • iptables service 在 /etc/sysconfig/iptables 中储存配置,而 firewalld 将配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各类 XML 文件里,。要注意,当 firewalld 在Red Hat Enterprise Linux上安装失败时, /etc/sysconfig/iptables 文件就不存在。

  • 使用 iptables service,每个单独更改意味着清除全部旧有的规则和从 /etc/sysconfig/iptables里读取全部新的规则,然而使用 firewalld 却不会再建立任何新的规则;仅仅运行规则中的不一样之处。所以,firewalld 能够在运行时间内,改变设置而不丢失现行链接。

使用 iptables tool 与内核包过滤对话也是如此。

防火墙堆栈

图 4.1. 防火墙堆栈

4.5.4. 对网络区的理解

基于用户对网络中设备和交通所给与的信任程度,防火墙能够用来将网络分割成不一样的区域。 NetworkManager 通知 firewalld 一个接口归属某个区域。接口所分配的区域能够由 NetworkManager 改变,也能够经过能为您打开相关 NetworkManager 窗口的 firewall-config 工具进行。

/etc/firewalld/的区域设定是一系列能够被快速执行到网络接口的预设定。列表并简要说明以下:

  • drop(丢弃)

  • 任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络链接。

  • block(限制)

  • 任何接收的网络链接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited信息所拒绝。

  • public(公共)

  • 在公共区域内使用,不能相信网络内的其余计算机不会对您的计算机形成危害,只能接收通过选取的链接。

  • external(外部)

  • 特别是为路由器启用了假装功能的外部网。您不能信任来自网络的其余计算,不能相信它们不会对您的计算机形成危害,只能接收通过选择的链接。

  • dmz(非军事区)

  • 用于您的非军事区内的电脑,此区域内可公开访问,能够有限地进入您的内部网络,仅仅接收通过选择的链接。

  • work(工做)

  • 用于工做区。您能够基本相信网络内的其余电脑不会危害您的电脑。仅仅接收通过选择的链接。

  • home(家庭)

  • 用于家庭网络。您能够基本信任网络内的其余计算机不会危害您的计算机。仅仅接收通过选择的链接。

  • internal(内部)

  • 用于内部网络。您能够基本上信任网络内的其余计算机不会威胁您的计算机。仅仅接受通过选择的链接。

  • trusted(信任)

  • 可接受全部的网络链接。

指定其中一个区域为默认区域是可行的。当接口链接加入了 NetworkManager,它们就被分配为默认区域。安装时,firewalld 里的默认区域被设定为公共区域。

4.5.5. 选择一个网络区域

网络区域名已经选定为不加说明,便可明了,并容许用户快速地作出合理决定。可是,应对默认配置的设定进行检查,并且根据您的须要和风险评估,没必要要的服务将不能使用。

4.5.6. 对预先定义的服务的理解

一项服务能够是本地和目的地端口的列表,若是服务被容许的话,也能够是一系列自动加载的防火墙辅助模块。预先定义的服务的使用,让客户更容易被容许或者被禁止进入服务。与对开放端口或者值域,或者端口大相径庭,使用预先定义服务,或者客户限定服务,或许可以让管理更容易。 firewalld.service(5)中的手册页描述了服务配置的选择和通用文件信息。服务经过单个的 XML 配置文件来指定,这些配置文件则按如下格式命名:service-name.xml

用图形化 firewall-config 工具查看服务列表,按下 Super 键进入开始菜单,输入 firewall 而后按下 Enterfirewall-config 工具就出现了。您将被提示输入管理员密码。如今,在 Services 标签下,您能够查看服务列表了。

要使用命令行列出默认的预先定义服务,以 root 身份执行如下命令: 

~]# ls /usr/lib/firewalld/services/

请勿编辑/usr/lib/firewalld/services/ ,只有 /etc/firewalld/services/ 的文件能够被编辑。

要列出系统或者用户建立的系统,以 root 身份执行如下命令: 

~]# ls /etc/firewalld/services/

使用图形化 firewall-config 工具和经过编辑 /etc/firewalld/services/ 中的 XML 文件,服务能够被增长和删除。若是服务没有被用户增长或者改变,那么 /etc/firewalld/services/ 中不会发现相应的 XML 文件。若是您但愿增长或者改变服务, /usr/lib/firewalld/services/ 文件能够做为模板使用。以 root 身份执行如下命令: 

~]# cp /usr/lib/firewalld/services/[service].xml /etc/firewalld/services/[service].xml

而后您能够编辑最近建立的文件。firewalld 优先使用 /etc/firewalld/services/ 里的文件,若是一份文件被删除且服务被从新加载后,会切换到 /usr/lib/firewalld/services/

4.5.7. 理解直接接口

firewalld 有一个被称为 direct interface(直接接口),它能够直接经过 iptablesip6tables 和 ebtables 的规则。它适用于应用程序,而不是用户。若是您不太熟悉 iptables,那么使用直接接口是很危险的,由于您可能无心中致使防火墙被***。firewalld 保持对所增长项目的追踪,因此它还能质询 firewalld 和发现由使用直接端口模式的程序形成的更改。直接端口由增长 --direct 选项到 firewall-cmd 命令来使用。

直接端口模式适用于服务或者程序,以便在运行时间内增长特定的防火墙规则。这些规则不是永久性的,它们须要在每次经过 D-BU S从 firewalld 接到启动、从新启动和从新加载信息后运用。

4.5.8. 检查是否已安装防火墙

在 Red Hat Enterprise Linux 7 中,默认安装 firewalld 和图形化用户接口配置工具 firewall-config。做为 root 用户运行下列命令能够检查: 

~]# yum install firewalld firewall-config

4.5.9. 禁用防火墙

要禁用 firewalld,则做为 root 用户运行下列命令: 

~]# systemctl disable firewalld# systemctl stop firewalld

4.5.10. 使用 iptables 服务

要用 iptables 和 ip6tables 服务代替 firewalld,则以 root 身份运行如下命令,先禁用 firewalld: 

~]# systemctl disable firewalld# systemctl stop firewalld

而后安装 iptables-services 程序包,以 root 身份输入如下命令: 

~]# yum install iptables-services

iptables-services 程序包包含了 iptables 服务和 ip6tables 服务。

而后,以 root 身份运行 iptables 和 ip6tables 命令: 

  # systemctl start iptables
  # systemctl start ip6tables
  # systemctl enable iptables
  # systemctl enable ip6tables

4.5.11. 启动防火墙

要启动 firewalld,则以 root 用户身份输入如下命令: 

~]# systemctl start firewalld

4.5.12. 检查防火墙是否运行

若是 firewalld 在运行,输入如下命令检查: 

~]$ systemctl status firewalldfirewalld.service - firewalld - dynamic firewall daemon
	  Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
	  Active: active (running) since Sat 2013-04-06 22:56:59 CEST; 2 days ago
	Main PID: 688 (firewalld)
	  CGroup: name=systemd:/system/firewalld.service

另外,检查 firewall-cmd 是否能够经过输入如下命令来链接后台程序: 

~]$ firewall-cmd --state running
相关文章
相关标签/搜索