LINUX学习(8)

iptables 与firewalld 防火墙

本章讲解了如下内容:
➢ 防火墙管理工具;
➢ iptables;
➢ firewalld;
➢ 服务的访问控制列表

防火墙管理工具

防火墙策略可以基于流量的源目地址、端口号、协议、应用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略 规则相匹配,则执行相应的处理,反之则丢弃
iptables 与 firewalld 都不是真正的防火墙, 它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。iptables 服务会把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理,而 firewalld 服务则是把配置好的防火墙策略交由内核层面的 nftables 包过滤框架来处理。

iptables

策略与规则链

防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作 并去执行匹配项中定义的行为(即放行或阻止)。如果在读取完所有的策略规则之后没有匹配 项,就去执行默认的策略。一般而言,防火墙策略规则的设置有两种:一种是“通”(即放行), 一种是“堵”(即阻止)。当防火墙的默认策略为拒绝时(堵),就要设置允许规则(通),否则 谁都进不来;如果防火墙的默认策略为允许时,就要设置拒绝规则,否则谁都能进来,防火墙 也就失去了防范的作用。 iptables 服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则 链,而规则链则依据数据包处理位置的不同进行分类,具体如下:
➢ 在进行路由选择前处理数据包(PREROUTING); ➢ 处理流入的数据包(INPUT);
➢ 处理流出的数据包(OUTPUT);
➢ 处理转发的数据包(FORWARD);
➢ 在进行路由选择后处理数据包(POSTROUTING)
仅有策略规则还不能保证社区的安全,保安还应该知道采用什么样的动作来处理 这些匹配的流量,比如“允许”、“拒绝”、“登记”、“不理它”。这些动作对应到 iptables 服务 的术语中分别是 ACCEPT(允许流量通过)、REJECT(拒绝流量通过)、LOG(记录日志信息)、 DROP(拒绝流量通过)。“允许流量通过”和“记录日志信息”都比较好理解,这里需要着重 讲解的是 REJECT 和 DROP 的不同点。就 DROP 来说,它是直接将流量丢弃而且不响应; REJECT 则会在拒绝流量后再回复一条“您的信息已经收到,但是被扔掉了”信息,从而让流 量发送方清晰地看到数据被拒绝的响应信息。
当把 Linux 系统中的防火墙策略设置为 REJECT 拒绝动作后,流量发送方会看到端口不可达的响应:
在这里插入图片描述

iptables 中基本的命令参数

iptables 命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配, 一旦匹配成功,iptables 就会根据策略规则所预设的动作来处理这些流量。另外,再次提醒一 下,防火墙策略规则的匹配顺序是从上至下的,因此要把较为严格、优先级较高的策略规则 放到前面,以免发生错误。
在这里插入图片描述
把 INPUT 规则链的默认策略设置为拒绝

[root@linuxprobe ~]# iptables -P INPUT DROP 
[root@linuxprobe ~]# iptables -L 
Chain INPUT (policy DROP)

前文提到,防火墙策略规则的设置有两种:通和堵。当把 INPUT 链设置为默认拒绝后, 就要在防火墙策略中写入允许策略了,否则所有到来的流量都会被拒绝掉。另外,需要注意 的是,规则链的默认拒绝动作只能是DROP,而不能是 REJECT
在日常运维工作中,经常会使用 ping 命令来检查对方主机是否在线,而向防火墙的 INPUT 规则链中添加一条允许 ICMP 流量进入的策略规则就默认允许了这种 ping 命令检测行为
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再次重申,防火墙策略规则是按照从上到下的顺序匹配的,因此一定要把允许动作放到拒绝动作前面,否则所有的流量就将被拒绝掉,从而导致任何主机都无法访问我们的服务。 另外,这里提到的 22 号端口是 ssh 服务使用的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
向INPUT规则链中添加拒绝所有主机访问本机1000-1024端口

[root@linuxprobe ~]# iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT 
[root@linuxprobe ~]# iptables -A INPUT -p udp --dport 1000:1024 -j REJECT

注意,使用 iptables 命令配置的防火墙规则默认会在系统下一次重启时失效,如果想让配置的防火墙策略永久生效,还要执行保存命令
在这里插入图片描述
此处出错参考这里

firewalld

RHEL 7系统中集成了多款防火墙管理工具,其中firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于CLI(命 令行界面)和基于GUI(图形用户界面)的两种管理方式
相较于传统的防火墙管理配置工具,firewalld 支持动态更新技术并加入了区域(zone)的 概念。简单来说,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以 根据生产场景的不同而选择合适的策略集
在这里插入图片描述
在这里插入图片描述

终端管理工具

