如何使用树莓派和Wazuh保障家庭网络安全?

描述

 

欢迎来到家庭安全的世界,在这里,保护你的数字资产是重中之重。在当今这个互联互通的时代,建立一个强大的防御系统来检测和应对潜在威胁至关重要。

这就是为什么我们要在这里引导你完成一个激动人心的教程,教你如何使用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来完成设置了:

  •  
  •  
  •  
  •  
  •  

  custom-telegramname>  https://api.telegram.org/bot/sendMessagehook_url>  jsonalert_format>integration>

通过运行以下命令重启Wazuh管理器:systemctl restart wazuh-manager.

重启后,你将看到你的第一条通知,在代理上执行root命令时创建的通知:

开源

原文链接:

https://medium.com/@henrion.frn/get-your-home-network-secured-with-raspberry-pi-wazuh-2023-edition-c7ac2044df3e

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分