基础设施的攻击日志记录PART.2:日志聚合

在我之前的文章中,我介绍了设置Graylog2日志记录服务器。在这篇文章中,我们将开始从我们的基础架构资产中获取一些日志到我们的Graylog安装中。所使用的基础设施资产的数量和类型因人而异,因此无法在一篇文章中查看所有可能的日志来源。但是,对于很多技术来说,这个过程或多或少都是一样的,这篇文章应该会帮助你理解整个方法。

我将介绍为以下设置日志聚合:

Apache有效负载/网上诱骗/ C2重定向器服务器。

Postfix / Sendmail邮件服务器。

Graylog消息输入和Rsyslog :

在开始设置日志聚合之前,我应该说一些关于Graylog的消息输入和Rsyslog的内容:

消息输入是Graylog用来提取传入日志消息的内容。

rsyslog是为快速处理日志而生的工具。这是一个基于* nix的工具(通常是预安装的),用于通过网络转发日志消息(通过TCP或UDP)。这就是我们将用来将来自我们的基础设施资产(又名客户端)的日志转发给Graylog的原因。

服务器 - 设置Graylog消息输入:

直到启动Graylog输入以获取这些日志为止,我们才能开始从客户端转发日志。

Graylog中的消息输入配置非常简单。它们从System → Inputs菜单中的Web界面启动。

Graylog支持大量的消息输入类型。正如我前面提到的,我们将要使用Rsyslog,选择“ Syslog TCP ”,完成后点击“ 启动新输入 ”。

下一个屏幕中的大多数设置都是可选的,只需给你的新输入一个名称并选择你将要使用的绑定端口(你的Graylog服务器将创建一个监听服务来提取该端口上的日志)。Rsyslog默认使用514端口,我推荐在下面的例子中使用一个独立的高端口(> 1024),如5140。

配置完成后,点击开始输入来启动它。

现在我们可以开始从客户端向Graylog发送一些日志。

客户端 - Apache webserver日志聚合:

登录到您的Apache Web服务器并创建文件/etc/rsyslog.d/apache.conf。将以下文本粘贴到其中:

$ModLoad imfile

# Default Apache Error Log

$InputFileName /var/log/apache2/error.log

$InputFileTag apache-error-default:

$InputFileStateFile stat-apache-error

$InputFileSeverity info

$InputFileFacility local3

$InputRunFileMonitor

# Default Apache Access Log

$InputFileName /var/log/apache2/access.log

$InputFileTag apache-access-default:

$InputFileStateFile stat-apache-access

$InputFileSeverity info

$InputFileFacility local4

$InputRunFileMonitor

$InputFilePollInterval 1

接下来,打开/etc/rsyslog.conf并将以下文本粘贴到文件底部:

$WorkDirectory /var/spool/rsyslog

$ActionQueueFileName fwdRule1

$ActionQueueMaxDiskSpace 1g

$ActionQueueSaveOnShutdown on

$ActionQueueType LinkedList

$ActionResumeRetryCount -1

*.* @@graylog.example.org:5140;RSYSLOG_SyslogProtocol23Format

local3.* @@graylog.example.org:5140;RSYSLOG_SyslogProtocol23Format

local4.* @@graylog.example.org:5140;RSYSLOG_SyslogProtocol23Format

接下来你只需启动Rsyslog服务,并且你的Apache Web服务器应该开始将其日志转发给Graylog。

sudo service syslog stop

sudo service rsyslog restart

sudo service rsyslog status

让我们来看看它是否工作。然后返回到你的Graylog服务器Web管理并打开Sources菜单。你可以在源列表中看到Apache Web服务器的主机名/ IP地址。

要验证你的Apache日志实际上是否正在实时处理,请打开Graylog的搜索菜单并在您的Apache客户端上生成一些Apache日志。你可以从你的服务器下载一个文件,用Nikto扫描它等等完成这些操作。

你应该看到你的日志出现在搜索菜单的消息部分。

现在,你只需对您的管理下的所有基于Apache的基础架构资产(负载服务器,钓鱼服务器,重定向器等)重复上述步骤,然后继续下一步。

服务器 - Apache日志解析:

默认情况下,Graylog不会将Apache日志适当地解析为可轻松从输入中提取信息的格式,例如IP地址,用户代理,请求字符串,响应代码等。现在,日志以未经过滤的未经过滤的文本形式出现,不会让我们轻松分析它们。

我们将使用Grok模式修复此问题。

I)选择一个Apache日志消息示例:

你需要做的第一件事是从Graylog的搜索菜单中选择任何Apache日志消息以用作示例。点击它并记下2个值; 该消息的ID字符串存储在索引里。

II)创建一个Apache日志提取器:

接下来,进入系统→输入菜单,然后单击正在运行的Rsyslog输入旁边的“ 管理提取器”按钮。

点击Add extractor菜单下的“ 开始 ”,然后点击Message ID选项卡。粘贴消息ID字符串和您之前从示例Apache日志中提取的索引。完成后点击“ 加载消息 ”。

您的完整的Apache示例日志应该在下一个窗口中加载。滚动到“消息”字段,并从“选择提取器类型”下拉菜单中选择Grok模式。

如果一切顺利,您应该在示例消息窗口中看到示例Apache日志。您现在需要做的就是粘贴Grok模式,将其解析为Grok模式文本框。

将下面的整个字符串粘贴到文本框中,然后点击旁边的“ Try ” 按钮:

%%% \ [% \]“(?:%%(?: HTTP / )?|%)“%(?:% | - )

您应该在“ Extractor Preview ”窗口中将您的示例Apache日志正确地解析为多个字段。

你现在要做的就是给你的提取器一个名字,然后点击“ 创建提取器 ”按钮。确保总是尝试提取单选按钮被选中。

III)测试:

现在,所有进入日志服务器的Apache日志都会自动分析到多个字段中; 使分析更容易。您可以通过在Graylog的收视新Apache日志验证这个小号目录操作搜索菜单。现在不存在的字段现在应该可供您使用。

注意: Grok模式非常强大,可以从各种来源解析日志; Web服务器,邮件服务器甚至自定义应用程序。我肯定会推荐在 System → Grok patterns菜单下检查Graylog的内置Grok模式。您可以从其他来源上传新的Grok模式,或者如果您感觉符合您的要求,甚至可以自行编写。

客户端 - 邮件服务器日志聚合:

Postfix和Sendmail都将日志写入syslog的邮件工具。邮件日志通常存储在/ var / log / maillog中。与Apache Web服务器日志不同,它们也由Rsyslog的默认配置来处理。

这对我们来说是个好消息,因为您只需编辑邮件服务器中的/etc/rsyslog.conf文件,并将以下行添加到文件的底部即可。

现在只需重新启动Rsyslog,并且您的邮件服务器的日志应该开始出现在Graylog中。

sudo service syslog stop

sudo service rsyslog restart

sudo service rsyslog status

提示:默认情况下,Postfix仅在其日志文件中捕获传出电子邮件的“发件人”和“收件人”详细信息。按照本博客中的步骤捕获电子邮件的主题以及更详细的日志记录。

额外的C2日志聚合:

如果你也有兴趣在从钴打击C2拍摄日志中Graylog ,请参阅“ 钴特攻队服务器日志客户端 ”部分在这个职位,然后用上面的Apache日志的聚集指令导入您的钴打击网络登录到Graylog 。

我真的一直无法弄清楚如何将Empire的日志发送给Graylog,但是如果您在Empire C2(您应该这样做)前使用重定向器,那么将重定向器的日志发送给Graylog应该就足够了。

结论:

现在我们有一个Graylog服务器从多个攻击基础架构资产中接收日志。在下一篇文章中,我将介绍如何设置仪表板来可视化这些数据。

参考:

http://docs.graylog.org/en/2.4/pages/sending_data.html

https://community.graylog.org/t/rsyslog-udp-works-but-not-syslog-tcp/2511

https://github.com/Graylog2/graylog-guide-syslog-linux/blob/master/README.md#rsyslog

http://www.rsyslog.com/sending-messages-to-a-remote-syslog-server/

https://bluescreenofjeff.com/2017-08-08-attack-infrastructure-log-aggregation-and-monitoring/

https://gist.github.com/GaryRogers/85c8f2a805010ceeccc6

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180329G1DCKF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券