firewall-cmd 是 firewalld 防火墙配置管理工具的 CLI(命令行界面)版本。它的参数一般都是以“长 格式”来提供的,大家不要一听到长格式就头大,因为 RHEL 7 系统支持部分命令的参数补 齐,其中就包含这条命令
在这里插入图片描述
与 Linux 系统中其他的防火墙策略配置工具一样,使用 firewalld 配置的防火墙策略默认 为运行时(Runtime)模式,又称为当前生效模式,而且随着系统的重启会失效。如果想让配置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用 firewall-cmd 命令正常 设置防火墙策略时添加–permanent 参数,这样配置的防火墙策略就可以永久生效了。但是, 永久生效模式有一个“不近人情”的特点,就是使用它设置的策略只有在系统重启之后才 能自动生效。如果想让配置的策略立即生效,需要手动执行 firewall-cmd --reload 命令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
firewalld 中的富规则表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端 口号、源地址和目标地址等诸多信息进行更有针对性的策略配置。它的优先级在所有的防火 墙策略中也是最高的。比如,我们可以在 firewalld 服务中配置一条富规则,使其拒绝 192.168.10.0/24 网段的所有用户访问本机的 ssh 服务(22 端口)

[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-rich-rule=" rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject" 
success 
[root@linuxprobe ~]# firewall-cmd --reload
success 

在这里插入图片描述

图形管理工具

firewall-config是 firewalld 防火墙配置管理工具的 GUI(图形用户界面)版本,几 乎可以实现所有以命令行来执行的操作
其功能具体如下。
➢ 选择运行时(Runtime)模式或永久(Permanent)模式的配置。
➢ :可选的策略集合区域列表。
➢ :常用的系统服务列表。
➢ :当前正在使用的区域。
➢ :管理当前被选中区域中的服务。
➢ :管理当前被选中区域中的端口。
➢ :开启或关闭 SNAT(源地址转换协议)技术。
➢ :设置端口转发策略。
➢ :控制请求 icmp 服务的流量。
➢ :管理防火墙的富规则。
➢ :管理网卡设备。
➢ :被选中区域的服务,若勾选了相应服务前面的复选框,则表示允许与之相关的流量。
➢ :firewall-config 工具的运行状态。
在这里插入图片描述
在使用 firewall-config 工具配置完防火墙策略之后,无须进 行二次确认,因为只要有修改内容,它就自动进行保存
SNAT(Source Network Address Translation,源网络地址转换)技术。SNAT 是一种为了解决 IP 地址匮乏而设计的技术,它 可以使得多个内网中的用户通过同一个外网 IP 接入 Internet。如果网关服务器没有应用 SNAT 技术,则互 联网中的网站服务器在收到 PC 的请求数据包,并回送响应数据包时,将无法在网络中找到这 个私有网络的 IP 地址,所以 PC 也就收不到响应数据包了
在这里插入图片描述
在这里插入图片描述
后面内容还是看书《linux就该这么学》第8章第三节firewalld教程

服务的访问控制列表

TCP Wrappers是RHEL 7系统中默认启用的一款流量监控程序,它能够根据来访主机的地址 与本机的目标服务程序作出允许或拒绝的操作。换句话说,Linux 系统中其实有两个层面的防火墙,第一种是前面讲到的基于 TCP/IP 协议的流量过滤工具,而 TCP Wrappers服务则是能允许或禁止 Linux系统提供服务的防火墙,从而在更高层面保护了Linux系统的安全运行。 TCP Wrappers服务的防火墙策略由两个控制列表文件所控制,用户可以编辑允许控制列表文 件来放行对服务的请求流量,也可以编辑拒绝控制列表文件来阻止对服务的请求流量。控制列表 文件修改后会立即生效,系统将会先检查允许控制列表文件/etc/hosts.allow,如果匹配到相应 的允许策略则放行流量;如果没有匹配,则去进一步匹配拒绝控制列表文件/etc/hosts.deny,若 找到匹配项则拒绝该流量。如果这两个文件全都没有匹配到,则默认放行流量
在这里插入图片描述
在配置 TCP Wrappers 服务时需要遵循两个原则:
➢ 编写拒绝策略规则时,填写的是服务名称,而非协议名称;
➢ 建议先编写拒绝策略规则,再编写允许策略规则,以便直观地看到相应的效果
在这里插入图片描述
接下来,在允许策略规则文件中添加一条规则,使其放行源自 192.168.10.0/24 网段,访 问本机 sshd 服务的所有流量。可以看到,服务器立刻就放行了访问 sshd 服务的流量,效果非 常直观
在这里插入图片描述

复习题

1、在 RHEL 7 系统中,iptables 是否已经被 firewalld 服务彻底取代?
没有,iptables 和 firewalld 服务均可用于 RHEL 7 系统。
2.请简述防火墙策略规则中 DROP 和 REJECT 的不同之处。
DROP 的动作是丢包,不响应;REJECT 是拒绝请求,同时向发送方回送拒绝信息。

3.如何把 iptables 服务的 INPUT 规则链默认策略设置为 DROP?
执行命令 iptables -P INPUT DROP 即可。

4.怎样编写一条防火墙策略规则,使得 iptables 服务可以禁止源自 192.168.10.0/24 网段的流 量访问本机的 sshd 服务(22 端口)?
执行命令 iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j REJECT 即可。

5.请简述 firewalld 中区域的作用。
可以依据不同的工作场景来调用不同的 firewalld 区域,实现大量防火墙策略规则的快
速切换。

6.如何在 firewalld 中把默认的区域设置为 dmz?
执行命令 firewall-cmd --set-default-zone=dmz 即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值