APP下载

Gnu/Linux 系统nftables 防火墙的本地IPS 能力部署

2019-12-16西安田立军解宝琦

网络安全和信息化 2019年12期
关键词:配置文件数据包端口

西安 田立军 解宝琦

随着各Gnu/Linux 系统厂商以及社区逐步开始采用新的内核作为其发行版本的默认内核,防火墙机制采用了更新的nftables 防火墙机制,尽管红帽公司提供了“firewalld.service”防火墙服务组件以及相关的配置管理命令“firewallconfig”“firewall-cmd”来对防火墙进行管理,但该服务组件目前还没有在其他发行版或者社区版本内得到统一使用。

为了更好的帮助读者朋友们理解该防火墙机制,笔者将自己在工作中直接使用nftables 进行手工创建配置,从而使系统具有本地IPS能力的过程进行总结。

目前多数主流的新发行版Gnu/Linux 系统,在默认安装完成后的“Systemd”系统和服务管理器中就已经添加了新的“nftables.serivce”子服务配置文件,同时依然支持iptables 规则和iptables 命令格式。

不过为了彻底将防火墙升级到nftables 机制,我们可以在没有“firewalld.service”的发行版系统中直接启用“nftables.service”服务来使用新的防火墙。通过命令“vi/lib/systemd/system/nftables.service”,从该文件中的语句“ExecStart=/usr/sbin/nft -f/etc/nftables.conf”,我们可以清楚的看到nftables 防火墙的默认配置和规则文件一般都放置在系统的/etc/nftables.conf目录中,不过该默认配置文件中只包含一个名为“inet filter”的简单IPv4/IPv6防火墙列表。inet 表中可以同时适用于IPv4 和IPv6的规则,但不能用于nat 类型的链,只能用于filter 类型的链。

为了保持和iptables防火墙的规则类比,便于用户熟悉,我们可以使用如下nftables 命令创建相应的表和链来建立一个类似于传统iptables 防火墙框架,创建过程如下:

1.创建nft 表,表包含链。与iptables中的表不同,nftables 中没有内置表,表的数量和名称由用户决定,但每个表只有一个地址簇,并且只适用于该簇的数据包。

表可以指定五个(IP、IPv6、inet、ARP、bridge)簇中的一个,用户可以依次执行如下“nft add table filter”“nft add table ip6 filter”“nft add table bridge filter”三条命令,nftables 将为我们分别建立三个IP、IPv6、bridge 簇并且表名均为filter 的防火墙框架。

2.创建链,链的目的是保存规则。与iptables 中的链不同,nftables 没有内置链。这意味着与iptables不同,如果链没有使用netfilter 框架中的任何类型或钩子,则流经这些链的数据包不会被nftables 触及。

链有两种类型:基本链是来自网络栈的数据包的入口点,其中指定了钩子值,其实可以理解为iptables 防火墙的默认规则;常规链可以理解为其它用户自定义的规则链。

使用如下命令为每一个表建立“INPUT”“FORWARD”“OUTPUT”链,并且设置基础链,其中IP 簇filter 表“INPUT”链默认为丢弃所有数据包,的相应的命令格式如下:

(1)添 加IP 簇filter表相应链命令集。

(2)添加IPv6 簇filter表相应链命令集。

(3)添 加bridge 簇filter 表相应链命令集。

3.添加规则,规则由语句或表达式构成,包含在链中。

将一条规则添加到链中使用如下语法:

nft add rule family table chain handle handle statement

规则添加到handle 处,这是可选的。如果不指定,则规则添加到链的末尾,类似于“iptables -A”方法。

将规则插入到指定位置使用如下语法:

如果未指定handle,则规则插入到链的开头,类似于“iptables -I”方法。

以下是用户根据自己的实际情况添加的具体规则:

(1)放行本地回环接口“lo”的所有流量。

(2)放 行established、related 状态的数据包,这一点很重要,因为多数对外访问的数据包在收到对端主机回包时多为这两种状态,如果在INPUT 链中不放行该类型数据包,即使本机的OUTPUT 链默认为ACCEPT,让所有数据包出站,系统也会主动在INPUT 链中丢弃掉相应的回包而导致数据无法交互。具体命令如下:

(3)阻断存在重大安全隐患的系统端口,包括已经公布的比如勒索病毒等端口,nftables 在配置过程中,当用户使用端口进行添加后,nftables 会自动将端口转换为service 模式,用户可以通过使用命令”nft describe tcp dport”对照查看。阻断安全隐患的系统端口具体命令如下:

(4)对服务进行限流控制,防止DDoS 攻击或者CC攻击造成系统服务中断,可以通过limit 限制通信速率,以下是接受一个每秒最多10个Web 或者HTTPS 或 者DNS查询请求的数据包,同时可以有2个包超出限制的规则具体命令:

经过以上配置后,我们的主机就具有了很好的本机IPS 能力,从而应对不论是面向南北跨路由器的访问流量,还是本地网络内的东西访问流量,常规的恶意扫描或者恶意攻击基本是够用了。

之后用户可以使用命令“nft list ruleset >/etc/nftables.conf”将 这些规则保存在nftables的默认配置文件中,并使用“systemctl enable nftables.service”打开该服务的默认启动模式,之后系统将在开机时自动启动nftables 防火墙并应用相应规则。用户也可以通过命令“vi/etc/nftables.conf”来直接按照相应规则编辑该文件来修改防火墙配置,以确保自己的系统处于本机防火墙IPS 能力的保护之下。

希望本文对通过使用新的Gnu/Linux 系统提供的nftables 防火墙机制,建设属于自己的本机IPS 能力有用,并能帮助到读者。

猜你喜欢

配置文件数据包端口
基于Docker的实时数据处理系统配置文件管理软件的设计与实现
二维隐蔽时间信道构建的研究*
一种有源二端口网络参数计算方法
从Windows 10中删除所有网络配置文件
一种端口故障的解决方案
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
用软件处理Windows沙盒配置文件
多按键情况下,单片机端口不足的解决方法
互不干涉混用Chromium Edge
现有网络架构及迁移方案