使用PSAD检测CVM入侵

简介

网络入侵检测的应用程序可以监控可疑流量并测试安全漏洞的网络接口。在本文中,我们将配置一个名为psad工具来监控我们的防火墙日志,并确定是否有问题。

入侵检测系统用于记录可疑连接,并在发生异常活动时进行报告。有些程序纯粹用于系统通知,而其他程序可以主动尝试阻止似乎意图造成伤害的流量。psad工具可以进行端口扫描攻击检测,psad是一种主动监视防火墙日志以确定扫描或攻击事件是否正在进行的软件。它可以提醒管理员,或采取积极措施来阻止威胁。

在本文中,我们将探讨如何在Ubuntu 的服务器上安装和配置psad。没有服务器的同学,我建议您使用腾讯云免费的开发者专属在线实验平台进行试验。

安装psad

psad入侵检测系统在Ubuntu的默认库中,因此可以通过apt轻松获取安装:

sudo apt-get update
sudo apt-get install psad

为了通过邮件把警告发给管理员,系统会要求您配置postfix邮件服务器。

您可以选择“Internet站点”,然后输入与您的服务器关联的域名。这是psad生成的电子邮件中“发件人”字段中使用的域部分。

配置IPTables规则

psad检测服务器端口上的活动的方法是监视防火墙生成的日志。默认情况下,Ubuntu使用的是iptables防火墙。

虽然您可以通过输入以下命令来简单地启用日志记录,但我需要更完善的配置:

sudo iptables -A INPUT -j LOG
sudo iptables -A FORWARD -j LOG

如果您输入了上述规则,请在配置之前刷新规则,以便我们可以从头开始。

sudo iptables -F

您可以输入以下内容来查看当前规则(此时应仅包括默认策略):

sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

现在我们可以开始附加我们的规则,主要是入站规则。告诉iptables删除我们不需要连接。需要添加允许我们的授权连接。

第一条规则将允许我们的服务器生成的所有流量。这种类型的连接通常用于服务以便彼此通信并轻松传递信息:

sudo iptables -A INPUT -i lo -j ACCEPT

接下来,我们要添加规则允许与现有连接相关的所有流量。这将允许我们当前的会话继续不间断监控:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

接下来,我们可以添加我们希望向公众开放的服务。对于SSH,我们可以添加如下所示的行:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

如果我们在默认端口80上运行Web服务器,我们可以添加如下规则:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

使用相同的语法可服务添加任何其他端口:

sudo iptables -A INPUT -p protocol --dport port_num -j ACCEPT

完成添加服务后,我们将删除所有剩余的连接。我们需要添加告诉iptables开始记录流量的规则。

sudo iptables -A INPUT -j LOG

我们还应该将此规则添加到FORWARD中,以防我们最终在其他地方转发流量。

sudo iptables -A FORWARD -j LOG

最后,让我们放弃所有尚未匹配的无关流量。我们可以通过添加一条匹配链中所有内容的规则来完成此操作,如下所示:

sudo iptables -A INPUT -j DROP

或者,我们可以使用内置策略功能来配置数据包传递到链中时发生的情况,而不匹配任何规则:

sudo iptables -P INPUT DROP

结果在功能上完全相同。

需要注意的一点是,如果您需要刷新iptables并设置DROP策略,则应在刷新之前撤消策略:

sudo iptables -P INPUT ACCEPT
sudo iptables -F

如果您不这样做,您的iptables规则将被刷新,并且只保留丢弃所有传入数据包的默认策略。这将切断进入服务器的所有网络流量,包括来自SSH连接的流量。

默认情况下,iptables在重新启动不会保持其规则,因此在测试完配置并确定它符合您的要求后,您可以安装并启用使这些规则:

sudo apt-get install iptables-persistent
sudo service iptables-persistent start

配置psad以检测扫描

现在我们已经配置了iptables规则,我们可以开始配置psad以开始解析日志。

使用root权限打开主psad配置文件:

sudo nano /etc/psad/psad.conf

您应该更改EMAIL_ADDRESSES参数以匹配生成报告时要通知的电子邮件地址。您还应该修改HOSTNAME以匹配您的域,以便它引用正确的机器:

EMAIL_ADDRESSES     address1@domain.com, address2@other.com;
HOSTNAME            your_domain.com;

请务必使用分号(;)结束每个行,以便psad正确读取文件。

您可能想查看psad的“危险级别”声明。这些级别是psad对威胁级别进行分类的一种方式。它们由事件中涉及的数据包数自动确定,但您也可以将某些类型的流量分配为某个危险等级。要达到的每个级别的默认阈值是:

DANGER_LEVEL1           5;
DANGER_LEVEL2           15;
DANGER_LEVEL3           150;
DANGER_LEVEL4           1500;
DANGER_LEVEL5           10000;

您可以根据psad的警报的灵敏度级别来更改这些级别。

您还可以通过PORT_RANGE_SCAN_THRESHOLD参数来配置psad的敏感程度。这里是确定在引发警报之前必须扫描的范围内的端口数。默认情况下,扫描两个端口后会引发警报。

PORT_RANGE_SCAN_THRESHOLD       1;

