攻击者正在找到复杂的方法来渗透甚至受入侵检测和防御系统保护的远程网络。没有 IDS/IPS 可以阻止或最大限度地减少决心接管您网络的黑客的攻击。不正确的配置允许攻击者绕过所有已实施的网络安全措施。
在本文中,我将解释安全工程师或系统管理员如何预防这些攻击。
几乎所有 Linux 发行版都带有内置防火墙,以保护在 Linux 主机上运行的进程和应用程序。大多数防火墙都设计为 IDS/IPS 解决方案,其主要目的是检测和阻止恶意数据包访问网络。
Linux 防火墙通常带有两个接口:iptables 和 ipchains。大多数人将这些接口称为“iptables 防火墙”或“ipchains 防火墙”。这两个接口都设计为数据包过滤器。Iptables 充当有状态防火墙,根据先前的数据包做出决策。Ipchains 不根据先前的数据包做出决策;因此,它被设计为无状态防火墙。
在本文中,我们将重点介绍 iptables 防火墙,它随内核版本 2.4 及更高版本一起提供。
使用 iptables 防火墙,您可以创建策略或有序的规则集,这些规则集向内核传达如何处理特定类别的数据包。内核内部是 Netfilter 框架。Netfilter 既是一个框架,也是 iptables 防火墙的项目名称。作为一个框架,Netfilter 允许 iptables 挂钩旨在对数据包执行操作的函数。简而言之,iptables 依赖 Netfilter 框架来构建防火墙功能,例如过滤数据包数据。
每个 iptables 规则都应用于表中的链。iptables 链是规则的集合,这些规则与具有相似特征的数据包进行比较,而表(例如 nat 或 mangle)描述了各种功能类别。例如,mangle 表会更改数据包数据。因此,更改数据包数据的专用规则应用于它,而过滤规则应用于 filter 表,因为 filter 表会过滤数据包数据。
Iptables 规则有一组匹配项以及一个目标,例如 Drop
或 Deny
,用于指示 iptables 如何处理符合规则的数据包。因此,如果没有目标和一组匹配项,iptables 就无法有效地处理数据包。目标仅指如果数据包与规则匹配时要采取的特定操作。另一方面,匹配项必须由每个数据包满足,iptables 才能处理它们。
现在我们了解了 iptables 防火墙的运作方式,让我们看看如何使用 iptables 防火墙来检测和拒绝或丢弃伪造地址。
启用源地址验证
当我处理来自远程主机的伪造地址时,我作为安全工程师采取的第一步是在内核中启用源地址验证。
源地址验证是一项内核级功能,可丢弃伪装成来自您网络的数据包。它使用反向路径过滤器方法来检查接收到的数据包的来源是否可以通过其进入的接口访问。
要启用源地址验证,请使用下面的简单 shell 脚本,而不是手动执行
#!/bin/sh
#author’s name: Michael K Aboagye
#purpose of program: to enable reverse path filtering
#date: 7/02/18
#displays “enabling source address verification” on the screen
echo -n "Enabling source address verification…"
#Overwrites the value 0 to 1 to enable source address verification
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo "completed"
前面的脚本在执行时,会显示消息 Enabling source address verification
,而不附加新行。反向路径过滤器的默认值为 0.0,这意味着不进行源验证。因此,第二行只是将默认值 0 覆盖为 1。1 表示内核将通过确认反向路径来验证来源。
最后,您可以使用以下命令通过选择以下目标之一来丢弃或拒绝来自远程主机的伪造地址:DROP
或 REJECT
。但是,出于安全原因,我建议使用 DROP
。
将“IP-address”占位符替换为您自己的 IP 地址,如下所示。此外,您必须选择使用 REJECT
或 DROP
中的一个;这两个目标不能一起使用。
iptables -A INPUT -i internal_interface -s IP_address -j REJECT / DROP
iptables -A INPUT -i internal_interface -s 192.168.0.0/16 -j REJECT/ DROP
本文仅提供有关如何使用 iptables 防火墙防止来自远程主机的欺骗攻击的基础知识。
7 条评论