欢迎来到家庭安全的世界,在这里,保护你的数字资产是重中之重。在当今这个互联互通的时代,建立一个强大的防御系统来检测和应对潜在威胁至关重要。
这就是为什么我们要在这里引导你完成一个激动人心的教程,教你如何使用Wazuh——一个令人难以置信的开源安全监控平台——在树莓派上构建一个安全的网络。但等等,还有更多!我们还将通过Telegram的力量,为你创建一个便捷的通知中心,以便即时接收警报和更新。
完成本教程后,你将拥有一个可靠且经济实惠的解决方案,用于监控网络的安全性,并通过实时通知让你随时了解情况。无论你是小企业主、家庭网络爱好者,还是重视隐私和安心的人——我们都能满足你的需求!
这个分步指南将为你提供加固数字防御所需的知识和工具。
拿起你的树莓派,系好安全带——是时候让你的网络变得更安全、更智能、更酷炫了。
硬件设备
没有主角,这个教程可难以进行:
树莓派4 Model B——8GB RAM
Micro SD卡——理想情况下是128GB,但32GB也可以
你喜欢的树莓派外壳
注意事项:Wazuh宣布,对于1-25个代理,我们需要至少8GB RAM;对于90天的监控,需要50GB存储空间。
软件要求
对于树莓派,我们将使用Ubuntu Server 22.04.5 LTS(64位)
为了安装镜像,我强烈推荐使用Raspberry Pi Imager。
它基本上让整个安装过程变得简单得多,因为你无需在线搜索所需的镜像,它本身就提供了一个完整的列表:
如果你选择这个选项:
1.选择操作系统 > 其他通用操作系统 > Ubuntu > Ubuntu Server 22.04.5 LTS(64位)
2.选择存储设备 > 选择你的SD卡
3.在点击“写入”之前——点击右下角的设置,你以后会感谢我的:

树莓派镜像
在这里,你可以预设SSH访问,以及树莓派访问你的WiFi的方式,这基本上可以避免你手动创建所有openssh-server相关的东西。
免责声明:对于这里的安全专业人士来说,使用密码认证进行SSH连接当然不是最佳实践,使用公钥密码保护会更好,但好吧,让我们为初学者保持简单。
专业提示:最初,我不会选择“wazuh”作为主机名,因为这可能会帮助网络上的某人识别你的宝贵资产。
最后,点击写入按钮,事情就要开始热起来了
我的树莓派在哪里?
在将全新的操作系统插入树莓派后,你可能需要让它几分钟时间来连接到你的网络。
如果你在网络方面还是个新手,你可能会想知道如何在网络上找到你的树莓派。好吧,让我给你一个简单的方法:
nmap 192.168.1.1-254
这应该会列出你本地网络上的所有设备,你可以在其中找到我们的主机名“wazuh”。
Wazuh安装
关于在树莓派上安装Wazuh,有几点需要了解。
最初,Wazuh提供了一个现成的脚本,让你能够在几分钟内安装完整的Wazuh包,但这基本上适用于amd架构,而树莓派实际上使用的是arm架构。
虽然这个快捷方式对我们来说不可用,但没关系,树莓派近年来取得了巨大的改进,让我们能够明智地利用投资的8GB RAM。
一体化部署——Elastic Stack
这是我们今天要实现的架构。

一体化部署--由Wazuh提供
下面将介绍的步骤适用于Wazuh 4.4版本,并分为以下几个部分:
1.安装先决条件——安装需要一些额外的软件包,如curl或unzip,这些将在后续步骤中使用。然而,如果服务器上已经安装了curl和unzip,则可以跳过此步骤。
2.安装Elasticsearch——Elasticsearch是一个高度可扩展的全文搜索和分析引擎。
3.安装Wazuh服务器——Wazuh服务器收集并分析来自部署的代理的数据。它运行Wazuh管理器、Wazuh API和Filebeat。设置Wazuh的第一步是将Wazuh仓库添加到服务器上,然后是管理器本身。
4.安装Filebeat——Filebeat是Wazuh服务器上的工具,用于将警报和归档事件安全地转发到Elasticsearch。
5.安装Kibana——Kibana是一个灵活且直观的Web界面,用于挖掘和可视化存储在Elasticsearch中的事件和归档。
无需我从官方文档中大量复制粘贴,他们会比我在这篇文章中更新得更及时。请查看这些分步指南,并确保选择了正确的软件包管理器以及系统和服务管理器。
在我们的情况下,由于我们使用的是Ubuntu Server,你将使用apt和systemctl。
部署你的代理——你的私人间谍
你现在已经有了第一个Wazuh服务器,仪表板类似于以下内容:

Wazuh 仪表板
但现在是时候安装你的第一个代理了
假设你是一个普通公民,你在家里应该运行的是MacOS或Windows。(Linux用户,你们好)。对你来说有个好消息,代理的安装对于这两个操作系统都有GUI安装程序:
Windows代理
MacOS代理
l
在两种情况下,你都需要运行可执行文件,然后就好了!好吧,并不完全是这样,你现在需要让你的代理明白它应该向谁报告。基本上,Wazuh服务器在哪里?对你来说,这个阶段很容易,因为你已经知道树莓派的IP地址了。假设地址是192.168.1.43。
要注册代理,你有两种方法:
1.通过代理配置注册
2.通过管理器API注册
由于我们是真正的OG,我们将选择第一种方法:
MacOS & Linux
1.以root用户身份启动终端,编辑Wazuh代理配置文件/Library/Ossec/etc/ossec.conf。
2.在部分中包含Wazuh管理器IP地址:
MANAGER_IP (Here your 192.168.1.43)
Windows
逻辑相同,区别在于代理的位置不同,因为Wazuh代理安装目录取决于主机的架构:
对于64位系统:C:\Program Files (x86)\ossec-agent
对于32位系统:C:\Program Files\ossec-agent
使用管理员账户,在安装目录中修改Wazuh代理配置文件ossec.conf。
给Wazuh几分钟时间来获取数据,然后就开始吧!仪表板应该开始接收数据了。
Telegram——你的个人通知中心
现在你已经有了SIEM(安全信息和事件管理)系统,是时候为你提供一个实时通知系统了。Wazuh提供了与Slack、Jira或电子邮件的集成,但说实话,这绝对不是在家里接收安全事件通知的最舒适方式。
创建你的Telegram机器人
你可能会认为创建一个机器人会让你陷入一系列编码和数小时的API文档阅读中。实际上,这就像在Telegram上发送一条消息一样简单:只需联系BotFather。
你可以看到一些简单的命令,这些命令将允许你管理你的机器人:

来自Telegram的BotFather
然后创建你的机器人,并获取你的HTTP API令牌:

获取你的 API Token
如何管理与Telegram的自定义集成?
对于这项任务,有两个重要的位置需要了解:
本地配置:/var/ossec/etc/ossec.conf——Wazuh的配置文件所在位置
集成位置:/var/ossec/integrations/——你找到集成文件的位置
为了简化操作,一旦你创建了集成,你需要通过引用它来让本地配置知道这个自定义集成的存在。
脚本要求
要让脚本工作,有两个要求:
安装requests包,因为我们的Python脚本将向Telegram API发出调用
pip3 install requests
你需要你的Telegram CHATID。在找到ID之前,确保向你的机器人发送一条“hello”消息,以便在你们之间创建一个聊天。
https://api.telegram.org/bot/getUpdates
这将给你一个类似以下的结果:
{"ok":true,"result":[{"update_id":534302469,"message":{"message_id":2,"from":{"id":38475931,"is_bot":false,"first_name":"xxxxxx","last_name":"xxxxxx","username":"xxxxxx" ,"language_code":"ua"},
自定义集成的脚本
无需进一步解释,进入/var/ossec/integrations/并执行以下命令:
nano custom-telegram
复制/粘贴以下脚本(别忘了更改ChatID):
#!/usr/bin/env python3# -*- coding: utf-8 -*-import sysimport jsontry: import requestsexcept Exception: print("No module 'requests' found. Install: pip3 install requests") sys.exit(1)CHAT_ID = "xxxxxxxx"def create_message(alert_json): # Get alert information title = alert_json['rule']['description'] if 'description' in alert_json['rule'] else '' description = alert_json['full_log'] if 'full_log' in alert_json else '' description.replace("\\n", "\n") alert_level = alert_json['rule']['level'] if 'level' in alert_json['rule'] else '' groups = ', '.join(alert_json['rule']['groups']) if 'groups' in alert_json['rule'] else '' rule_id = alert_json['rule']['id'] if 'rule' in alert_json else '' agent_name = alert_json['agent']['name'] if 'name' in alert_json['agent'] else '' agent_id = alert_json['agent']['id'] if 'id' in alert_json['agent'] else '' # Format message with markdown msg_content = f'*{title}*\n\n' msg_content += f'_{description}_\n' msg_content += f'*Groups:* {groups}\n' if len(groups) > 0 else '' msg_content += f'*Rule:* {rule_id} (Level {alert_level})\n' msg_content += f'*Agent:* {agent_name} ({agent_id})\n' if len(agent_name) > 0 else '' msg_data = {} msg_data['chat_id'] = CHAT_ID msg_data['text'] = msg_content msg_data['parse_mode'] = 'markdown' # Debug information with open('/var/ossec/logs/integrations.log', 'a') as f: f.write(f'MSG: {msg_data}\n') return json.dumps(msg_data)# Read configuration parametersalert_file = open(sys.argv[1])hook_url = sys.argv[3]# Read the alert filealert_json = json.loads(alert_file.read())alert_file.close()# Send the requestmsg_data = create_message(alert_json)headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}response = requests.post(hook_url, headers=headers, data=msg_data)# Debug informationwith open('/var/ossec/logs/integrations.log', 'a') as f: f.write(f'RESPONSE: {response}\n')sys.exit(0)
(如果你想了解更多关于脚本的信息,请随时查看以下文章,其中@jesusjimsa在提供脚本和详细解释方面做得非常出色。)
让脚本可执行,并赋予它适当的权限:
chmod 750 /var/ossec/integrations/custom-telegramchown root:wazuh /var/ossec/integrations/custom-telegram
重要警告——集成的名称应以“custom-”开头,否则我们亲爱的Wazuh将不明白你在期待什么。
最后但同样重要的是,是时候通过更新/var/ossec/etc/ossec.conf来完成设置了:
通过运行以下命令重启Wazuh管理器:systemctl restart wazuh-manager.
重启后,你将看到你的第一条通知,在代理上执行root命令时创建的通知:

原文链接:
https://medium.com/@henrion.frn/get-your-home-network-secured-with-raspberry-pi-wazuh-2023-edition-c7ac2044df3e
全部0条评论
快来发表一下你的评论吧 !