配置最重要的事情之一是配置IPT_SYSLOG_FILE参数,因为它当前没有指向syslog默认的文件。将其修改为指向syslog文件。

IPT_SYSLOG_FILE         /var/log/syslog;

如果您使用某些端口进行端口扫描,则应告诉psad忽略对这些端口的尝试,以便您不会通过测试触发警报:

IGNORE_PORTS            ports_or_range_to_ignore;

您同样可以忽略IGNORE_PROTOCOLSIGNORE_INTERFACESIGNORE_LOG_PREFIXES参数。

如果您发现过于频繁收到警报,则可以通过调整发送电子邮件级别来设置电子邮件的阈值:

MIN_DANGER_LEVEL           1;  # Controls psad logging and email alerts
EMAIL_ALERT_DANGER_LEVEL   1;  # Applies only for email alerts

您还可以通过以下方式直接限制电子邮件的数量:

EMAIL_LIMIT                0;

零意味着没有限制。此限制是来自单个IP地址可以生成的电子邮件数。让我们保存并关闭文件。

psad入侵检测

现在我们已经有了基本的psad配置,并且具有警报功能,我们可以实施我们的策略并激活我们的系统。

在开始之前,我们应该更新psad的签名定义,以便它能够正确识别已知的攻击类型。

sudo psad --sig-update

这将获取最新文件并更新数据库。

现在,我们需要重新启动服务以使用这些更新并实现配置更改。

sudo service psad restart

要查看psad检测到的事件的当前状态,请输入:

sudo service psad status
[+] psadwatchd (pid: 3737)  %CPU: 0.0  %MEM: 0.0
    Running since: Fri Jan 10 15:36:04 2014

[+] psad (pid: 3735)  %CPU: 0.0  %MEM: 0.3
    Running since: Fri Jan 10 15:36:04 2014
    Command line arguments: [none specified]
    Alert email address(es): example@domain.com

[+] Version: psad v2.1.7

[+] Top 50 signature matches:
        [NONE]

[+] Top 25 attackers:
        [NONE]

[+] Top 20 scanned ports:
        [NONE]

[+] iptables log prefix counters:
        [NONE]

    Total packet counters: tcp: 0, udp: 0, icmp: 0

[+] IP Status Detail:
        [NONE]

    Total scan sources: 0
    Total scan destinations: 0

[+] These results are available in: /var/log/psad/status.out

如您所见,尚未发现任何漏洞。我们还可以看到检测到的事件被记录到位于/var/log/psad/的文件中。

执行测试扫描

在另一台计算机上,我们使用nmap命令对这台服务器端口进行扫描。看看psad能否判断出来。我们将从另一台机器进行SYN tcp端口扫描。

