使用OSSEC和Suricata入侵检测系统实现简单的Web服务器保护

2020-05-27 07:30:17

这个设置的想法是保护小系统,就像我们保护大系统一样。

此解决方案使用经过验证的堆栈来保护Web服务器免受现代威胁。使用OSSEC、Suricata和现代Linux系统的内置防火墙功能,可以构建维护成本低、性能影响相对较小的稳定威胁防护平台。

它是专门设计成简单的。这个想法是,它会让你保持“需要知道的基础”,否则就会保持沉默,做好自己的工作。

这些组件共同保护Web服务器免受黑客、机器人、垃圾邮件发送者和其他令人讨厌的网络攻击。

然而,这个系统有一些实质性的限制。但事实并非如此:

可能不会让您通过HIPAA/FIPS/PCI-DSS审核员-这将涉及更多。

在这篇文章中,我将使用RFC-5737指定的公有IPv4地址。这些将代表使用的三台主机:

这些IPv4地址是“假的”且不可路由。别用这些东西尝试任何奇怪的东西。

由于通知的主要方式将是旧式电子邮件,所以这是最值得关注的地方。

要发送监控电子邮件,我们需要将Mailgan设置为SMTP中继。这通过使用邮件中继的专用子域(Postfix服务器将连接到该子域)稍微简化了操作。它还可以防止服务器持有主电子邮件帐户的凭据。

Mailgan基本上是免费的,但它确实需要支付信息,以防止系统被滥用。

设置帐户后,将验证域‘example.com’,并将所需的TXT和MX记录添加到DNS区域。我将在此项目中使用“mail.example.com”,我的主电子邮件服务器位于根“example.com”域下。

设置完成后,向导将生成一组SMTP凭据。将这些保存到下一步。

在服务器上,使用Postfix包设置邮件中继。这将允许服务器向管理邮箱发送电子邮件,但它将无法接收或读取其自身假脱机之外的任何邮箱。

myNetworks=127.0.0.0/8,[::1]/128 inet_interface=127.0.0.1 relayhost=[smtp.mailgan.org]:587 smtp_sasl_auth_enable=yes smtp_sasl_password_map=hash:/etc/postfix/sasl_passwd smtp_sasl_security_options=no匿名SMTP_TLS_Cafile=/etc/ssl/certs/Thawte_Primary_Root_。DEFER_UNAUTH_Destination ALIAS_MAPES=hash:/etc/aliases alias_database=hash:/etc/aliases smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes。

如果电子邮件在一两分钟内没有到达,请仔细检查配置并在系统日志中查找线索。

Suricata是我一直以来最喜欢的安全监控工具之一。它速度快、可伸缩,使用的资源少得惊人,并且可以创建高质量的网络警报。我之前在另一个自定义防火墙/IDS设备的项目中使用过它。在此项目中,它将仅用于生成警报摘要。

然后,可以在系统上安装软件包本身以及所有运行时依赖项。

安装后,要进行的最重要的配置更改是禁用eve.json日志输出。虽然这在构建SIEM时非常有用,但我们正在做一些简单得多的工作,因此写入每个到达服务器的数据包的磁盘空间使用量不是一个好主意。

则可以加载一组规则。在版本4和更高版本中,所有规则管理都是通过Suricata-update实用程序处理的。因此,可以下载并安装初始规则集(ET Open)。

OSSEC是一个基于主机的入侵检测系统,在该领域有着良好的记录。虽然它具有很强的可扩展性,可以将数百个节点连接到一台中央服务器,但对于此部署,我们将安装单个独立系统。

OSSEC的维护人员已经发布了一个易于安装的脚本。在设置APT存储库和密钥方面,它似乎工作得相当好。

安装程序包和依赖项后,停止该服务,直到可以完全配置它。

OSSEC的大多数配置部分对普通Linux用户是隐藏的,因此在本部分的其余部分中,我们必须以交互式root用户身份运行:

主配置文件位于/var/ossec/etc/ossec.conf,结构为XML。第一个要更改的部分是“global”部分中的电子邮件通知设置。值得注意的是,ossec本身并不直接发送电子邮件,而是将其传递给localhost上的本地Postfix中继服务器。

如果需要,您也可以将自己的IPv4地址列入白名单。如果您做了一些愚蠢的事情,这将防止被锁定在系统之外。

接下来,根据需要修改电子邮件警报阈值。默认级别是“7”--这确实给出了很多关于完整性更改的有用的通知,虽然有点垃圾。如果这不是我们想要的,可以增加。在我的例子中,我更喜欢在我的云服务器上设置无人值守升级,这样它们就可以保持最新的安全补丁。这可能会产生许多不必要的电子邮件警报,这些警报非常烦人。与所有与安全相关的事情一样,也有权衡之处。

主动响应是一个内置系统,它将采取行动阻止检测到的攻击。在基本的OSSEC安装中,它的配置是合理的-但是,一旦我们添加了网络警报,它就可以迅速开始阻止合法流量。因此,默认干预级别将从7增加到9。我还建议将“禁止时间”从默认的(30分钟)减少到5分钟,直到所有误报都能解决为止。

<;!--活动响应配置-->;<;active-response>;<;command>;host-Deny<;/command>;<;location>;local<;/location>;level>;9<;/level>;<;timeout>;300<;/timeout>;<;/active-Response。/command>;<;location>;local<;/location>;<;level>;9<;/level>;<;timeout>;300<;/timeout>;<;/Active-Response>;

最后,最重要的一块是指示OSSEC读取Suricata警报日志。这使监控系统能够全面了解操作系统行为和传入/传出网络活动。

可以在启动后检查日志文件/var/ossec/logs/ossec.log中的错误。如果成功,应该会在启动后一分钟内发送一封电子邮件。

