OSSEC分布式架构实战:代理与管理器部署指南

本文详细介绍了如何使用OSSEC构建分布式安全监控架构,包括代理与管理器的安装配置、密钥认证流程,以及如何实现服务器活动的集中监控与日志管理,提升网站安全防护能力。

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

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