XieJava's blog

记录最好的自己


  • 首页

  • 分类

  • 标签

  • 归档

  • 关于

开源安全管理平台wazuh-与网络入侵检测系统集成增强威胁检测能力

发表于 2025-10-12 | 更新于: 2025-10-12 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 1.1k | 阅读时长 ≈ 4

Wazuh是一个功能强大的开源安全平台,它集成了安全信息与事件管理(SIEM)和扩展检测与响应(XDR)的能力,旨在为本地、虚拟化、容器化及云环境中的工作负载提供统一的威胁预防、检测和响应解决方案。

Wazuh可以与基于网络的入侵检测系统(NIDS)集成,通过监控和分析网络流量来增强威胁检测。Suricata 是一个开源的高性能网络安全监控工具,由开放信息安全基金会(OISF)开发维护。它被广泛用于实时网络流量分析、威胁检测和防护。Suricata 是现代网络安全架构中的重要组件,特别适合需要高性能实时流量分析的场景,是构建深度防御体系的关键工具。

本文通过POC展示如何将Suricata与Wazuh集成,并模拟对目标主机进行端口扫描,通过Suricata监控和分析网络流量进行威胁检测与Wazuh集成后在Wazuh的威胁狩猎中及时预警威胁攻击行为。

一、环境准备

POC环境拓扑如下图所示:
POC环境拓扑图

主机 描述
安全管理平台wazuh-server
(192.168.0.40)
All in one安装wazuh,监控wazuh-agent、suricata上报的告警信息进行威胁检测
ubuntu应用服务器
(192.168.0.30)
ubuntu应用服务器安装wazuh-agent并与Suricata集成 ,模拟被攻击的服务器
Kali Linux模拟攻击机器
(192.168.0.65)
Kali linux ,模拟攻击机器,模拟发起恶意端口扫描攻击

二、安装Suricata

1、安装Suricata

1
2
3
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
sudo apt-get install suricata -y

2、下载Suricata的扩展检测规则集

1
2
3
cd /tmp/ && curl -LO https://rules.emergingthreats.net/open/suricata-6.0.8/emerging.rules.tar.gz
sudo tar -xvzf emerging.rules.tar.gz && sudo mkdir /etc/suricata/rules && sudo mv rules/*.rules /etc/suricata/rules/
sudo chmod 777 /etc/suricata/rules/*.rules

3、配置Surcata

在 /etc/suricata/suricata.yaml 文件中修改 Suricata 设置并设置以下变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
HOME_NET: "<UBUNTU_IP>"
EXTERNAL_NET: "any"

default-rule-path: /etc/suricata/rules
rule-files:
- "*.rules"

# Global stats configuration
stats:
enabled: yes

# Linux high speed capture support
af-packet:
- interface: ens2

接口表示您想要监控的网络接口。将值替换为 Ubuntu 端点的接口名称。

设置为流量检测的网卡

可以通过ifconfig查看Ubuntu的网络接口,例如,我这里是ens2。
查看网络接口

4、重启Suricata服务

1
sudo systemctl restart suricata

三、wazuh与Suricata集成

将以下配置添加到Wazuh代理的/var/ossec/etc/ossec.conf文件中。这允许Wazuh代理读取Suricata日志文件:

1
2
3
4
5
6
<ossec_config>
<localfile>
<log_format>json</log_format>
<location>/var/log/suricata/eve.json</location>
</localfile>
</ossec_config>

配置wazuh接受suricata数据

重新启动Wazuh代理以使配置生效

1
sudo systemctl restart wazuh-agent

四、模拟攻击

请注意:本文介绍的模拟攻击仅限于自己搭建测试环境进行POC验证。请不要使用这些工具和方法对其它目标主机进行测试,使用这些工具前,务必获得目标系统的明确书面授权,未经授权的测试属违法行为。

端口扫描是渗透测试的第一步,通过端口扫描可以快速发现目标主机的攻击面。使用 nmap进行端口扫描是网络安全中最基础且关键的操作之一。我们在Kali Linux主机上通过nmap对目标靶机192.168.0.30进行端口扫描看开放有哪些端口。

1
nmap -p- -sV -O -A -T4 -Pn -oX full_scan.xml 192.168.0.30

五、效果验证

在Kali Linux主机上通过nmap对目标靶机192.168.0.30进行端口扫描的过程中,我们在192.168.0.40的wazuh server的威胁狩猎界面可以看到suricata通过流量检测识别到端口扫描的攻击行为,并通过wazuh的可视化界面进行告警的展示。

surcata告警

点击可以查看告警的详情,可以看到是通过suricata发现的来自源IP192.168.0.65的nmap扫描行为。

suricata告警详情

至此,我们通过wasuh与网络入侵检测系统(suricata)进行集成,并模拟对目标主机进行端口扫描,验证了通过Suricata监控和分析网络流量进行威胁检测与Wazuh集成后在Wazuh的威胁狩猎中及时预警威胁攻击行为。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

开源安全管理平台wazuh-暴力破解检测与响应

发表于 2025-10-11 | 更新于: 2025-10-12 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 1.5k | 阅读时长 ≈ 5

Wazuh是一个功能强大的开源安全平台,它集成了安全信息与事件管理(SIEM)和扩展检测与响应(XDR)的能力,旨在为本地、虚拟化、容器化及云环境中的工作负载提供统一的威胁预防、检测和响应解决方案。

暴力破解是网络安全领域一种常见且顽固的威胁,像Linux端点的SSH这样的服务通常容易受到暴力破解攻击,攻击者利用它来非法访问端点和服务。有效应对暴力破解需要“侦测”和“防护”双管齐下。Wazuh通过关联多个认证失败事件来识别暴力破解攻击并可以配置主动响应以阻止攻击者的IP地址。

本文通过POC来验证wazuh对暴力破解检测与响应能力

一、环境准备

POC环境如下图所示:

POC拓扑图

主机 描述
安全管理平台wazuh-server
(192.168.0.40)
All in one安装wazuh,监控wazuh-agent上报的告警信息进行暴力破解检测并联动wazuh-agent进行封堵响应
ubuntu应用服务器
(192.168.0.30)
ubuntu应用服务器ssh服务,安装wazuh-agent ,模拟被攻击的服务器
Kali Linux模拟攻击机器
(192.168.0.65)
Kali linux ,模拟攻击机器

二、wazuh 配置

Wazuh使用主动响应模块在受监控端点上运行脚本或可执行文件,对某些触发器采取行动。在本用例中,我们模拟对ubuntu应用服务器端点的SSH暴力破解攻击,并配置主动响应模块以阻止攻击端点的IP地址。目标是防止SSH暴力破解攻击。

Wazuh附带一套用于主动响应的默认脚本。这些脚本位于Linux/Unix端点的/var/ossec/active-response/bin/目录中。firewall-drop主动响应脚本与Linux/Unix操作系统兼容。它使用iptables来阻止恶意IP地址。

Wazuh server配置

1、打开Wazuh服务器/var/ossec/etc/ossec.conf文件,并验证在<ossec_config>块中存在名为firewall-drop的<command>块,其配置如下:

1
2
3
4
5
<command>
<name>firewall-drop</name>
<executable>firewall-drop</executable>
<timeout_allowed>yes</timeout_allowed>
</command>

<command>块包含有关在Wazuh代理上执行的操作的信息:

  • <name>:为命令设置名称。在本例中,为firewall-drop。
  • <executable>:指定在触发时必须运行的响应脚本或可执行文件。在本例中,是firewall-drop可执行文件。
  • <timeout_allowed>:允许在一段时间后超时。在此处,此标签设置为yes,表示状态性主动响应。

2、将以下 <active-response> 块添加到 Wazuh 服务器 /var/ossec/etc/ossec.conf 配置文件中:

1
2
3
4
5
6
7
8
9
<ossec_config>
<active-response>
<disabled>no</disabled>
<command>firewall-drop</command>
<location>local</location>
<rules_id>5763</rules_id>
<timeout>180</timeout>
</active-response>
</ossec_config>
  • <comand>:指定要配置的命令。这是在上一步骤中定义的防火墙丢弃命令 firewall-drop。
  • <location>:指定命令执行的位置。使用本地值表示命令在触发事件发生的监控端点处执行。
  • <rules_id>:如果规则ID 5763 - SSHD暴力破解尝试访问系统触发,则活动响应模块将执行该命令。
  • <timeout>:指定活动响应操作必须持续的时间。在本用例中,模块将阻止执行暴力破解攻击的端点IP地址180秒。

3、重新启动Wazuh管理器服务以应用更改:

1
sudo systemctl restart wazuh-manager

三、模拟攻击

我们通过Kali Linux自带的Hydra进行模拟攻击。

请注意:本文介绍的模拟攻击仅限于自己搭建测试环境进行POC验证。请不要使用这些工具和方法对其它目标主机进行测试,使用这些工具前,务必获得目标系统的明确书面授权,未经授权的测试属违法行为。

Hydra 配合 SecLists 工具包,可以显著提升密码破解测试的效率和成功率。
SecLists 是一款在安全测试中非常受欢迎的开源集合项目,提供了各种类型的字典列表,包括但不限于用户名、密码、目录路径、子域名等。Hydra 则是一款强大的网络登录破解工具,支持多种协议。将两者结合,可以针对各种网络服务进行高效的密码暴力破解测试。
在 Kali Linux 中,SecLists 通常位于 /usr/share/seclists目录。如果系统未安装,可以使用以下命令安装:

1
sudo apt update && sudo apt install seclists

在Kali Linux(192.168.0.65)上执行hydra 对 192.168.0.30 进行模拟攻击

1
hydra -L /usr/share/seclists/Usernames/top-usernames-shortlist.txt -P /usr/share/seclists/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt 192.168.0.30 ssh -t 4 -vV

四、效果验证

可以看到触发了wazuh的告警规则,在Wazuh仪表板中看到多次的登录失败的告警数据,并生成了试图暴力破解的攻击告警。
告警

在详情中可以清楚的看到多次尝试暴力破解ssh登录
告警详情

可以看到wazuh检测到有ssh暴力破解的行为并自动调用防火墙对攻击IP进行封堵,封堵180秒。
封堵

在Hydra的攻击日志可以看到,被wazuh进行响应封堵后ssh超时报错,说明已经成功阻断阻止了攻击行为。
阻止效果

至此,我们通过一个实际的POC实例验证了wazuh对ssh暴力破解攻击行为的检测和响应,通过“侦测”和“防护”双管齐下能有效减轻ssh暴力破解威胁攻击风险。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

开源安全管理平台wazuh-文件完整性监控FIM

发表于 2025-10-08 | 更新于: 2025-10-08 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 1.1k | 阅读时长 ≈ 4

Wazuh是一个功能强大的开源安全平台,它集成了安全信息与事件管理(SIEM)和扩展检测与响应(XDR)的能力,旨在为本地、虚拟化、容器化及云环境中的工作负载提供统一的威胁预防、检测和响应解决方案。
文件完整性监控(File integrity monitoring FIM)有助于审计敏感文件和满足合规性要求。Wazuh内置了一个FIM模块,用于监控文件系统变化,以检测文件的创建、修改和删除。
本文通过POC来验证Wazuh的FIM功能,使用Wazuh FIM模块来检测Ubuntu和Windows端点上监控目录的变化。Wazuh FIM模块通过使用who-data审计获取有关更改用户和进程的信息来丰富告警数据。

一、环境准备

POC环境如下图所示:
POC环境拓扑图

主机 描述
安全管理平台wazuh-server
(192.168.0.40)
All in one安装wazuh,监控wazuh-agent上报的告警信息进行文件完整性监控(FIM)
被监控Windows 11机器
(192.168.0.16)
安装wazuh-agent,通过Wazuh FIM模块在此端点监控一个目录,以检测文件创建、更改和删除。
被监控Ubuntu主机
(192.168.0.41)
安装wazuh-agent,通过Wazuh FIM模块在此端点监控一个目录,以检测文件创建、更改和删除。

二、wazuh配置

1、window机器安装wazuh并配置

1)安装wazuh-agent

在wazuh的管理端找到部署agent界面,选择window的agent安装包

wazuh部署agent界面

wazuh会自动生成部署agent的脚本

自动生成部署agent的脚本

在window11(192.168.0.16)机器上以管理员权限运行powershell,在powershell中运行agent安装脚本

1
Invoke-WebRequest -Uri https://packages.wazuh.com/4.x/windows/wazuh-agent-4.13.0-1.msi -OutFile $env:tmp\wazuh-agent; msiexec.exe /i $env:tmp\wazuh-agent /q WAZUH_MANAGER='192.168.0.40' WAZUH_AGENT_NAME='Lenovo-L13-agent'

运行agent安装脚本

运行NET START Wazuh启动wazuh-agent,过一会就可以在wazuh服务端的dashboard中看到window 11的wazuh-agent注册上来了。

注册agent

2) 配置window端点的wazuh-agent

按照以下步骤配置Wazuh代理以监控以下目录的文件系统更改。如监控C:\Users\xiejava\Desktop的文件更改。
在受监控的Windows端点上编辑C:\Program Files (x86)\ossec-agent\ossec.conf配置文件。在<syscheck>块内添加监控目录。配置Wazuh监控C:\Users\xiejava\Desktop目录。

1
<directories check_all="yes" report_changes="yes" realtime="yes">C:\Users\xiejava\Desktop</directories>

配置FIM监控

使用具有管理员权限的PowerShell重新启动Wazuh代理以使配置更改生效。

1
Restart-Service -Name wazuh

2、ubuntu主机的wazuh-agent配置

由于ubuntu主机(192.168.0.41)已经安装了wazuh-agent,只需要对wazuh-agent进行配置就可以了。
执行以下步骤以配置Wazuh代理以监控/root目录中的文件系统更改。
编辑Wazuh代理的/var/ossec/etc/ossec.conf配置文件。在<syscheck>块中添加监控的目录。配置Wazuh监控/root目录。

1
<directories check_all="yes" report_changes="yes" realtime="yes">/root</directories>

配置ubuntu端点的FIM监控

重新启动Wazuh代理以使配置生效

1
sudo systemctl restart wazuh-agent

三、效果验证

1、windows端点文件完整性监控

1)文件增、删、改

在window 11(192.168.0.16)的机器的桌面上新建一个.txt文件,然后重命名为test-win11.txt,再修改test-win11.txt的内容。

2)可视化告警监控

在wazuh的dashboard中可以看到window 11机器的完整性监控告警。
win11的FIM告警

在详情中可以看到window11机器c:\users\xiejava\desktop\下文件变更的详情。
win11的FIM告警详情

2、ubuntu主机文件完整性监控

1)文件增、删、改

在ubuntu(192.168.0.41)的机器的/root新建一个test.txt文件,然后重命名为test-ubuntu.txt,再修改test-ubuntu.txt的内容。

2)可视化告警监控

在wazuh的dashboard中可以看到ubuntu(192.168.0.41)主机的文件完整性监控告警。
ubuntu端点的FIM告警事件

在Dashboard中可以看到FIM的统计信息包括对文件的新增、删除、修改等。
ubuntu端点的FIMDashboard

在Events中可以看到文件被修改触发的事件
ubuntu端点的FIM告警列表

可以查看具体的事件详情
ubuntu端点的FIM告警详情

至此,我们通过POC实例来验证了Wazuh的文件完整性监控FIM功能,使用Wazuh FIM模块来检测Ubuntu和Windows端点上监控目录的变化。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

开源安全管理平台wazuh-阻止恶意IP访问

发表于 2025-10-07 | 更新于: 2025-10-07 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 1.5k | 阅读时长 ≈ 6

Wazuh是一个功能强大的开源安全平台,它集成了安全信息与事件管理(SIEM)和扩展检测与响应(XDR)的能力,旨在为本地、虚拟化、容器化及云环境中的工作负载提供统一的威胁预防、检测和响应解决方案。
《开源安全管理平台wazuh-安装与配置》介绍了wazuh的安装和配置,本文基于已经完成的wazuh安装配置基础上通过POC来验证wazuh的功能,通过wazuh来阻止已知的恶意IP的访问。

一、环境准备

POC环境如下图所示:

POC拓扑图

主机 描述
安全管理平台wazuh-server
(192.168.0.40)
All in one安装wazuh,监控wazuh-agent上报的告警信息进行可视化展示,并联动wazuh-agent进行主动的拦截阻止
Nginx服务器
(192.168.0.41)
安装Nginx服务及wazuh-agent
Apache2服务器
(192.168.0.43)
安装Apache2服务及wazuh-agent
kali
(192.168.0.65)
Kali (模拟恶意IP主机)

以上除192.168.0.65是kali linux外,其他主机都是ubuntu。

二、wazuh配置

1、wazuh-agent配置

1)安装nginx服务并配置wazuh-agent

在192.168.0.41上安装nginx

1
2
sudo apt updat
sudo apt install nginx

允许防火墙访问

1
2
3
sudo ufw allow 'Nginx Full'
sudo ufw status
sudo ufw app list

验证nginx服务状态

1
sudo systemctl status nginx

用浏览器访问http://192.168.0.41 验证nginx服务是否正常访问
nginx

将以下内容添加到 /var/ossec/etc/ossec.conf 文件中,以配置 Wazuh 代理并监控 nginx访问日志

1
2
3
4
<localfile>
<log_format>syslog</log_format>
<location>/var/log/nginx/access.log</location>
</localfile>

如下图所示:

nginx访问日志路径

重启wazuh-agent使配置生效

1
sudo systemctl restart wazuh-agent

2) 安装apach2并配置wazuh-agent

在192.168.0.43上安装apach2

1
2
sudo apt update
sudo apt install apache2

允许防火墙访问

1
2
3
sudo ufw allow 'Apache'
sudo ufw status
sudo ufw app list

验证nginx服务状态

1
sudo systemctl status apache2

用浏览器访问http://192.168.0.43 验证apache2服务是否正常访问

apache2

将以下内容添加到 /var/ossec/etc/ossec.conf 文件中,以配置 Wazuh 代理并监控 apache2访问日志

1
2
3
4
<localfile>
<log_format>syslog</log_format>
<location>/var/log/apache2/access.log</location>
</localfile>

如下图所示:

apache访问日志路径

重启wazuh-agent使配置生效

1
sudo systemctl restart wazuh-agent

2、wazuh-server配置

1)配置IP信息黑名单

下载Alienvault IP信誉数据库:

1
sudo wget https://iplists.firehol.org/files/alienvault_reputation.ipset -O /var/ossec/etc/lists/alienvault_reputation.ipset

将攻击端点的IP地址(kali的IP地址192.168.0.65)添加到IP信誉数据库中:

1
sudo echo "192.168.0.65" >> /var/ossec/etc/lists/alienvault_reputation.ipset

下载一个将 .ipset 格式转换为 .cdb 列表格式的脚本:

1
sudo wget https://wazuh.com/resources/iplist-to-cdblist.py -O /tmp/iplist-to-cdblist.py

通过运行iplist-to-cdblist.py将ipset转换成.cdb 列表格式blacklist-alienvault

1
sudo python3 /tmp/iplist-to-cdblist.py /var/ossec/etc/lists/alienvault_reputation.ipset /var/ossec/etc/lists/blacklist-alienvault

为生成的文件分配正确的权限:

1
sudo chown wazuh:wazuh /var/ossec/etc/lists/blacklist-alienvault

确认一下恶意IP192.168.0.65是否在黑名单里

恶意IP在信誉库的黑名单中

2)配置响应模块以阻止恶意IP地址

在Wazuh服务器上的 /var/ossec/etc/rules/local_rules.xml 自定义规则集文件中添加一个自定义规则以触发Wazuh主动响应脚本。

1
2
3
4
5
6
7
<group name="attack,">
<rule id="100100" level="10">
<if_group>web|attack|attacks</if_group>
<list field="srcip" lookup="address_match_key">etc/lists/blacklist-alienvault</list>
<description>IP address found in AlienVault reputation database.</description>
</rule>
</group>

将自定义规则集加入到Wazuh server /var/ossec/etc/ossec.conf 的配置文件中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<ossec_config>
<ruleset>
<!-- Default ruleset -->
<decoder_dir>ruleset/decoders</decoder_dir>
<rule_dir>ruleset/rules</rule_dir>
<rule_exclude>0215-policy_rules.xml</rule_exclude>
<list>etc/lists/audit-keys</list>
<list>etc/lists/amazon/aws-eventnames</list>
<list>etc/lists/security-eventchannel</list>
<list>etc/lists/blacklist-alienvault</list>

<!-- User-defined ruleset -->
<decoder_dir>etc/decoders</decoder_dir>
<rule_dir>etc/rules</rule_dir>
</ruleset>
</ossec_config>

将活动响应块添加到Wazuh服务器/var/ossec/etc/ossec.conf 文件:
防火墙丢弃命令与Ubuntu本地iptables防火墙集成,并丢弃来自攻击端点的网络连接60秒

1
2
3
4
5
6
7
8
9
<ossec_config>
<active-response>
<disabled>no</disabled>
<command>firewall-drop</command>
<location>local</location>
<rules_id>100100</rules_id>
<timeout>60</timeout>
</active-response>
</ossec_config>

重新启动Wazuh管理器以应用更改生效:

1
sudo systemctl restart wazuh-manager

三、效果验证

1、模拟攻击

用kali(192.168.0.65)访问 http://192.168.0.41和http://192.168.0.43
攻击端点首次连接到受害者的Web服务器。首次连接后,Wazuh主动响应模块临时阻止对Web服务器的任何后续连接60秒。

模拟攻击

通过浏览器访问可以看到首次访问后每次都会被阻止60秒才能继续访问。

通过curl http://192.168.0.41和curl http://192.168.0.43 首次可以返回信息,每次过60秒才能再次返回信息。

2、可视化效果验证

可以在Wazuh仪表板中可视化警报数据。在威胁狩猎模块,添加过滤器以查询警报。

告警信息

在威胁狩猎模块可以看到有恶意IP地址在信誉库中被匹配到的告警,被防火墙自动阻断响应的告警以及60秒以后自动解除阻断的处置信息。

在详情信息中可以看到攻击阻止的详细信息,通过攻击源IP匹配到了信誉库的黑名单,触发了防火墙封堵规则进行了自动封堵。

告警详情

至此,我们通过一个完整的POC验证了wazuh发现恶意IP攻击到自动封堵阻止攻击的全过程。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

开源安全管理平台wazuh-安装与配置

发表于 2025-09-29 | 更新于: 2025-09-30 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 1.6k | 阅读时长 ≈ 6

Wazuh是一个功能强大的开源安全平台,它集成了安全信息与事件管理(SIEM)和扩展检测与响应(XDR)的能力,旨在为本地、虚拟化、容器化及云环境中的工作负载提供统一的威胁预防、检测和响应解决方案。

Wazuh的核心能力如下:

核心功能 核心功能说明
威胁检测与响应 提供入侵检测(如恶意软件、Rootkit检测)、日志数据分析、文件完整性监控以及主动响应(如自动封禁IP)等能力。
资产与漏洞管理 自动进行资产盘点(端口、进程、应用等),并关联CVE数据库实现漏洞检测,帮助识别系统弱点。
合规性与配置评估​ 支持PCI DSS、GDPR、HIPAA等多种合规标准,提供预定义的检查策略和自动化报告生成功能。
云与容器安全​ 支持通过API监控AWS、Azure、Google Cloud等云环境,并能与Docker引擎集成,监控容器镜像、配置和运行时行为。
架构与可扩展性 采用代理/服务器架构,支持Windows、Linux、macOS等多种操作系统,并拥有灵活的规则引擎,允许用户自定义检测规则。

核心组件与工作方式

Wazuh的典型架构主要包含三个组件,它们协同工作以提供完整的安全防护闭环:
核心组件

  1. Wazuh代理(Agent)​​:这是安装在需要保护的端点(如服务器、笔记本电脑、云实例)上的轻量级软件。它负责收集日志、监控文件完整性、扫描系统配置和漏洞,并将这些数据安全地发送给中央管理器。
  2. Wazuh服务器(Server)​​:作为大脑,服务器接收来自所有代理的数据,并通过内置的解码器和规则引擎进行分析,以识别潜在的安全威胁和异常活动。它还可以管理代理的配置和升级。
  3. Wazuh索引器(Index)​​:Wazuh索引器是一个高度可扩展的全文本搜索和分析引擎。这个中央组件索引并存储由Wazuh服务器生成的警报。
  4. Wazuh仪表盘(dashboard):Wazuh仪表盘是数据可视化和分析的网络用户界面。它包括用于威胁狩猎、合规性(例如,PCI DSS、GDPR、CIS、HIPAA、NIST 800-53)的现成仪表盘,检测到的易受攻击的应用程序,文件完整性监控数据,配置评估结果,云基础设施监控事件以及其他内容。它还用于管理Wazuh配置并监控其状态。

主要应用场景

基于上述特点,Wazuh可以在多种环境中发挥重要作用:

  • 企业网络安全​:保护企业内网中的服务器和终端设备,检测和响应来自内部和外部的安全威胁,如SSH暴力破解、Web应用攻击等。
  • 满足合规性要求​:对于需要遵守PCI DSS、GDPR(通用数据保护条例)等法规的组织,Wazuh的自动化合规检查和报告功能可以显著降低审计复杂度。
  • 云原生环境防护​:在混合云或多云环境中,Wazuh能提供统一的安全视图,监控云基础设施的配置风险(如公开的S3存储桶)和容器化应用的安全。

安装与配置

1、资源要求

wazuh安装的硬件需求高度依赖于受保护端点数量和云工作负载。
以下配置在同一主机上all in one部署Wazuh服务器、Wazuh索引器和Wazuh仪表板。这通常足以监控多达100个端点,并存储90天的可查询/索引警报数据。下表显示了all in one部署的推荐硬件:

Agents CPU RAM Storage (90 days)
1-25 4 vCPU 8 GiB 50 GB
25–50 8 vCPU 8 GiB 100 GB
50–100 8 vCPU 8 GiB 200 GB

Wazuh 的中心组件需要 64 位 Intel、AMD 或 ARM Linux 处理器(x86_64/AMD64 或 AARCH64/ARM64 架构)来运行。Wazuh 推荐以下任何一种操作系统版本:

  • Amazon Linux 2,Amazon Linux 2023
  • CentOS 7,8
  • CentOS Stream 10
  • Red Hat Enterprise Linux 7,8,9,10
  • Ubuntu 16.04,18.04,20.04,22.04,24.04

2、快速安装

Wazuh的安装很简单,直接执行以下命令即可。

1
curl -sO https://packages.wazuh.com/4.13/wazuh-install.sh && sudo bash ./wazuh-install.sh -a

命令执行完成,输出将显示访问用户名密码,并显示确认安装成功的消息。

1
2
3
4
5
INFO: --- Summary ---
INFO: You can access the web interface https://<WAZUH_DASHBOARD_IP_ADDRESS>
User: admin
Password: <ADMIN_PASSWORD>
INFO: Installation finished.

通过web界面就可以访问安装好的wazuh
wazuh登录界面

输入用户名和密码就可以登录到wazuh
wazuh的dashboard

3、修改密码

wazuh安装后会默认给个admin的密码,这个密码比较长也不好记忆。可以通过以下命令对admin的默认密码进行修改。

1
bash wazuh-passwords-tool.sh -u admin -p Secr3tP4ssw*rd

4、安装EDR的agent

Wazuh代理是一种单一且轻量级的监控软件。它是一个多平台组件,可以部署到笔记本电脑、台式机、服务器、云实例、容器或虚拟机。它通过收集关键系统和应用记录、库存数据以及检测异常,为端点的安全性提供可见性。
在wazuh的dashboard界面,找到Agents summary 点击进去后,点击“Deploy new agent” 安装新的agent代理
\[图片\]

将显示agent安装的向导界面。
\[图片\]

选择目标主机的操作系统,填写wazuh的服务的IP后,将自动生成安装agent的脚本命令。
\[图片\]

在目标主机上直接执行命令就可以成功将agent安装。
\[图片\]

通过以下命令启动wazuh-agent

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent

再通过 sudo systemctl status wazuh-agent 查看wazuh-agent的运行状态。
\[图片\]

5、验证EDR的效果

wazuh-agent安装完后,就可以在wazuh的dashbord中看到agent采集到的相应的安全风险概览数据了。
\[图片\]

总结与建议

总的来说,Wazuh是一个功能全面、可扩展性强的开源安全平台,特别适合那些希望构建统一、高效且成本可控的安全运营体系的企业或技术团队。后续我将通过一系列POC来验证wazuh的能力。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

Easytier快速实现异地组网

发表于 2025-08-30 | 更新于: 2025-08-30 | 分类于 技术 | | 阅读次数:
字数统计: 1.6k | 阅读时长 ≈ 5

玩NAS的小伙伴在安装完NAS系统后都在折腾“回家”,NAS是放在家里的设备,如何在外面方便的访问家里的主机设备是很多小伙伴面临的课题。“回家”的办法有很多,今天主要介绍我个人觉得很方便的Easytier来快速实现异地组网在外面访问家里的设备。

一、什么是Easytier

EasyTier 是一款简单、安全、去中心化的内网穿透和异地组网工具,适合远程办公、异地访问、游戏加速等多种场景。无需公网 IP,无需复杂配置,轻松实现不同地点设备间的安全互联。

二、飞牛NAS安装Easytier

在飞牛NAS的镜像仓库中找到下载量最大的easytier斤镜像进行安装
\[图片\]

在启动容器时设置使用高权限执行容器
\[图片\]

在“命令”输入框中输入

1
2
3
4
5
--network-name <你的虚拟网络名称>
--network-secret <你的网络密码,随便输入,后面加入网络的要用到>
-p tcp://public.easytier.top:11010
--ipv4 10.10.10.3
-n 192.168.0.0/24(这里换成自己的内网的网段)

这是一个用于连接到一个现有 EasyTier 网络的客户端节点的典型配置。
\[图片\]

参数详解

  1. --network-name 你的虚拟网络名称
    • 含义: 指定要加入的虚拟网络的名称。
    • 解释: 所有要组成同一个虚拟局域网(VLAN)的节点(客户端和超级节点)必须使用完全相同的网络名称。如网络名为 xiejava。这相当于一个共享的“房间号”或“频道号”,只有名称相同的节点才能互相发现和通信。
  2. --network-secret 你的网络密码
    • 含义: 用于验证和加密网络通信的密钥(密码)。
    • 解释: 所有加入同一网络的节点必须使用完全相同的密钥。它有两个主要作用:
      • 身份认证: 防止未经授权的节点随意加入你的私有网络。
      • 通信加密: 对节点之间传输的数据进行加密,保障通信安全。因此,一个强密码非常重要。
  3. -p tcp://public.easytier.top:11010
    • 含义: 指定要连接的上层节点(Super Node)的地址。
    • 解释:
      • -p 是 –peer 的简写形式。
      • tcp:// 表示使用 TCP 协议进行连接。
      • public.easytier.top:11010 是超级节点的地址和端口。这是一个部署在公网上的服务器,它的作用是帮助位于不同内网中的客户端节点(比如你的这台机器)进行“打洞”和中转连接。
    • 简单来说,这个参数告诉你的客户端:“请去这个地址找中介服务器,它会帮你联系网络里的其他伙伴。”
  4. --ipv4 10.10.10.3
    • 含义: 指定本节点在虚拟网络中使用的静态 IPv4 地址。
    • 解释: 加入虚拟网络后,你的机器会拥有两个IP地址:一个是物理网卡的真实地址(如 192.168.1.100),另一个就是这个虚拟地址 10.10.10.3。网络中的其他设备将通过这个 10.10.10.3 的地址来访问你的机器。使用静态IP可以方便地管理和访问特定的设备。
  5. -n 192.168.0.0/24
    • 含义: 为虚拟网络添加一条静态路由规则。
    • 解释:
      • -n 是 –route 的简写形式,用于添加路由。
      • 192.168.0.0/24 是一个网段。这条命令的意思是:“所有发往 192.168.0.0/24 这个网段的数据包,都请通过本机的 EasyTier 虚拟网卡发送(即通过 EasyTier 虚拟网络来路由)。”
    • 用途: 假设你家里的本地局域网网段是 192.168.0.0/24,你在这台机器上添加了这条路由。那么,当网络中的其他节点(如 10.10.10.2)想访问你内网的服务器(如 192.168.0.100)时,它们的数据包会发到你这台机器(10.10.10.3),然后由你这台机器利用本地物理网络转发到 192.168.0.100。这样就实现了从异地访问公司内网资源的功能。这通常是在作为“网关”或提供路由服务的节点上配置的。

配置总结

这条完整的命令配置了一个 EasyTier 客户端,其作用是:

  1. 加入一个名为 “虚拟网络名”、密码为 “你的虚拟网络密码” 的私有虚拟网络。
  2. 通过连接公网上的超级节点 public.easytier.top:11010 来与其他节点建立联系。
  3. 它在本虚拟网络中的固定IP地址是 10.10.10.3。
  4. 它同时宣布了自己可以为整个虚拟网络提供到 192.168.0.0/24 网段的路由服务,其他节点要访问这个网段的数据都会经过它。

简单来说,将这台NAS机器作为家里网络内部的节点,它既加入了虚拟网络(地址 10.10.10.3),又扮演了让外部能够访问内部 192.168.0.x 服务器的“网关”角色。

三、Easytier快速组网异地访问

Easytier提供了多种符合各类操作系统的工具包括linux、window、MacOS、Android 等,下面以window为例,到官网https://easytier.rs/guide/download.html下载window的Easytier GUI。
在window机器上进行安装后打开Easytier GUI界面进行设置
在网络名称和网络密码中分别设置成在飞牛NAS中Easytier docker容器中命令中指定的网络名称和网络密码。
\[图片\]

设置完成后点击“运行网络”,稍等一会就发现节点信息中本机和飞牛NAS中的easytier都连上来了。
\[图片\]

可以看到运行window的Easytier GUI的机器在外面连的是手机热点的网络,可以ping通家里内网的IP,可以畅快的访问家里的网络了。
\[图片\]

四、Easytier的适用场景

  • 远程办公:让公司、家中和外地的电脑像在同一局域网一样互通。
  • 异地访问:随时随地安全访问家中 NAS、服务器或其他设备。
  • 游戏加速:组建虚拟局域网,畅玩联机游戏。
  • 物联网组网:让分布在不同地点的设备安全互联。

作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

为搞清楚凌晨上网都在干啥,我建了一套AI上网行为分析系统

发表于 2025-08-10 | 更新于: 2025-08-10 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 1.3k | 阅读时长 ≈ 4

近期小孩放假在家,发现晚上还抱着平板不放,每天搞到凌晨。这得要劝说有正常的作息时间,少拿平板做与学习无关的事情,但又不能强制拿平板检查看在哪些时间段都在干啥。于是为了搞清楚其凌晨上网都在干啥,我建了一套AI上网行为分析系统,随时收到上网行为的分析报告。

原理很简单,通过Alloy采集路由器的上网行为日志,用Loki进行日志存储,然后通过n8n建立AI分析工作流,通过Loki的API接口定期获取上网行为日志,给AI大模型进行分析整理然后自动将上网行为分析结果整理发邮件出来。

原理图如下:

上网行为分析系统

接下来看如何实现的完整过程。

一、上网行为的日志采集

要采集上网行为的日志,需要在路由器上进行配置,将上网行为的日志通过syslog的方式外发出来。这里可以参考《通过TPLink路由器进行用户行为审计实战》
另外需要有一套日志分析系统进行采集、存储。这里可以参考《Loki+Alloy+Grafana构建轻量级的日志分析系统》

二、上网行为的自动分析

基于前面介绍的采集到的上网行为数据,我们基于n8n来构建利用LLM大模型的分析能力实现上网行为的分析和整理。
关于如何搭建本地的n8n平台可以参考《飞牛NAS本地化部署n8n打造个人AI工作流中心》
整个n8n的工作流如下图所示:

n8n工作流

1、获取上网行为的数据(HTTP Request)

n8n提供了Http Request节点,可以很方便的调用Http的API接口获取数据。而Loki也是很贴心的提供Http的API接口进行数据的查询。
n8n的Http Request节点配置如下,通过Get方法调用loki的查询接口地址http://192.168.0.30:3100/loki/api/v1/query_range,查询条件设置{exporter="OTLP"} != "apptype:网络基础协议" 意思是排除掉apptype:网络基础协议,因为这部分不是用户的上网行为信息。设置查近2个小时的2000条日志信息。因为用的是开源LLM大模型,一次性处理token的数量有限。如果模型能力强可以设置查更多的数据。

HTTP Request

点击“Execute step”就可以看到通过loki的API接口查到的上网行为的结果数据。

API接口查到的上网行为的结果数据

2、通过AI智能体进行行为分析(AI Agent)

我们要将上网行为的数据交给LLM大模型来进行分析,所以要引入AI智能体的节点。在AI Agent接口,把HTTP Request的结果给AI Agent,然后给出提示词。提示词就是告诉AI大模型要做什么。
我的提示词如下:

“你是一个安全分析专家,根据日志信息能够分析用户的异常行为,请根据得到信息进行用户行为分析,分析发现是否有异常的行为。请特别注意分析凌晨0点至5点时间段,如有用户在此时间段有上网行为,请详细分析在该时间段用了多少时间做了什么。”

AI Agent配置

在这里我用的大模型是google的Gemini2.5flash。

大模型配置

配置Gemini2.5flash的API key就可以使用了Gemini2.5了。如何白嫖Gemini可以参考《国内免代理免费使用Gemini大模型实战》和《使用Gemini Balance让Gemini免费到底》

API key配置

当然也可以配置成其他的大模型。

3、整理分析结果(Markdown)

通过Markdown节点将大模型分析出来的结果进行美化整理成HTML的格式

Markdown节点

4、自动发邮件报告(Send Mail)

加入自动发邮件的节点,将用户上网行为的分析报告通过邮件的方式发送出来。
配置SMTP account信息。
关于如何配置SMTP 信息可以参考以前的博文《通过Django发送邮件》里面有详细的介绍。

SMTP配置

配置邮件的发送者和接收者,邮件主题等信息。

配置sendmail

5、配置AI工作流定时启动(Schedule Trigger)

将n8n的工作流配置为Schedule Trigger根据周期定时触发,我这里设置的是每两个小时触发一次。

Schedule Trigger

三、上网行为分析报告及效果

将n8n的工作流激活后,AI用户上网行为分析系统就开始勤勤恳恳的工作了。

activate工作流

每两个小时从路由器获取上网行为的日志,通过大模型进行上网行为的分析,整理后自动发邮件进行报告了。

执行情况

最后看一下经过大模型分析的上网行为分析报告

上网行为分析报告

也可以配置到网易邮箱大师通过手机收到上网行为分析报告的邮件通知了。

手机端报告

至此,我们通过综合运用alloy+loki构建了日志采集系统采集路由器的用户行为日志,通过n8n构建AI工作流调用Gemini大模型进行用户行为的分析自动发送上网行为的分析报告,构建了自动化的上网行为分析系统。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

Loki+Alloy+Grafana构建轻量级的日志分析系统

发表于 2025-08-10 | 更新于: 2025-08-10 | 分类于 技术 , 网络安全 | | 阅读次数:
字数统计: 2k | 阅读时长 ≈ 8

在现代运维和开发流程中,日志分析是故障排查、性能优化的核心环节。传统的日志系统(如 ELK Stack)虽功能强大,但资源消耗高、配置复杂,对中小规模环境或边缘设备不够友好。Loki+Alloy+Grafana组合则以 “轻量级、低成本、易部署” 为核心优势,成为替代方案的理想选择。

典型的基于 Loki 的日志记录技术栈由 3 个组件组成:

Loki

  • Loki:Grafana Labs 开源的日志聚合系统,借鉴 Prometheus 设计理念,仅索引日志元数据(标签)而非全文,大幅降低存储和计算开销。
  • Alloy:代理或客户端,Grafana 官方推荐的新一代数据采集器Alloy(替代 Promtail),支持日志、指标、追踪多信号采集,配置灵活且资源占用低。
  • Grafana:强大的可视化平台,原生支持 Loki 数据源,提供丰富的日志查询、过滤和仪表盘功能。

对网络设备、安全设备等的告警日志进行分析是在网络运维和安全运营中经常遇到的场景,我们可以通过Loki+Alloy+Grafana来搭建一套轻量级的日志分析系统来收集各类网络设备、安全设备的日志进行分析。现在就以采集TP-Link路由器的上网行为日志为例来构建这套日志分析系统。

日志采集分析

本文将详细介绍在Ubuntu 24.04 LTS环境中,从零搭建这套日志分析系统的全过程,确保每个步骤可操作、可复现。

环境准备:Ubuntu 24.04 系统配置
系统要求

  • 硬件:2 核 CPU、4GB 内存、20GB 磁盘(日志存储根据需求调整)
  • 系统:Ubuntu 24.04 LTS(已更新至最新版本)
  • 权限:sudo 权限(用于安装软件和配置服务)

根据Grafana官网的建议步骤,先安装Loki,再部署采集代理Alloy,再部署Grafana,通过Grafana来分析日志。

日志采集步骤

部署Loki日志存储系统

Loki 是日志的 “后端存储”,负责接收、存储日志并响应查询请求。采用二进制方式部署,步骤如下:

1. 下载Loki二进制文件

通过 GitHub API 获取Loki的二进制安装包:

1
2
3
4
5
6
7
8
9
10
# 创建Loki安装目录并下载二进制包  这里安装的是3.5.1 
sudo mkdir -p /opt/loki /etc/loki
wget -qO /opt/loki/loki-linux-amd64.zip "https://github.com/grafana/loki/releases/download/v3.5.1/loki-linux-amd64.zip"

# 解压并设置可执行权限
sudo unzip -d /opt/loki /opt/loki/loki-linux-amd64.zip && rm /opt/loki/loki-linux-amd64.zip
sudo chmod a+x /opt/loki/loki-linux-amd64

# 创建软链接,方便全局调用
sudo ln -s /opt/loki/loki-linux-amd64 /usr/local/bin/loki

查看Loki版本 loki --version

1
2
3
4
5
6
7
loki --version
loki, version 3.5.1 (branch: release-3.5.x, revision: d4e637ce)
build user: root@ceaea196ea87
build date: 2025-05-19T17:06:03Z
go version: go1.24.1
platform: linux/amd64
tags: netgo

2. 配置 Loki

使用官方提供的本地存储配置文件,创建 Loki 配置目录并下载默认配置文件:

1
2
sudo mkdir -p /etc/loki
sudo wget https://raw.githubusercontent.com/grafana/loki/v3.5.1/cmd/loki/loki-local-config.yaml -O /etc/loki/config.yaml

3. 创建 Systemd 服务

为 Loki 创建系统服务,确保开机自启和进程管理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sudo tee /etc/systemd/system/loki.service <<EOF
Description=Grafana Loki Log Aggregation System
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/loki -config.file=/etc/loki/config.yaml
Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target
EOF# 重载systemd配置并启动Loki

sudo systemctl daemon-reload
sudo systemctl start loki
sudo systemctl enable loki
# 验证服务状态(应显示active (running))
sudo systemctl status loki

可以使用 journalctl -u loki -f 查看 Loki 日志以进行故障排除

4. 验证 Loki 运行

通过 HTTP 接口检查 Loki 状态:

1
curl http://127.0.0.1:3100/ready

预期输出:ready(表示 Loki 已就绪)

loki ready

部署配置Alloy

Alloy 是连接日志源与 Loki 的 “桥梁”,负责采集服务器本地日志并发送到 Loki。作为 Grafana Agent 的替代者,Alloy 配置更灵活,支持多信号采集。

1. 安装 Alloy

通过 Grafana 官方仓库安装 Alloy(与 Grafana 使用同一仓库,无需重复添加):

1
2
3
4
5
# 安装Alloy包
sudo apt install -y alloy

# 验证安装
alloy --version

alloy --version

2. 配置 Alloy 收集日志

Alloy 使用声明式配置文件定义采集规则,默认路径为/etc/alloy/config.alloy。我们需配置:
1、 通过syslog采集;2、对日志中的IP进行提取;3、 将日志转发到 Loki。
创建配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
otelcol.receiver.syslog "local" {
udp {
listen_address = "0.0.0.0:514"
encoding = "GBK"
}
output {
logs = [otelcol.exporter.loki.local.input]
}
}

otelcol.exporter.loki "local" {
forward_to = [loki.process.extract_ip.receiver]
}

loki.process "extract_ip" {
stage.regex {
expression = "a:(?P<ip>\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})"
}
stage.labels {
values = {
ip = "ip",
}
}
forward_to = [loki.write.local.receiver]
}

loki.write "local" {
endpoint {
url = "http://localhost:3100/loki/api/v1/push"
}
}

配置说明:

alloy目前对syslog支持并不是特别好,经过多次尝试,用alloy的syslog组件不能支持中文编码,所以改用通过otelcol的syslog来采集日志。
listen_address = “0.0.0.0:514” 表示监听所有源的514端口来的upd数据。

3. 启动 Alloy 服务

1
2
3
4
5
# 启动Alloy并设置开机自启
sudo systemctl enable --now alloy

# 验证服务状态(应显示active (running))
sudo systemctl status alloy

排查提示若启动失败,通过sudo journalctl -u alloy -f查看日志,常见问题:配置文件语法错误、Loki未启动导致连接失败

部署Grafana

Grafana 是整个系统的 “前端”,用于日志查询和可视化。通过官方仓库安装可确保自动更新。

1. 添加 Grafana 官方仓库

1
2
3
4
5
# 导入Grafana GPG密钥(用于验证包完整性)
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

# 添加Grafana OSS仓库(稳定版)
echo 'deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main' | sudo tee /etc/apt/sources.list.d/grafana.list

2. 安装并启动 Grafana

1
2
3
4
5
6
7
8
# 更新包索引并安装Grafana
sudo apt update && sudo apt install -y grafana

# 启动Grafana服务并设置开机自启
sudo systemctl enable --now grafana-server

# 验证服务状态(应显示active (running))
sudo systemctl status grafana-server

3. 验证 Grafana 安装

打开浏览器访问 http://<服务器IP>:3000,首次登录使用默认凭据:

  • 用户名:admin
  • 密码:admin

首次登录会要求修改密码,按提示设置新密码即可。

接入数据源

1. 在发送端配置采集器的地址

这里我们要接入和分析TP-Link路由器的上网行为日志。所以要在路由器上配置将日志发送到alloy采集节点的服务器。具体的TP-Link路由器的上网行为分析审计的配置参考《通过TPLink路由器进行用户行为审计实战》

行为审计

2. 在采集端看是否收到数据

通过tcpdump命令查看采集节点是否有日志数据进来

1
tcpdump -i ens2 -A port 514

tcpdump

这里可以看到有日志数据通过ens2网卡的514端口进来了。

用Grafana查询和分析数据

在用Grafana进行查询之前先要配置Grafana的数据源添加loki的数据源

添加数据源

在loki的数据源中设置loki的连接地址

loki连接

设置完成后就可以用Grafana强大的分析查询和可视化来对日志进行分析了。

日志分析

通过本文步骤,我们在 Ubuntu 24.04 上构建了 Loki+Alloy+Grafana 日志分析系统:

Loki 负责高效存储日志,仅索引元数据降低开销;
Alloy 轻量采集系统日志,配置灵活易扩展;
Grafana 提供强大的日志查询与可视化能力(支持 LogQL、仪表盘、告警)。

该架构资源占用低(单节点最低 2 核 4GB 内存即可运行),适合中小规模环境、边缘设备或开发测试场景。后续可扩展至多节点 Loki 集群、添加日志告警规则,或集成 Prometheus 监控指标,构建完整的可观测性平台。


博客地址:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

VScode对Ubuntu用root账号进行SSH远程连接开发

发表于 2025-08-02 | 更新于: 2025-08-02 | 分类于 技术 , 开发 | | 阅读次数:
字数统计: 1.2k | 阅读时长 ≈ 4

由于linux服务器大部分都是基于命令行的操作,缺乏比较方便好用的编辑工具,对于经常在linux服务器上做开发的同学来说直接在服务器上进行开发或配置文件的修改还不是特别的方便。虽然linux上有vi或vim比起图形化的编辑工具体验感还是不是很好。作为程序员常用的宇宙第一的VScode就提供了相应的插件可以通过ssh远程连接到服务器上直接编辑服务器上相应的文件,极大提高了在服务器上开发或修改配置文件的效率和体验感。本文就来介绍通过VScode对Ubuntu用root账号进行SSH远程连接直接在服务器上进行开发。

一、安装VScode的ssh扩展插件

Remote-SSH 扩展 允许你将任何带有 SSH 服务器的远程机器用作你的开发环境。这可以在多种情况下极大地简化开发和故障排除:

  • 在部署目标操作系统上开发​,或者使用比本地机器更大、更快或更专业化的硬件进行开发。
  • 轻松切换不同的远程开发环境,并安全地进行更新​,而无需担心影响本地机器。
  • 从多台机器或不同位置访问现有的开发环境。
  • 调试运行在其他地方(例如客户现场或云端​)的应用程序。

在VScode的编辑器界面在Extension中搜索ssh排名前三的Remote-SSH、Remote - SSH: Editing Configuration Files、Remote Explorer是微软官方的ssh扩展插件,都安装一下。

ssh扩展插件

安装好了后就会在左侧的导航看到Remote Exploer

Remote Exploer

在SSH中点“+” 后就可以在上面的导航输入框中输入要ssh连接服务器的命令。如:ssh xiejava@192.168.0.30 意思就是通过xiejava的用户名ssh登录到192.168.0.30的服务器。

New Remote

输入正确的口令后,表示服务器的图标变亮就意味着已经通过SSH连上了服务器了。

SSH连上了服务器

连上服务器后就可以通过命令来对服务器进行操作,也可以直接打开服务器上的文件进行操作了。

直接打开服务器上的文件进行操作

这样就可以直接在服务器上直接编辑文件,直接在命令行中输入命令执行,直接看到执行结果,简直不要太爽。

直接编辑文件

一般的教程到这里就结束了。但是有些Linux是默认不能使用root用户登录的如Ubuntu,如果不用root用户登录只能访问到登录用户的文件夹,如我是用xiejava登录的就只能访问到/home/xiejava的目录,只能在这个目录下新建和编辑相应的文件,而且每次打开编辑操作文件都要输入登录密码,作为服务器上的开发来说这显然是不可接受的。所以我们要用root账号进行ssh进行远程连接。

二、开启Ubuntu的root账号免密登录

1、生成SSH密钥对,并部署到服务器

要使 root 用户成功登录,需先在客户端生成 SSH 密钥对,并将公钥部署到服务器:

  1. 客户端生成密钥 (在本地PC执行):
1
ssh-keygen -t ed25519 -C "root_ssh_key"
  • 按提示选择保存路径(默认 C:\Users\你的用户名.ssh\id_ed25519)。
  • 连续按 3 次回车​,不设密码(实现完全免密)
    最后在文件夹中生成SSH密钥对
    生成SSH密钥对
  1. 部署公钥到服务器​:
    登录 Ubuntu
    创建 .ssh 目录并写入公钥
1
2
3
4
mkdir -p ~/.ssh
echo "粘贴复制的公钥内容,也就是id_ed25519.pub文件里面的内容" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

2、测试免密登录

在 Windows PowerShell 执行:

1
ssh 用户名@Ubuntu_IP
  • 成功标志​:直接登录 Ubuntu,无需输入密码。
  • 失败表现​:提示输入密码或返回 Permission denied。

3、启用root用户

使用当前具有 sudo 权限的用户登录系统。执行密码修改命令

1
sudo passwd root
  • 输入当前用户的密码​(用于 sudo 提权)。
  • 输入新的 root 密码​(输入时不会显示字符)。
  • 再次确认新密码。
    禁用root密码登录(增强安全)​
1
sudo vim /etc/ssh/sshd_config

设置PermitRootLogin prohibit-password
PermitRootLogin prohibit-password

重启systemctl restart ssh

4、找到本地的ssh配置文件并配置密钥登录

在vscode中点击SSH旁边的配置按钮就会出现ssh本地的配置文件,一般是C:\Users\你的用户名\.ssh\config

找到本地的ssh配置文件

在config文件中配置User root 和IdentityFile 密钥文件的路径。

配置

这样就可以通过root进入到任何目录操作编辑任何文件了。

root免密登录

最后要提醒大家的是大家在修改任何配置文件的时候要注意备份和确认,因为获得了root权限可以操作编辑任何文件了。


博客地址:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

飞牛NAS本地化部署n8n打造个人AI工作流中心

发表于 2025-07-27 | 更新于: 2025-07-27 | 分类于 技术 | | 阅读次数:
字数统计: 1.3k | 阅读时长 ≈ 4

n8n是一个开源的工作流自动化工具,类似于Zapier和IFTTT,但它更加灵活和强大 。它允许用户通过图形化界面,以拖拽的形式构建自动化工作流,将不同的应用程序和服务连接起来,实现各种自动化任务 。
n8n最初的用途是自动化日常工作流,帮助用户节省时间,提高工作效率。在AI技术出现后,n8n更是成为了连接AI与数字世界的桥梁,因为它能够让AI与超过1000种不同的服务进行交互,几乎使AI能与赛博世界中的任何其他主体畅通无阻。

n8n的主要优势包括:

  • 部署简单:支持Docker一键私有化部署,也提供云服务选项。
  • 可接入服务强:集成了超过1000种第三方服务,且自部署版本具备丰富的本地调用能力,可以对本地数据库、文件等进行操作,甚至作为寄生系统为现有业务增添自动化和AI功能。
  • 对大模型友好:内置图形可视化的LangChain节点,能够方便地集成各种AI模型、记忆、工具和解析器,支持BYOK(Bring Your Own Key)模式,即用户可以自备API Key来调用AI服务。
  • 支持半封装模式:在低代码和代码之间实现了平衡。对于已有的节点,可以拖拽完成接入;对于没有现成节点的功能,支持通过HTTP Request接入几乎任何开放API的第三方服务。同时,其Code节点支持运行JavaScript和Python代码,非常适合与ChatGPT进行结对编程。

对于个人用户来说,在NAS(网络附加存储)上部署n8n具有多方面的优势:

  • 完全掌控数据和流程:n8n是开源的,可以选择将其部署在自己的NAS服务器上,从而完全掌控您的数据和自动化流程,无需担心数据泄露或被供应商锁定。
  • 部署简单:n8n的部署过程相对简单,可以通过Docker一键私有化部署,即使是不懂代码的用户也能通过可视化的界面快速上手。
  • 常态化运行:NAS通常是7x24小时开机的设备,结合n8n的AI工作流能力,可以帮助个人用户完成日常工作中大量的重复性劳动,例如自动生成日报、周报等,从而释放更多时间用于其他活动。
  • 随时随地访问:NAS虽然部署在家里,但是一般都通过ddns或其他方式打通了与外网的连接,可以随时随地方便的构建和调试自己AI工作流应用。

本文就以我的飞牛NAS为例来部署n8n打造人工的AI工作流中心。

一、下载n8n的镜像

在飞牛NAS的Docker镜像仓库中找到n8n的镜像,下载这个下载量和标星最多的n8nio/n8n的镜像。

下载n8n镜像

下载后就可以在飞牛NAS的本地镜像库中看到这个n8nio/n8n镜像。

本地镜像

二、启动镜像创建n8n容器

点击本地n8nio/n8n镜像的启动按钮,弹出创建容器的配置界面,在配置界面中输入容器的名称n8n勾选开机自启动。

创建容器

在进行存储位置配置之前,在NAS的文件管理中创建用于存储n8n数据文件的文件夹。

创建存储位置

在创建容器详情的配置界面其他的配置项都可以默认,在存储位置的配置项中一定要配置将容器的存储空间映射到NAS上的文件夹,这个文件夹就是刚在NAS文件管理中建的文件夹(也就是将docker容器中的/home/node/.n8n映射到NAS中的n8n/n8n_data)。否则docker重启n8n的配置数据会丢失。

存储空间映射

配置完成后,勾选创建后启动容器,点击“创建”。容器创建启动后就可以通过本地的5678端口访问n8n的应用了。

启动容器

三、访问使用n8n

在浏览器中输入你的主机和端口就可以访问n8n,我这里是 http://192.168.0.18:5678/
第一次访问有可能会出现如下图所示的提示,n8n用到了安全的cookie,要不就要配置HTTPS,要不就在环境变量中配置N8N_SECURE_COOKIE为false

警告

这里,我们在容器设置里添加变量,设置N8N_SECURE_COOKIE为false

设置N8N_SECURE_COOKIE为false

这样再次访问 http://192.168.0.18:5678/ 就可以正常访问了。第一次用n8n要设置自己的用户名和密码。

设置自己的用户名和密码

设置完用户名密码就可以使用n8n了。

使用n8n

我们可以导入一个已经配置好的n8n工作流实例。

导入n8n工作流实例

可以看到正常导入,将配置修改为自己的配置就可以直接使用别人已经配置好的工作流了。

使用效果

至此我们在飞牛NAS上成功部署了n8n,可以方便的随时随地构建自己的AI工作流应用了。


作者博客:http://xiejava.ishareread.com/


“fullbug”微信公众号

关注:微信公众号,一起学习成长!

12…22>
XieJava

XieJava

214 日志
11 分类
27 标签
RSS
GitHub
友情链接
  • 爱分享读书
  • CSDN
  • 豆瓣
© 2025 XieJava | Site words total count: 434.9k

主题 — NexT.Muse
0%