OSSEC HID通知。2020 May 16 02:17:16接收者:my-Cool-server->;ossec-monitor规则:502已触发(级别3)->;";Ossec服务器已启动。";部分日志:ossec:ossec已启动。

不添加自定义规则,OSSEC对网络IDS警报的理解相当基本,只在第一次触发“新的”Suricata/Snort警报时生成8级警报。幸运的是,我们可以添加一些规则来帮助理解Suricata输出。请记住,Suricata警报的范围从1到3,其中1是最严重的,而ossec警报的范围从0到15,15是最严重的。

<;组名称=";Snort-FAST,";>;<;!--如果识别到1级威胁,则发出警报-&>;<;规则ID=";300011";级别=";10";>;类别&>ID<;/类别&><;匹配&>;[优先级:1]<;/匹配&/Description>;<;/规则&><;!--如果识别到多个1级威胁,则发出警报--&>规则ID=";300012";规则ID=";11";频率=";5";时间范围=";120";忽略=";90";>;<;IF_MATCHED_SID&gT;300011<;/IF_MATCHED。SAME_SOURCE_IP/&><;描述&>许多高严重性Suricata警报<;/描述&><;/规则&><;规则id=";300013";级别=";12";频率=";10";时间范围=";120";忽略=";90";>;<;IF_MATCHED。<;Same_Source_IP/<;说明<;几个严重程度很高的Suricata警报<;/说明&>;/规则&>规则id=";300014";级别=";13";频率=";20";时间范围=";120";忽略=";90";>;<。/IF_MATCHED_SID&><;Same_source_IP/>;<;description>;许多高严重性Suricata警报<;/Description>;<;/Rule>;<;规则ID=";3000015";Level=";14";频率=";50";TimeFrame=";120";忽略=";90。300011<;/if_matching_sid>;<;Same_source_IP/<;<;description>;多个高严重性Suricata警报<;/description>;<;/RULE&>;<;/GROUP>;

<;组名称=";Snort-FAST,";>;<;!--如果识别到2级威胁,则发出警报-&>;<;规则ID=";300001";级别=";7";>;类别&>ID<;/类别&><;匹配&>;[优先级:2]<;/匹配&/Description>;<;/Rule&>;<;!--如果识别到多个2级威胁,则发出警报--&>规则ID=";300002";规则ID=";8";频率=";5";时间范围=";120";忽略=";90";>;<;IF_MATCHED_SID&gT;300001<;/IF_MATCHED。SAME_SOURCE_IP/&><;描述&>许多中等严重程度的Suricata警报<;/描述&><;/规则&><;规则id=";300003";级别=";9";频率=";10";时间范围=";120";忽略=";90";>;<;IF_MATCHED。<;Same_Source_IP/<;说明<;几个中等严重程度的Suricata警报<;/说明&>;/规则&>规则id=";300004";级别=";10";频率=";20";时间范围=";120";忽略=";90";>;<。/IF_MATCHED_SID&><;Same_source_IP/>;<;Description>;许多中等严重程度的Suricata警报<;/Description&><;/Rule>;<;规则ID=";300005";Level=";11";Frequency=";50";Timeframe=";120";Ignore=";90(忽略规则=";";级别=";11";频率=";50";时间范围=";120";忽略=";90。300001<;/if_matching_sid>;<;Same_source_IP/<;<;description>;多个中度严重Suricata警报<;/Description>;<;/RULE&>;<;/GROUP>;

设置完成后,可以在系统上执行一些测试。最有可能创建警报的是简单地nmap系统:

一两秒钟内,Suricata日志文件中将生成许多警报。然后,OSSEC将拾取这些内容并将其添加到警报假脱机。接下来,将对这些警报进行聚合和计数,这将触发严重程度更高的事件。理想情况下,这将生成如下电子邮件警报:

OSSEC HIDS通知。2020-05-14 22:10:18接收来源:my-cool-server->;/var/log/suricata/fast.logRule:300012已发射(11级)-&>许多严重程度较高的Suricata警报";SRCIP:192.0.2.241Dst IP:198.51.100.241:35004->;198.51.100.241:35004->;198.51.100.44:198.51.100.44:80.日志的部分:05/14/2020-22:10:17.391373[1:100.44:3]ET扫描可能的网络映射用户代理[**][**][分类:网络应用程序攻击][优先级:1]{tcp}192.0.2.241:192.51.100.241->;198.51.100.44:80.。--通知结束。

如果你幸运的话,这也会产生积极的反应。当这种情况发生时,OSSEC将向iptables添加防火墙阻止,以阻止与“违规”端点进行任何通信。

在暴露在互联网上几天之后,很可能会有一两个机器人试图入侵你的服务器。因此,如果有一段时间,应该会有一两封这样的电子邮件:

OSSEC HID通知。2020-05-17 20:16:34接收者:my-cool-server->;/var/log/suricata/fast.logRule:300011已发射(10级)-&&34;Suricata Level 1警报";源IP:192.0.2.241Dst IP:198.51.100.44日志的部分:05/17/2020-20:16:33.926136[**][1:2029790:3]ET SCAN ELF/MIRAI变体用户代理(入站)[**][分类:尝试的管理员权限获取][优先级:1]{tcp}192.0.2.241:47586->;198.51.100.44:80--通知结束。

由于它生成了高度严重的网络警报,因此立即阻止了入侵,并禁止了违规的IP。您可以在日志文件中找到以下内容:

在所有部件都设置好之后,这就变成了一个维护成本相当低的系统。当然,也会发生IDS/IPS阻塞某些合法流量的事件。但这是现代安全领域生活的一部分。

随着高调的黑客攻击和网络攻击越来越频繁,我们都有责任尽最大努力保护我们的服务器。

由Disqus提供支持的评论