OSSEC For Website Security: PART II - Distributed Architectures Using Agents and Managers
作者:Tony Perez | 2018年11月30日
本文假设您已部署OSSEC。如需复习,请参考2013年3月发布的《OSSEC用于网站安全:第一部分》。
OSSEC是流行的开源主机入侵检测系统(HIDS),由Daniel Cid创建,目前由庞大的安全专业人士社区维护。请注意,我的安装不直接使用官方仓库,而是运行在Daniel的仓库上(详细说明见上一篇文章)。
在本系列中,我将分享OSSEC部署的基础要素。本文重点介绍部署分布式架构的重要性,利用代理/管理器选项。后续文章将涵盖为WordPress等CMS应用程序配置的最佳方式、调整引擎以利用警报和通知。
如有疑问,请随时提出。
代理/管理器架构
主动监控、聚合和存储服务器活动(即日志)对安全专业人士至关重要。这是安全中不太吸引人的方面,但拥有此活动的真实来源对于理解服务器上发生的情况至关重要——尤其是在入侵后。
事实上,如果您运营在线商店,您实际上有义务存储和管理此活动:
定期监控和测试网络
要求10:跟踪和监控所有对网络资源和持卡人数据的访问
日志记录机制和跟踪用户活动的能力对于预防、检测和最小化数据泄露的影响至关重要。所有环境中的日志存在允许在出现问题时进行彻底跟踪、警报和分析。如果没有系统活动日志,确定泄露原因非常困难,甚至不可能。(来源:要求和安全评估程序,版本3.2.1)
为了协助此过程,我以分布式方式部署OSSEC,利用其代理和管理器架构。虽然我对我的Web服务器部署有一定信心,但我意识到总有可能遗漏某些威胁。因此,我总是将活动推送到远程服务,该服务唯一负责管理、聚合和报告整个架构中的所有活动。
这为我提供了以下保证:
- 降低攻击者尝试删除或修改活动的风险;
- 将整个环境的活动整合到一个真实记录中,尤其在管理多个服务器时非常重要;
- 促进整个堆栈的同步编排创建(即,所有工作并报告相同);
简而言之,此图突出显示了我的部署:
![部署示意图]
部署代理/管理器架构
如果您运行本地OSSEC实现,则需要重新运行OSSEC安装程序。有方法可以破解配置,但除非您有一个空闲的周末(这从来不止一件事…),否则不值得。
在您的Web服务器上:
选择您的语言,安装程序将开始。此时您将设置代理:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
OSSEC HIDS r2016-04 Installation Script - http://www.ossec.net
您即将开始OSSEC HIDS的安装过程。
您的系统必须预安装C编译器。
如有任何问题或评论,请发送电子邮件至dcid@ossec.net(或daniel.cid@gmail.com)。
- 系统:Linux
- 用户:root
- 主机:[webserver名称]
-- 按ENTER继续或Ctrl-C中止。 --
1- 您想要哪种安装(服务器、代理、本地或帮助)?代理
|
下一步是提供管理器的IP,如果您在安装时不知道,没关系。您始终可以在ossec.conf文件中更新IP。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
OSSEC HIDS r2016-04 Installation Script - http://www.ossec.net
您即将开始OSSEC HIDS的安装过程。
您的系统必须预安装C编译器。
如有任何问题或评论,请发送电子邮件至dcid@ossec.net(或daniel.cid@gmail.com)。
- 系统:Linux
- 用户:root
- 主机:[webserver名称]
-- 按ENTER继续或Ctrl-C中止。 --
1- 您想要哪种安装(服务器、代理、本地或帮助)?代理
- 选择代理(客户端)安装。
2- 设置安装环境。
- 选择安装OSSEC HIDS的位置[/var/ossec]:
- 安装将在/var/ossec进行。
3- 配置OSSEC HIDS。
3.1- OSSEC HIDS服务器的IP地址是什么?: [管理器IP]
- 添加服务器IP [管理器IP]
|
按照说明设置配置选项。完成后,最后一步是按键盘上的Enter完成安装。
这将配置您的本地代理,但现在您需要导航到OSSEC管理器以确保它准备好接受来自代理的通信。您通过创建密钥对来实现这一点,代理和管理器将使用该密钥对相互认证。
在您的OSSEC管理器上导航到Manage Agents应用程序:
1
2
3
4
5
6
7
8
9
10
11
12
|
# /var/ossec/bin/manage_agents
****************************************
* OSSEC HIDS v2016-04 代理管理器。 *
* 以下选项可用: *
****************************************
(A)添加代理(A)。
(E)提取代理的密钥(E)。
(L)列出已添加的代理(L)。
(R)移除代理(R)。
(Q)退出。
选择您的操作:A,E,L,R或Q:
|
您想添加一个新代理,因此在输入字段中输入A。然后它会问您一系列问题,这是您需要考虑命名约定的地方。例如,见下文:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
****************************************
* OSSEC HIDS v2016-04 代理管理器。 *
* 以下选项可用: *
****************************************
(A)添加代理(A)。
(E)提取代理的密钥(E)。
(L)列出已添加的代理(L)。
(R)移除代理(R)。
(Q)退出。
选择您的操作:A,E,L,R或Q: a
- 添加新代理(使用'\q'返回主菜单)。
请提供以下信息:
* 新代理的名称:pb.webserver1
* 新代理的IP地址:any
* 新代理的ID[001]:01001
代理信息:
ID:01001
名称:pb.webserver1
IP地址:any
确认添加?(y/n): y
|
您看到的是我使用PB(perezbox)来标识我负责的服务器(假设您可能管理不是您的服务器),并且我为每个Web服务器应用命名约定(例如,webserver1)。我可以选择使其更具描述性(也许使用该服务器上的域名)。
注意:我为“新代理的IP地址”选择ANY,这是故意的。我发现这比明确定义代理服务器的IP更有效。
如果一切看起来都好,选择Y。
如果全部成功,它将看起来像这样——询问您下一步想做什么:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
代理已添加。
****************************************
* OSSEC HIDS v2016-04 代理管理器。 *
* 以下选项可用: *
****************************************
(A)添加代理(A)。
(E)提取代理的密钥(E)。
(L)列出已添加的代理(L)。
(R)移除代理(R)。
(Q)退出。
选择您的操作:A,E,L,R或Q: e
|
在我们的案例中,我们想提取新代理的密钥。所以我们输入E。
1
2
3
4
5
6
7
|
可用代理:
ID: 01001, 名称: pb.webserver1, IP: any
ID: 01002, 名称: pb.webserver2, IP: any
提供要提取密钥的代理的ID(或'\q'退出):01001
代理'01001'的密钥信息是:
[将为新代理提供唯一密钥]
|
现在您想切换到代理服务器并将该密钥复制到该服务器。您通过在代理服务器上导航到Manage Agents应用程序来实现:
1
2
3
4
5
6
7
8
9
10
|
# /var/ossec/bin/manage_agents
****************************************
* OSSEC HIDS v2016-04 代理管理器。 *
* 以下选项可用: *
****************************************
(I)从服务器导入密钥(I)。
(Q)退出。
选择您的操作:I或Q:
|
选择I(导入)选项。这将使您有机会将密钥复制到新代理,并确认数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
* 提供服务器生成的密钥。
* 最佳方法是剪切和粘贴。
*** 注意:不要包含空格或换行符。
在此处粘贴(或'\q'退出):
[复制管理器提供的唯一密钥]
代理信息:
ID:01001
名称:pb.webserver1
IP地址:any
确认添加?(y/n):
|
您会注意到,当您输入密钥时,它将显示您在管理器上设置的代理信息,使用此机会确认配置。
现在您想重新启动代理服务器,在此之前在管理器服务器上运行TAIL命令以监控代理是否发送信息。您可以通过查看ossec.log文件或alerts.log来实现。我将监视alerts.log文件以查找任何对pb.webserver1的引用:
1
|
tail -F /var/ossec/logs/alerts/alerts.log | grep "pb.webserver1"
|
一旦我在管理器上阅读,我将启动OSSEC代理。输出将如下所示:
1
2
3
4
5
6
7
|
# /var/ossec/bin/ossec-control start
启动OSSEC HIDS r2016-04(由Daniel B. Cid开发)...
启动ossec-execd...
启动ossec-agentd...
启动ossec-logcollector...
启动ossec-syscheckd...
完成。
|
在代理上,您寻找这个:
1
|
2018/11/30 19:22:42 ossec-agentd(4102): INFO: 已连接到服务器(您的管理器IP地址)。
|
在服务器上,您寻找这个:
1
2
3
4
|
** 警报 1543605762.8214223: mail - ossec,
2018 Nov 30 19:22:42 (pb.webserver1) any->ossec
规则: 501 (级别 3) -> '新ossec代理已连接。'
ossec: 代理已启动: 'pb.webserver1->any'。
|
就这样,您的新OSSEC部署已全部设置完成。
发布在安全类别,标签:入侵检测系统(IDS)、日志管理、OSSEC、Web托管和Web服务器