“A9 Team 甲方攻防团队,成员来自某证券、微步、青藤、长亭、安全狗等公司。成员能力涉及安全运营、威胁情报、攻防对抗、渗透测试、数据安全、安全产品开发等领域,持续分享安全运营和攻防的思考和实践。”
01
—
简介
本文将介绍如何使用Suricata和ELK(Elasticsearch,Logstash,Kibana)服务搭建IPS系统。ELK是一个开源的日志分析平台,Suricata是一个高性能的、开源的IDS/IPS系统,它可以实时监控网络流量并检测恶意行为,防御网络攻击。将 Suricata 与 ELK结合起来,创建一个安全信息和事件管理 (SIEM) 工具,有效地保护网络安全。
首先,我们需要安装和配置ELK服务。我们需要安装Elasticsearch、Logstash和Kibana,并配置它们的输出以将日志发送到Elasticsearch。我们需要配置Logstash以接收Suricata生成的JSON格式日志,然后将它们发送到Elasticsearch。
02
—
步骤1:安装Elasticsearch,Logstash和Kibana
我们可以使用官方文档提供的方式安装Elasticsearches启动命令,Logstash和Kibana。以下是Ubuntu 18.04上安装的步骤:
1、下载并安装Elasticsearch:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update
sudo apt-get install elasticsearch
2、安装Logstash:
sudo apt-get install logstash
3、安装Kibana:
sudo apt-get install kibana
03
—
步骤2:启动Elasticsearch,Logstash和Kibana
使用以下命令启动Elasticsearch,Logstash和Kibana:
sudo systemctl start elasticsearch.service
sudo systemctl start logstash.service
sudo systemctl start kibana.service
04
—
步骤3:配置Elasticsearch,Logstash和Kibana
在安装完成后,我们需要配置Elasticsearch,Logstash和Kibana以确保它们能够正常工作。以下是配置的步骤:
1、配置Elasticsearch:
检查Elasticsearch是否正在运行:使用以下命令向Elasticsearch主机发送curl请求:
curl -X GET “:9200”
如果您看到“Elasticsearch”字样,则Elasticsearch正在运行。
启用xpack.security:在elasticsearch.yml配置文件中,取消注释以下行:
xpack.security.enabled: true
生成elastic和kibana_system用户的密码:使用以下命令生成密码
sudo /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
将生成的密码保存在安全的地方es启动命令,我们将在后面的步骤中使用它们。
2、配置Logstash:
配置Logstash以接收Suricata生成的JSON格式日志,然后将它们发送到Elasticsearch。在/etc/logstash/conf.d/suricata.conf文件中,添加以下内容:
input {
beats {
port => 5044
}
}
filter {
if [type] == "suricata" {
json {
source => "message"
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "suricata-%{+YYYY.MM.dd}"
user => "elastic"
password => "password"
}
}
替换user和password为您在步骤1中生成的密码。
3、配置Kibana:
在kibana.yml文件中,取消注释以下行:
elasticsearch.username: "elastic"
elasticsearch.password: "password"
替换username和password为您在步骤1中生成的密码。
05
—
步骤4:安装Suricata
使用以下命令安装Suricata:
sudo apt-get update
sudo apt-get install suricata
06
—
步骤5:配置Suricata
配置Suricata的输入和输出。在/etc/suricata/suricata.yaml文件中,取消注释以下行:
# 定义接收数据的网络接口
af-packet:
- interface: eth0
# 定义输出到Logstash的配置
outputs:
- logstash:
hosts: ["localhost:5044"]
user: "elastic"
password: "password"
替换user和password为您在步骤1中生成的密码。
下载Suricata规则。使用以下命令下载Emerging Threats规则:
sudo suricata-update
启动Suricata。使用以下命令启动Suricata:
sudo suricata -c /etc/suricata/suricata.yaml -i eth0
07
—
步骤6:测试 Suricata 规则
检查 Suricata 是否可以检测到可疑流量。在Suricata 指南建议使用以下命令去进行 测试 ET Open 规则编号2100498 。
$ curl http://testmynids.org/uid/index.html
响应内容为
uid=0(root) gid=0(root) groups=0(root)
上面的命令假装返回 id可以在受感染系统上运行的命令的输出。要测试 Suricata 是否检测到流量,需要使用指定的规则编号来检查日志文件。
log/suricata/fast.log grep 2100498 /var/
如果您的请求使用 IPv4,您将看到以下输出。
22/04/2023-23:21:46.783476 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} IP:80 -> IP:36364
Suricata /var/log/suricata/eve.log使用 JSON 格式将事件记录到文件中。
08
—
步骤7 设置访问 Kibana 仪表板
由于 KIbana 配置为仅通过其私有 IP 地址访问 Elasticsearch本案例是使用 SSH 隧道 PC 连接到 Elasticsearch 服务器。这会将端口 5601 从本地的 PC 转发到服务器的私有 IP 地址,将能够从本地 PC 访问 Kibana :5601。
使用 SSH 本地隧道
如果使用的是 Windows 10 或 Windows 11,则可以从 Windows Powershell 运行 SSH LocalTunnel。在 Linux 或 macOS 上,您可以使用终端。如果没有配置 SSH 访问,需要配置它。
在计算机的终端中运行以下命令以创建 SSH 隧道。
$ ssh -L 5601:your_private_IP:5601 navjot@your _public_IP -N
该-L标志指的是本地 SSH 隧道,它将本地PC 端口流量转发到服务器。
这private_IP:5601是流量在服务器上转发到的 IP 地址。在这种情况下,将其替换为Elasticsearch 服务器的私有 IP 地址。
这your_public_IP是 Elasticsearch 服务器的公共 IP 地址,用于打开 SSH 连接。
该-N标志告诉 OpenSSH 不要执行任何命令,只要隧道运行就保持连接。
现在隧道已打开,可以通过:5601在 PC 的浏览器上打开 URL 来访问 Kibana。
只要需要访问 Kibana,就需要保持命令运行。在终端中按Ctrl + C关闭隧道。
配置防火墙
在继续之前,您需要在防火墙中打开 HTTP 和 HTTPS 端口。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
重新加载防火墙以启用更改。
sudo firewall-cmd --reload
安装和配置 SSL
第一步是安装 Let’s Encrypt SSL 证书。由于我们已经设置了 EPEL 存储库,因此请安装 Certbot 工具。
sudo dnf install certbot
为域生成 SSL 证书kibana.example.com。
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d kibana.example.com
上面的命令会将证书下载到/etc/letsencrypt/live/kibana.example.com服务器上的目录中。
生成Diffie-Hellman 组证书。
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
为 Let’s Encrypt 自动更新创建一个网站根目录。
$ mkdir -p /var/lib/letsencrypt
创建 Cron 作业以更新 SSL。它将每天运行以检查证书并在需要时更新。为此,首先,创建文件/etc/cron.daily/certbot-renew并打开它进行编辑。
sudo nano /etc/cron.daily/certbot-renew
粘贴以下代码。
certbot renew --cert-name kibana.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
通过按Ctrl + X并在出现提示时输入Y来保存文件。
更改任务文件的权限以使其可执行。
sudo chmod +x /etc/cron.daily/certbot-renew
09
—
步骤7 管理 Kibana 仪表板
在进一步管理仪表板之前,您需要在 Kibana 的配置中添加基本 URL 字段。
打开 Kibana 的配置文件。
sudo nano /etc/kibana/kibana.yml
找到注释行#server.publicBaseUrl: “”并通过删除它前面的散列来如下更改它。
server.publicBaseUrl: "https://kibana.example.com"
通过按Ctrl + X并在出现提示时输入Y来保存文件。
重新启动 Kibana 服务。
sudo systemctl restart kibana
等待几分钟,然后在浏览器中加载 URL。elastic使用您之前生成的用户名和密码登录,将可以看到以下屏幕。
type:data suricata在顶部的搜索框中键入以查找 Suricata 的信息 。
单击第一个结果([Filebeat Suricata] Alert Overview),您将看到类似于以下的屏幕。默认情况下,它仅显示最近 15 分钟的条目,但我们在更大的时间跨度内显示它以显示教程的更多数据。
单击“事件”按钮可查看所有记录的事件。
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: muyang-0410