sudo nmap -PN -sS server_domain_or_ip
Starting Nmap 5.51 ( http://nmap.org ) at 2014-01-10 15:54 EST
Nmap scan report for server_domain_or_ip
Host is up (0.013s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE
22/tcp open  ssh

Nmap done: 1 IP address (1 host up) scanned in 6.84 seconds

如您所见,此扫描显示我的防火墙配置每个端口都标记为“已过滤”,表示它受防火墙保护,但公开的SSH端口除外。

在您的服务器上,您应该重新运行status命令:

sudo service psad status

你应该看到更多的警报列表。由于该事件只是对1000个端口扫描,因此触发了许多不同威胁的签名匹配。对于针对特定端口或入口点的攻击,签名将更有帮助。

如果您设置了电子邮件提醒,那么您本应该收到一两封电子邮件。如果您有与您扫描的计算机相关联的域,则应该看到与扫描关联的所有者的“谁是”报告。

实施入侵防御

现在我们已经验证了我们可以检测到尝试访问我们服务器的活动,我们可以选择实现一种预防机制,其中psad可以自动修改iptables规则以禁止扫描程序。

在我们这样做之前,我们应该看看auto_dl文件:

sudo nano /etc/psad/auto_dl

此文件指定我们应自动设置某些IP地址的危险等级。例如,如果我们有一个持续尝试探测我们系统的攻击者,我们可以自动将它们设置为危险等级5:

attacker_ip          5;

您也可以免除某些IP地址引发psad的反应。如果我们没有在iptables中明确添加规则,我们可以在这里添加localhost并将其设置为“0”。

我们应该将我自己的计算机IP添加到此列表中,以便psad不会锁定自己:

local_computer_ip        0;

完成后保存并关闭文件。

再次打开psad配置文件:

sudo nano /etc/psad/psad.conf

搜索参数ENABLE_AUTO_IDS。这是允许psad修改我们的防火墙以阻止某些地址的规则。如果您想自动执行此操作,可以像这样更改:

ENABLE_AUTO_IDS         Y;

如果要确定什么构成足以阻止违规IP的威胁级别。我们可以通过调整此参数来做到这一点:

AUTO_IDS_DANGER_LEVEL       5;

另一个重要选项是以秒为单位的总阻止时间:

AUTO_BLOCK_TIMEOUT          3600;

这将默认阻止他们一个小时。

测试入侵防御

我们可以测试它是如何工作的。在同一配置文件中,我们将设置以下参数:

ENABLE_AUTOIDS              Y;
AUTO_IDS_DANGER_LEVEL       4;
AUTO_BLOCK_TIMEOUT          60;;

这将打开自动防火墙配置,将阈值设置为危险等级4,我们用正常的SYN扫描命中,并将阻止时间设置为60秒。

保存并关闭文件。

auto_dl如果您添加了家庭IP地址,请打开该文件,并暂时将其注释掉。

# local_computer_ip      0;

现在,重新启动psad以使其重新读取这些文件:

sudo service psad restart

在自己的电脑上,您可以重新运行上次执行的扫描:

sudo nmap -PN -sS server_domain_or_ip

此时,几秒钟后,如果您通过SSH连接到psad计算机,则应断开连接。您将60秒内无法再连接。

这是因为psad在你的扫描到达足够的端口达到危险等级4时采取了行动。它修改了iptables规则,阻止您的ip进行扫描。

一旦您能够再次登录,您可以通过查看您的iptable规则来查看此禁止:

sudo iptables -S
-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N PSAD_BLOCK_FORWARD
-N PSAD_BLOCK_INPUT
-N PSAD_BLOCK_OUTPUT
-A INPUT -j PSAD_BLOCK_INPUT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -j LOG
-A FORWARD -j PSAD_BLOCK_FORWARD
-A FORWARD -j LOG
-A OUTPUT -j PSAD_BLOCK_OUTPUT

现在您已经测试了此功能,请将其还原为您要使用的功能。如果您计划实际使用此功能,则应该增加禁令长度。此外,您应该重新添加您将要连接的IP地址:

local_computer_ip           0;
ENABLE_AUTOIDS              Y;
AUTO_IDS_DANGER_LEVEL       5;
AUTO_BLOCK_TIMEOUT          3600;

完成为实际应用程序配置服务后,不要忘记重新启动psad:

sudo service psad restart

请记住,某些攻击可能会欺骗您的服务器而使用其他IP地址。攻击者可能会导致您意外禁止合法站点或服务。因此,禁止服务操作应该要非常小心。

结论

通过正确配置psad等网络入侵检测工具,可以在问题发生之前增加获得威胁所需警告的机会。像psad这样的工具可以为您提供高级警告,并可以自动处理某些情况。

有效使用psad的关键是适当地配置危险等级和电子邮件警报。此工具与其他入侵检测资源相结合,可以提供相当好的覆盖范围,以便能够检测入侵企图。


参考文献:《How To Use psad to Detect Network Intrusion Attempts on an Ubuntu VPS》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux运维学习

linux学习第三十篇:iptables filter表小案例,iptables nat表应用

iptables filter表小案例 案列:只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.188.0/2...

1936
来自专栏Python数据科学

Python爬虫之模拟登录京东商城

首先感谢大家的大力支持,博主会持续更新精彩文章,分享更多技术干货。另外,最近在新建的QQ群中结识了一些朋友,气氛很好,大家互相分享技术内容,博主也从中收获了不少...

3192
来自专栏Coding+

macOS 一键启动 AS 内置 AVD

通常我们使用 AS 自带的 AVD 都是通过 run 一个项目来自动启动它的,并且该 AVD 在外部也没有相应的启动快捷方式,本文就介绍一下 Win、Mac 等...

1644
来自专栏杨建荣的学习笔记

防火墙设置的小问题(r6笔记第94天)

今天也算忙忙碌碌,处理了不少小问题,自己也总结几个问题,本来写点MySQL和mongoDB的东西,发现还是没有准备好,再补补分享给大家。 ### 批量处理防火墙...

3456
来自专栏数据和云

安全预警:独立发布的Oracle严重 CVE-2018-3110 公告

在 2018年8月10日,Oracle 独立的发送了一封"安全警告"邮件给所有的 Oracle 用户,这封邮件的标题是:Oracle Security Aler...

1292
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Iptables实现基本防火墙模板

实施防火墙是保护服务器的重要一步。其中很大一部分是在于对您的网络实施流量限制有决定性作用的个别规则和政策。防火墙iptables也允许您对应用规则的结构框架有发...

1210
来自专栏信安之路

Mimikatz 攻防杂谈

前几天看到了老外一篇讲 mimikatz 防御的文章,感觉行文思路还不错,但是内容稍有不足,国内也有一篇翻译,但是只是照着错误翻译的,所以就萌生了把那篇优秀文章...

3972
来自专栏落影的专栏

iOS开发笔记(五)

前言 社会的模式很多是重复的,当你做一样事情很擅长时,与之类似的事情也能触类旁通。 正文 Code开发 1、delegate的trick 很多人习惯在调用de...

4554
来自专栏惨绿少年

企业防火墙之iptables

1.1 企业中安全优化配置原则 尽可能不给服务器配置外网ip ,可以通过代理转发或者通过防火墙映射.并发不是特别大情况有外网ip,可以开启防火墙服务. 大并发的...

8246
来自专栏北京马哥教育

Linux防火墙iptables简明教程

一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边...

5019

扫码关注云+社区

领取腾讯云代金券