OSSEC网站安全实践:第二部分 - 使用代理与管理器的分布式架构

本文详细介绍了如何使用OSSEC的代理/管理器架构实现分布式安全监控,包括安装配置步骤、密钥管理以及服务器间通信验证,适用于需要集中管理多服务器日志的安全专业人员。

OSSEC For Website Security: PART II - Distributed Architectures Using Agents and Managers

By Tony Perez | November 30, 2018

本文假设您已部署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
  - 主机:[Web服务器名称]


  -- 按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
  - 主机:[Web服务器名称]


  -- 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管理器上导航到管理代理应用程序:

 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'的密钥信息是: 
[将为新代理提供唯一密钥]

现在您想切换到代理服务器并将该密钥复制到该服务器。您通过在代理服务器上导航到管理代理应用程序来实现:

 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服务器

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计