作者: 启鑫

  • Docker安装Nextcloud

    Nextcloud 是一款开源的私有云存储服务,通过 Docker 部署 Nextcloud 可以快速搭建私有云存储服务,适用于个人和小型团队使用。

    1. 创建工作目录

    在服务器上创建一个专门用于存放 Nextcloud 数据的目录,并进入该目录:

    mkdir nextcloud && cd nextcloud

    2. 编写 docker-compose.yml 配置文件

    创建 docker-compose.yml 文件,并填入以下内容:

    services:
      db:
        image: postgres
        restart: always
        volumes:
          - db:/var/lib/postgresql/data
        environment:
          - POSTGRES_DB=nextcloud
          - POSTGRES_USER=nextcloud
          - POSTGRES_PASSWORD=nextcloud
    
      app:
        image: nextcloud
        restart: always
        ports:
          - 8080:80
        volumes:
          - nextcloud:/var/www/html
        environment:
          - POSTGRES_HOST=db
          - POSTGRES_DB=nextcloud
          - POSTGRES_USER=nextcloud
          - POSTGRES_PASSWORD=nextcloud
        depends_on:
          - db
    
      cron:
        image: nextcloud
        restart: always
        volumes:
          - nextcloud:/var/www/html
        entrypoint: /cron.sh
        depends_on:
          - db
    
    volumes:
      db:
      nextcloud:

    2.1 说明

    • 数据库服务 (db): 使用 PostgreSQL 作为 Nextcloud 的数据库存储。
    • Nextcloud 应用 (app): 主要的 Nextcloud 服务,映射端口 8080。
    • 定时任务 (cron): 运行 Nextcloud 的定期任务,如清理临时文件、维护数据库等。
    • 数据卷 (volumes): db 用于存储数据库数据,nextcloud 用于存储 Nextcloud 相关文件。

    3. 启动 Nextcloud

    使用 docker compose 命令启动 Nextcloud 容器:

    docker compose up -d

    4. 访问 Nextcloud

    在浏览器中打开以下地址访问 Nextcloud 界面:

    http://<服务器IP>:8080

    首次访问时,需要创建管理员账号并完成初始化。

  • Docker安装Stirling-PDF

    Stirling-PDF 是一款基于 Docker 容器的开源 PDF 处理工具,专为OCR设计,能够将扫描的 PDF 文件中的图像或文字转换为可编辑的文本。通过集成 Tesseract OCR 引擎,Stirling-PDF 使得用户能够轻松提取 PDF 文件中的文字,无论是扫描文档、图像还是其他类型的图文混合内容。

    该工具提供了一个简洁的 Web 界面,用户可以上传 PDF 文件进行批量处理、OCR 识别和文本提取。它支持多语言识别,适用于不同语言的 OCR 数据包,能够帮助用户处理多种语言的文档。

    1. 创建 stirling-pdf 目录并进入

    首先,我们需要在你的服务器上创建一个新的目录来存放相关文件,并进入该目录。

    mkdir stirling-pdf && cd stirling-pdf

    2. 下载 Tesseract OCR 库

    Stirling-PDF 使用 Tesseract OCR 库进行文字识别。因此,我们需要下载其相关的语言数据。

    git clone https://github.com/tesseract-ocr/tessdata.git

    3. 创建 docker-compose.yml 文件

    创建 docker-compose.yml 文件,以便使用 Docker Compose 部署 Stirling-PDF 服务。

    在 stirling-pdf 目录下,创建并编辑 docker-compose.yml 文件:

    services:
      stirling-pdf:
        restart: always
        image: frooodle/s-pdf:latest
        ports:
          - '8080:8080'  # 映射容器内的 8080 端口到宿主机的 8080 端口
        volumes:
          - ./tessdata:/usr/share/tessdata
          - ./extraConfigs:/configs
          - ./customFiles:/customFiles/
          - ./logs:/logs/
        environment:
          - DOCKER_ENABLE_SECURITY=false
          - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
          - LANGS=en_GB

    4. 启动 Stirling-PDF

    创建完 docker-compose.yml 文件后,可以使用以下命令启动 Stirling-PDF 服务:

    docker compose up -d

    该命令会自动下载所需的 Docker 镜像并启动容器。启动完成后,Stirling-PDF 服务将开始运行。

    5. 使用浏览器访问 Stirling-PDF

    启动成功后,你可以在浏览器中通过以下地址访问 Stirling-PDF:

    http://<IP>:8080
    • 替换 <IP> 为你的服务器的 IP 地址,你就可以在浏览器中访问并使用 Stirling-PDF 进行 PDF 文件的处理了。
  • 如何从 Git 历史中彻底删除误上传的敏感信息

    如果你不小心提交了包含敏感信息(如 API 密钥、数据库密码)的 .env 文件到 Git 仓库,需要 彻底删除 这个文件及其历史记录,以防泄露。以下是完整的处理步骤。

    1. 立即更改敏感信息

    重要! .env 文件中的密码和密钥可能已经泄露,立即更改相关凭据,如:

    • 数据库密码
    • API 密钥
    • OAuth 令牌
    • SSH 私钥

    2. 确保 .env 文件不会再被提交

    将 .env 添加到 .gitignore,防止再次提交:

    echo ".env" >> .gitignore
    git add .gitignore
    git commit -m "Add .env to .gitignore"

    3. 从 Git 历史中删除 .env 文件

    推荐方式:使用 git filter-repo

    git filter-repo 是 Git 官方推荐的工具,速度快且更安全。

    3.1 安装 git filter-repo

    如果尚未安装,可以运行:

    pip install git-filter-repo

    3.2 彻底删除 .env 文件

    在 Git 仓库根目录运行:

    git filter-repo --path .env --invert-paths

    参数解析:

    • --path .env:指定要删除的文件
    • --invert-paths:删除所有提交中 .env 文件的历史记录

    4. 验证 .env 是否彻底删除

    检查 .env 是否仍在历史记录中:

    git log -- .env
    git log -S"你的敏感信息"

    如果没有返回任何记录,说明 .env 文件及其历史已经删除。

    5. 强制推送到远程仓库

    由于改写了 Git 历史,必须使用 --force 强制推送:

    git push origin main --force

    注意:

    • 所有协作者 需要重新克隆仓库,否则 git pull 会失败。
    • 确保 .env 不会再提交(参考步骤 2)。

    6. 清理本地和远程的旧引用

    如果 .env 可能出现在其他分支,确保所有分支都清理干净:

    git push origin --all --force

    7. 确保 .env 在远程仓库中消失

    前往 GitHub / GitLab 仓库,检查 .env 是否仍然可见:

    • 如果仍然存在,可能是缓存未清除,联系托管平台的技术支持要求彻底清除。

    8. 预防未来类似问题

    • 使用 .gitignore 确保敏感文件不会进入 Git 版本控制
    • 使用环境变量管理工具(如 dotenv)存储敏感数据
    • 定期检查 Git 提交,避免误提交敏感信息:
    git log -p | grep "API_KEY"

    重要提醒

    • 备份代码:执行 git filter-repo 之前,建议 备份仓库,以防误删。
    • 通知协作者:如果有其他人参与该仓库开发,他们需要重新克隆仓库,否则会遇到同步问题。
    • 合规性问题:如果泄露的是 用户数据,请考虑是否需要上报安全事件
    • 对于 GitHub 仓库:如果 .env 仍然可见,可以尝试 GitHub API 请求删除缓存或联系 GitHub 支持。
    • 对于 GitLab:使用 git gc --prune=now 清理本地仓库,并在 GitLab 管理面板中触发仓库垃圾回收。
    • 企业环境:如果 Git 服务器由企业管理可与管理员协商执行全局清理。
  • Windows系统恶意域名连接事件分析与响应

    事件概述

    在防火墙监控中检测到一台内部 Windows 主机(通过其 IP 地址识别)发起了对一个或多个恶意域名的网络连接。这可能表明该主机已受到恶意软件感染,需要立即进行排查和处理。

    1. 识别恶意请求来源

    1.1. 检查防火墙日志

    • 在防火墙管理界面中,找到相关的日志记录,确定:
      • 访问的恶意域名
      • 访问的时间
      • 发起请求的设备 IP
      • 访问的协议(如 HTTP、HTTPS、DNS 等)
      • 源端口和目标端口

    1.2. 在 Windows 设备上检查 DNS 解析历史

    在受感染的 Windows 设备上,使用以下命令查看 DNS 缓存:

    ipconfig /displaydns

    查找是否存在恶意域名,并记录相关条目。同时,检查 DNS 服务器的指向,是否被篡改。

    1.3. 查找相关进程

    使用以下命令查看当前连接的域名和进程:

    Get-NetTCPConnection -State Established | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,OwningProcess | Format-Table -AutoSize

    找到与恶意域名相关的 IP 地址,并记录对应的进程 ID(PID)。

    然后使用:

    Get-Process -Id <PID> -IncludeUserName

    查看是哪个进程在发起恶意请求,并查看进程的用户名,来判断是否是异常进程。

    1.4. windows事件日志分析

    • 打开事件查看器,检查“Windows 日志”下的“应用程序”、“安全”和“系统”日志。
    • 重点关注以下事件:
      • 异常的登录尝试(安全日志)。
      • 应用程序错误或崩溃(应用程序日志)。
      • 系统错误或警告(系统日志)。
      • 查找与恶意软件活动相关的事件,例如:
        • 可疑的进程启动或终止。
        • 异常的文件访问或修改。
        • 网络连接错误。

    1.5. 使用wireshark抓包分析

    • 在受感染主机上安装 Wireshark,捕获网络流量。
    • 使用过滤器(例如,dns.qry.name contains "malicious-domain.com")来查找与恶意域名相关的流量。
    • 分析流量中的数据包,查找恶意软件的通信模式和数据内容。
    • 重点关注以下信息:
      • 恶意软件使用的协议和端口。
      • 恶意软件通信的 IP 地址和域名。
      • 恶意软件传输的数据内容。

    2. 终止并分析恶意进程

    2.1. 终止可疑进程

    • 当发现感染的进程是系统进程时:
      • 仔细核对:使用Process Explorer等工具,查看进程的详细信息。
      • 数字签名验证:检查系统进程的数字签名。
      • 资源占用异常:监控系统进程的CPU、内存和网络占用情况。
      • 网络连接异常:通过netstat,wireshark等工具,确认系统进程的网络链接,是否链接了可疑的IP或者域名。
      • 隔离网络:立即将受感染的主机从网络中隔离。
      • 安全模式扫描:重启计算机进入安全模式,进行全面扫描。
      • 系统文件检查器(SFC):使用sfc /scannow命令扫描并修复受损的系统文件。
      • DISM工具:使用DISM工具,对系统镜像进行修复。
      • 系统还原:尝试回滚到感染前的状态。
      • 分析恶意软件:提取可疑的系统进程文件进行恶意软件分析。
      • 考虑重装系统:如果以上方法无效,考虑重装系统。
    • 找到可疑进程后,可以手动终止:
    Stop-Process -Id <PID> -Force

    或者在任务管理器中找到对应进程并结束任务。在终止前,使用工具进行进程的快照。

    2.2. 分析进程启动项

    使用以下命令检查进程是否在开机启动:

    Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location

    如果发现恶意进程,手动删除启动项,或者使用 msconfig 检查启动项。同时检查服务列表,是否有可疑服务在运行。

    3. 查找恶意文件

    3.1. 检查系统文件

    使用 Windows Defender 进行完整扫描:

    Start-MpScan -ScanType FullScan

    或者使用 ClamAV(适用于 Windows 版本)进行手动扫描:

    clamscan.exe -r C:\ --bell --remove

    同时可以使用其他的杀毒软件进行辅助查杀

    3.2. 使用 Autoruns 检查隐藏启动项

    下载 Autoruns,运行后检查是否有恶意程序在系统启动时运行。尤其关注隐藏的启动项和服务。

    3.3. 检查 Hosts 文件

    打开 Hosts 文件:

    notepad C:\Windows\System32\drivers\etc\hosts

    删除所有与恶意域名相关的可疑条目。检查是否有异常的指向。

    4. 阻止恶意域名

    在本地防火墙或 Windows Defender 中阻止恶意域名:

    New-NetFirewallRule -DisplayName "Block Malicious Domain" -Direction Outbound -Action Block -RemoteAddress <恶意IP>

    或者在 Hosts 文件中将恶意域名指向本地:

    127.0.0.1 malicious-domain.com

    同时,在企业环境中,需要在边界防火墙,IDS/IPS 等设备中添加封禁策略。

    5. 排查后门和持久化机制

    5.1. 检查计划任务

    Get-ScheduledTask | Where-Object {$_.TaskName -match "malware"}

    删除任何可疑任务:

    Unregister-ScheduledTask -TaskName "<TaskName>" -Confirm:$false

    5.2. 检查注册表

    查看注册表启动项:

    reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run

    删除可疑项:

    reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v "<恶意项>" /f

    同时,检查其他的注册表启动项,例如 RunOnce,RunServices 等。

    5.3 检查网络连接

    通过 netstat 命令,检查异常网络连接。

    netstat -ano

    6. 进行系统修复

    如果感染严重,可以执行以下操作:

    1. 系统还原:回滚到之前的快照
    2. 重装 Windows:如果找不到恶意软件的来源,建议重装系统
    3. 更改密码:如果怀疑凭据被窃取,建议更改相关账户密码
    4. 隔离受感染主机:将受感染主机从网络中隔离,防止横向传播。
    5. 分析恶意软件样本:如果可能,提取恶意软件样本进行分析,了解其行为和目的。
    6. 更新安全补丁:确保系统和应用程序都安装了最新的安全补丁。
    7. 全网安全扫描:对网络中的其他主机进行安全扫描,确保没有其他主机受到感染。
    8. 备份重要数据:在重装系统前,尽可能的备份重要数据。
  • Debian12 安装ClamAV

    ClamAV 是一款流行的开源病毒扫描工具,可以用于扫描文件和目录中的恶意软件。

    1. 安装 ClamAV

    首先,使用以下命令安装 ClamAV 和其守护进程:

    apt install clamav clamav-daemon -y

    2. 更新病毒库

    安装完成后,使用以下命令更新病毒库:

    freshclam

    3. 扫描

    扫描单个文件

    使用以下命令扫描指定的文件:

    clamscan /path/to/file

    扫描整个目录

    扫描整个目录中的所有文件:

    clamscan -r /path/to/directory

    扫描指定目录并仅显示感染的文件

    使用 -i 参数,仅显示感染的文件:

    clamscan -r -i /path/to/directory

    扫描整个系统并仅显示感染的文件,并将结果记录到日志文件

    要扫描整个系统并将结果记录到日志文件中,可以使用以下命令:

    clamscan -r -i -l /var/log/clamscan-infected.log /

  • Debian 12 部署 HIDS Wazuh 指南

    Wazuh 是一款 开源的 SIEM(安全信息和事件管理) 及 HIDS(主机入侵检测系统) 解决方案,能够实时监控系统日志、检测安全威胁、执行合规性审计,并提供可视化安全分析。
    Wazuh可用于入侵检测、日志分析、文件完整性监控、恶意软件检测、漏洞扫描等场景。Wazuh 适用于企业安全运营中心(SOC)、服务器与终端安全、DevSecOps 以及合规性管理,帮助企业和个人提升 IT 环境的安全性。

    1. 单节点部署 Wazuh

    首先,克隆 Wazuh 官方 Docker 仓库,并切换到指定版本:

    git clone https://github.com/wazuh/wazuh-docker.git -b v4.11.1

    进入 单节点部署目录:

    cd wazuh-docker/single-node

    2. 配置 Wazuh

    Wazuh 由 管理器(Manager)、索引器(Indexer) 和 仪表板(Dashboard) 组成。

    2.1 调整内核参数

    在主机(Linux)上,提升 vm.max_map_count 以支持 Wazuh 索引器(需要 root 权限):

    sysctl -w vm.max_map_count=262144

    2.2 生成 SSL 证书

    运行以下命令,生成用于组件间通信的证书:

    docker compose -f generate-indexer-certs.yml run --rm generator

    2.3 启动 Wazuh

    完成配置后,启动 Wazuh 服务:

    docker compose up -d

    2.4 访问 Wazuh 仪表板

    部署完成后,在浏览器中访问:

    https://<Wazuh_IP>

    默认的登录凭据为:

    • 用户名:admin
    • 密码:SecretPassword

    3. 添加 Wazuh Agent

    要将受监控的主机接入 Wazuh,请在 Web 仪表板中进行操作:

    在 Wazuh 仪表板中添加 Agent

    1. 登录 Wazuh 仪表板。
    2. 导航到 HOME — OVERVIEW — Deploy new agent。
    3. 选择要监控的操作系统。
    4. 输入要监控的服务器地址、Agent 名称和分组。
    5. 复制生成的 Agent 安装命令,并粘贴到要监控的主机中执行。

    验证 Agent 连接
    返回到 HOME — OVERVIEW 页面,您应该能够看到新添加的 Agent。