您的位置:首页 > 运维架构 > Linux

使用CentOS/RHEL防火墙

2016-03-08 16:59 337 查看
https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html

4.5.1. 防火墙简介

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

4.5.2. 了解防火墙

一个图像化的配置工具,firewall-config,用于配置
firewalld
:它依次用 iptables工具 与执行数据包筛选的内核中的 Netfilter 通信,
使用图像化的 firewall-config 工具,按下 Super 键进入活动总览,点击
firewall
,然后按下 Enter。firewall-config 工具就出现了。您将被提示输入管理员密码。
firewall-config 工具里有一个标记为 Configuration 的下拉菜单,可以在 运行时间 和 永久 两种模式之间进行选择。要注意,如果您选择了 Permanent ,在左上角会出现一排附加的图标。因为不能在运行模式下改变一个服务参数,所以这些图标仅在永久配置模式中出现。
firewalld
提供的是动态的防火墙服务,而非静态的。因为配置的改变可以随时随地立刻执行,不再需要保存或者执行这些改变。现行网络连接的意外中断不会发生,正如防火墙的所有部分都不需要重新下载。
提供命令行客户端,firewall-cmd,用于进行永久性或非永久性运行时间的改变,正如在
man firewall-cmd(1)
所解释的一样。永久性改变需要按照
firewalld(1)
手册页的解释来进行。注意,
firewall-cmd
命令可以由
root
用户运行,也可以由管理员用户――换言之,
wheel
群体的成员运行。在后一种情况里,命令将通过 polkit 进程来授权。
firewalld
的配置储存在
/usr/lib/firewalld/
/etc/firewalld/
里的各种 XML 文件里,这样保持了这些文件被编辑、写入、备份的极大的灵活性,使之可作为其他安装的备份等等。
其他应用程序可以使用 D-bus 和
firewalld
通信。

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

firewalld
和 iptables service 之间最本质的不同是:
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
然后按下 Enter,firewall-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”(直接接口),它可以直接通过 iptables、ip6tables 和 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: