log_rage.png


背景:

今年我的目标之一就是改进我的基础设施日志管理程序。直到最近,我的日志管理技术还是打开了一些终端标签,将SSH连接到我的所有基础架构资产中,然后捕获并查看我感兴趣的日志文件。显而易见,这不是特别高效,但我却满足于此,直到我看到Jeff DimmockSteve Borosh写的这篇伟大的博客文章。突然间,我的基础设施日志管理专业知识显得非常不足,我头脑中有个小小声音不停地呼唤我,要我做些什么。

这篇博客文章系列将成为设置集中式基础设施日志的指南。这是一个涵盖内容非常多的话题,所以我不能涵盖它所带来的一切(加上我自己也很菜),但它应该为任何希望设置类似内容的人提供一个很好的参考。

基础设施攻击日志记录系列:

在本系列的最后,我们最终会看到如下所示的日志记录设置:

log_bliss.png

为什么登录?为什么集中?为什么监测?

说实话,典型的为期2周的合规性渗透测试不需要在基础设施的设置或管理日志多花费精力。但是,如果您为长期参与(几个月甚至几年)建立基础架构,则应考虑投入更多时间来设置集中式日志记录,原因如下:

设置日志记录服务器:

Graylog2:

我会用的 Graylog 2作为集中整个系列博客日志服务器,但我要指出,PLENTY也是一个很好的选择。我根据下面列出的原因选择了Graylog,但同学们也可以随时尝试其他日志管理解决方案:

所以我打算设置一个全新的Graylog日志记录服务器。

1.服务器要求:

Graylog有几个安装条件,我将注意介绍。一个作为日志记录服务器本身,我建议一些有至少4GB的RAM 舒适的操作体验; Graylog建立在ElasticSearch之上,仅需要2GB的RAM即可运行。Graylog的文档涵盖了各种操作系统风格的安装。我将使用新的Debian 9 系统。

2.安装环境:

Graylog具有以下安装环境:

让我们安装它们:

#Java 
sudo apt update && sudo apt upgrade 
sudo apt install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen 

#MongoDB 
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 - -recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 
echo“deb http://repo.mongodb.org/apt/debian jessie / mongodb-org / 3.6 main”| sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list 
sudo apt-get update && sudo apt-get install -y dirmngr mongodb-org

注:如果安装MongoDB失败,你可能需要安装libssl1.0.0软件包。随后将Debian的jessie-backports添加到您的/etc/apt/sources.list中:

#Jessie backports 
deb http://ftp.debian.org/debian jessie-backports main

或者你可以自己下载并安装缺失的安装环境。

下一个安装的是ElasticSearch。

#Elasticsearch 

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - 
echo“deb https://artifacts.elastic.co/packages/5.x/apt stable main”| sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list 
sudo apt-get update && sudo apt-get install elasticsearch

安装ElasticSearch后,您需要修改ElasticSearch配置文件(/etc/elasticsearch/elasticsearch.yml); 取消注释cluster.name设置并将其命名为graylog。

3.png

最后,开启所有必需的服务并重新启动它们。

sudo systemctl daemon-reload 
sudo systemctl enable mongod.service elasticsearch.service 
sudo systemctl restart mongod.service elasticsearch.service

3.安装Graylog2:

Graylog提供DEB和RPM包存储库。

wget https://packages.graylog2.org/repo/packages/graylog-2.4-repository_latest.deb 
sudo dpkg -i graylog-2.4-repository_latest.deb 
sudo apt-get update 
sudo apt-get install graylog-server


4.配置Graylog2:

所有Graylog的配置都是从单个文件管理的; /etc/graylog/server/server.conf。在我们登录到Graylog的Web管理门户之前,我们需要更改其中的一些设置。

在我进行下一步操作之前,我总是备份配置文件;因为你永远不知道什么时候需要重新开始= =。

sudo cp /etc/graylog/server/server.conf /etc/graylog/server/server.conf.bak


I)管理员用户名:

如果你想更改管理员的用户名,默认是“ admin ”。

root_username = admin

II) password_secret:

你必须为密码加密和腌制设置密钥。如果没有设置,Graylog将拒绝启动。这不会是你的登录密码。

首先,使用pwgen实用程序生成加密密码(至少64个字符长):

pwgen -N 1 -s 96

将整个字符串粘贴到password_secret设置中:

III) root_password_sha2:

接下来,你需要生成密码的SHA2哈希值,将在初次登录到Graylog的Web界面时使用该密码。可以在首次登录后从仪表板更改它。

生成管理员帐户密码的SHA2哈希值:

echo -n yourpassword | sha256sum

将散列粘贴到root_password_sha2设置中:

root_password_sha2 = PASSWORD_HASH

IV) Web listening port:

最后,如果想使用默认9000以外的任何其他端口,则应启用Web界面并更改其监听端口。取消注释下面的行并更改它们以匹配您希望可以访问的任何端口Graylog的Web界面:

rest_listen_uri = http://0.0.0.0:9000/api/ 
web_listen_uri = http://0.0.0.0:9000/api/

现在,只需启用并重新启动Graylog服务即可。

sudo systemctl守护进程重新加载
sudo systemctl启用graylog-server.service 
sudo服务graylog-server restart

登录到你的Web管理门户http:// [IP_ADDRESS]:9000 /

getting_started.png

重要提示:下一步是可选的,但我强烈建议不要跳过它。Graylog的Web界面和REST API默认使用HTTP,这意味着你的密码和其他敏感数据通过电缆以明文形式发送。下一步包括为你的Graylog安装生成并添加一个自签名HTTPS证书。

IV) 安装自签名证书:

创建一个文件夹来管理你的证书:

sudo mkdir / etc / graylog / server / ssl 
cd / etc / graylog / server / ssl

在其中创建文件“ openssl-graylog.cnf ”并填写下面的内容; 定制它以满足您的需求:

[req] 
distinguished_name = req_distinguished_name 
x509_extensions = v3_req 
prompt = no 
#有关证书颁发者的详细信息
[req_distinguished_name] 
C = US 
ST = NY 
L = NY 
O = Graylog 
OU = Graylog 
CN = logger.graylog.com 
[v3_req] 
keyUsage = keyEncipherment,dataEncipherment 
extendedKeyUsage = serverAuth 
subjectAltName = @alt_names 
#证书应包含的IP地址和DNS名称#IP 地址和DNS的
IP地址### DNS名称的
###,“###”是连续的数。
[alt_names] 
IP.1 = 127.0.0.1 
DNS.1 = logger.graylog.com

注: 请确保将配置文件中的'IP.1 = 127.0.0.1'值更改为您的Graylog服务器的IP地址。

创建一个PKCS#5私钥(PKCS5-plain.pem)和X.509证书(graylog。CRT):

sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048 -config openssl-graylog.cnf -keyout pkcs5-plain.pem -out graylog.crt

你的PKCS#5私钥到未加密的 PKCS#8私钥(graylog。键):

sudo openssl pkcs8 -in pkcs5-plain.pem -topk8 -nocrypt -out graylog.key

当使用HTTPS的Graylog REST API,X.509证书(graylog,CRT在这种情况下) 必须信任由JVM信任存储,否则通信将失败。由于我们不想与官方信任存储库混淆,因此我们将制作一份我们将与我们的Graylog证书一起使用的副本。

udo cp -a / usr / lib / jvm / java-8-openjdk-amd64 / jre / lib / security / cacerts / etc / graylog / server / ssl / 
sudo keytool -importcert -keystore / etc / graylog / server / ssl / cacerts -storepass changeit -alias graylog-self-signed -file /etc/graylog/server/ssl/graylog.crt

证书现在应该可以使用了。编辑Graylog的配置文件(/etc/graylog/server/server.conf)并找到并更改下面的设置:

#REST API设置
rest_enable_tls = true 
rest_tls_cert_file = /etc/graylog/server/ssl/graylog.crt 
rest_tls_key_file = /etc/graylog/server/ssl/graylog.key 
#Web界面设置
web_enable_tls = true 
web_tls_cert_file = / etc / graylog / server /ssl/graylog.crt 
web_tls_key_file = /etc/graylog/server/ssl/graylog.key

注:对于运行Graylog进程的系统用户,证书和密钥文件需要可读(644权限对两个文件均可正常工作)。

我们完成了!只需重新启动Graylog,并且您应该能够通过https:// [IP_ADDRESS]登录到您的管理控制台:9000 /

sudo服务graylog-server重启

https_login.png

如果您有任何登录问题,请参阅Graylog2的HTTPS安装文档和Graylog的日志文件(/var/log/graylog-server/server.log)以进行故障排除。

自动化:

如果你已经掌握了这么多,你可以说安装Graylog可能有点过程,特别是如果你是为每次参与启动新的基础架构的话。我编写了一个脚本来自动执行上述所有安装步骤。

install_dependencies.png

安装依赖关系

configure_graylog.png

安装Graylog

configure_https-1024x820.png

配置HTTPS

保护Graylog:

您应该了解将来自攻击基础架构的所有日志集中在一个地方的风险。您汇总的日志越多,日志服务器携带的风险就越高; 一个妥协可能会暴露你的整个操作。

下表显示了Graylog的默认侦听端口:

服务 港口
Graylog Web Interface和REST API 9000
Graylog到ElasticSearch 9200
ElasticSearch节点通信 9300
MongoDB的 27017

一些简单的防火墙规则可以保护您的Graylog安装,特别是如果您使用VPN服务器来控制对攻击基础架构的管理端口的访问时,可以发挥很大的作用。

以下是一些iptables规则示例,您可以将其应用于您的Graylog服务器以限制其攻击面。

#默认策略
-P INPUT DROP 
-P FORWARD DROP 
-P OUTPUT ACCEPT 

#允许建立连接
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 

#允许来自本地环回接口的流量
-A INPUT -i lo - j ACCEPT 

#仅允许来自特定IP地址的SSH连接,例如VPN 
-A INPUT -s [ VPN_IP_ADDRESS ] / 32 -p tcp -m tcp --dport 22 -j接受

#仅允许从特定IP地址连接到Graylog管理,例如VPN 
-A INPUT -s [ VPN_IP_ADDRESS ] / 32 -p tcp -m tcp --dport 9000 -j ACCEPT 

#仅允许来自攻击基础架构资产的Rsyslog通信(1行每个资产)
-A INPUT -s [ ASSET_IP_ADDRESS ] / 32 -p tcp -m tcp --dport 5140 -j ACCEPT 
-A INPUT -s [ ASSET_IP_ADDRESS] / 32 -p tcp -m tcp --dport 5140 -j ACCEPT 
-A INPUT -s [ ASSET_IP_ADDRESS ] / 32 -p tcp -m tcp --dport 5140 -j ACCEPT 
-A INPUT -s [ ASSET_IP_ADDRESS ] / 32 - p tcp -m tcp --dport 5140 -j ACCEPT

注意:上述规则集的最后一部分将在下一篇文章中更有意义。

结论:

我们的日志记录服务器已启动并正在运行,下一篇文章将介绍如何从各种基础架构资产中设置日志的汇总。

参考文献:

https://github.com/bluscreenofjeff/Red-Team-Infrastructure-Wiki

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

https://www.contextis.com/blog/logging-like-a-lumberjack

http://docs.graylog.org/en/2.4/index.html

http://docs.graylog.org/en/2.4/pages/configuration/server.conf.html

http://docs.graylog.org/en/2.4/pages/configuration/file_location.html#default-file-location

https://ashleyhindle.com/how-to-setup-graylog2-and-get-logs-into-it/

https://dodizzle.wordpress.com/2011/10/14/3-ways-to-push-data-to-graylog2/


源链接

Hacking more

...