Linux 服务器安全扫描日志分析及端口占用说明

在对一台 Linux 服务器执行 rkhunter(Rootkit Hunter)安全扫描时,日志中出现了有关网络端口、系统账户以及配置的多项提示和警告。以下是对这些检测结果的详细分析及处理建议。 🟠 端口扫描结果 rkhunter 检测到 TCP 7000 端口被占用,并提示可能存在恶意 IRC bot 或 rootkit。进一步查看日志显示,该端口被 /usr/sbin/mysqld 占用,即为数据库服务 mysqld 进程。 通常情况下,MySQL 默认使用 3306 端口,若在配置文件(如 my.cnf)中修改过,可能会监听其他端口(例如测试环境或多实例场景下)。 验证端口使用情况 可通过以下命令确认具体占用情况: bashCopyEditsudo lsof -i :7000 或 bashCopyEditsudo netstat -tulnp | grep 7000 确认由 mysqld 绑定后,可判定为正常使用,无需担忧。 🟢 新增用户和组 扫描中提示 /etc/passwd 和 /etc/group 文件新增了以下用户和组: 这些是正常的软件安装(如 ClamAV …

使用 ClamAV 进行 Linux 系统全盘扫描并保存日志

在 Linux 系统中,如果需要定期对整台机器进行恶意软件(病毒、木马等)扫描,ClamAV 是一个常用的免费工具。以下介绍如何进行全盘扫描,并将完整扫描结果保存为带时间戳的日志文件,方便后续查看或归档。 基础扫描命令 ClamAV 的 clamscan 工具支持递归扫描,最基本的写法如下: bashCopyEditclamscan -r / 但这样会扫描系统中的所有文件,包括 /proc、/sys、/dev 等虚拟或设备目录,这些目录不适合扫描,会产生大量错误信息。 排除系统特殊目录 为了避免扫描无意义的系统伪文件系统,可以使用 –exclude-dir 参数排除这些目录,例如: bashCopyEdit–exclude-dir=/proc –exclude-dir=/sys –exclude-dir=/dev 此外,如果还需要排除其他目录(比如存放大文件或备份的目录),也可继续添加 –exclude-dir 参数。 自动保存扫描日志 为了后期分析结果,通常需要将扫描输出同时保存为日志文件。可以结合 tee 命令实现: bashCopyEditclamscan -r –bell –exclude-dir=/proc –exclude-dir=/sys –exclude-dir=/dev / | tee /root/clamav_scan_$(date +%Y%m%d_%H%M%S).log 命令说明 是否支持「增量扫描」 ClamAV 的 clamscan 不会自动跳过已扫描过的文件,每次执行都会重新完整扫描。它不包含「增量扫描」或「缓存机制」,也不会记住上次扫描状态。 如果需要仅扫描新增或修改过的文件,需要额外实现文件变更检测(例如使用 inotify)或定期针对指定文件夹进行局部扫描。 总结 💡 …

使用 rkhunter 执行系统 Rootkit 检查及配置 SSH 安全

近期在对 Linux 系统进行安全加固时,执行了 rootkit 检查工具 rkhunter,并同步完善了 SSH 配置。以下为详细流程总结。 🕵️ rkhunter 检查流程 在执行 rkhunter –check 时,默认会在每个阶段提示「按 Enter 继续」,需要手动操作,无法一次性跑完。为实现自动化,可使用以下命令: sudo rkhunter –check –skip-keypress 如果需要将输出保存为日志文件,可追加 tee: sudo rkhunter –check –skip-keypress | tee /root/rkhunter_check_$(date +%Y%m%d_%H%M%S).log 💾 更新文件属性数据库 执行属性文件数据库更新时,常用命令如下: udo rkhunter –propupd 默认会提示确认,可使用 -y 参数自动同意: sudo rkhunter –propupd -y 🔒 SSH 配置安全性调整 rkhunter 在检测 SSH …

VPS 内存不足导致 ClamAV 卡死的处理记录

在一台配置较低(内存较小)的 VPS 上,发现系统开机后非常卡顿,几乎无法操作。通过排查,发现 ClamAV 的自动更新服务 clamav-freshclam 会在开机启动后占用大量内存,导致系统资源被耗尽,响应变慢,甚至出现 “Transport endpoint is not connected” 等异常错误。 报错信息 shellCopyEditFailed to stop clamav-freshclam.service: Transport endpoint is not connected See system logs and ‘systemctl status clamav-freshclam.service’ for details. 原因分析 临时处理方案 在系统还能有限操作时,立即执行以下步骤,避免下次开机再次启动该服务: bashCopyEditsystemctl disable clamav-freshclam.service systemctl stop clamav-freshclam.service 如果系统已经严重卡死,仍可先执行 disable 命令(只要有一丝响应),然后耐心等待系统缓慢执行完成,再重启服务器。 当命令无法执行时,可考虑通过 VPS 管理后台(控制台、面板)强制重启,随后再进行后续修复。 重启后确认 系统重启完成后,确认服务状态: bashCopyEditsystemctl …

邮件评分优化与检测流程总结

近期针对自建域名邮件发送,进行了一次详细的评分检测与优化测试,目标是尽可能提高邮件送达率并符合各大邮件服务商的安全及合规要求。 🎯 背景 测试中使用了一个新注册的 .top 域名,通过 mail-tester.com 检测,初步得分为 8/10,整体表现较好,但仍有部分扣分项需要分析和理解。 ✅ 已完成的安全配置 ⚠️ 主要被扣分的原因 💬 内容优化尝试 ✅ 最终结论 💡 建议 🔗 参考

Mailcow📨更换域名操作指南(反向代理架构专用)

本指南适用于以下部署架构: 🧠 适用场景 你当前使用的是: ✅ 一、概览:更换域名时涉及的内容 项目 是否必须修改 说明 Mailcow 配置文件 ✅ 内部逻辑引用主机名,需更新 DNS 记录 ✅ 通知全球邮件系统指向新服务器 反向代理配置 ✅ 更换域名入口访问路径 邮箱地址使用的域名 ❌(可选) 可继续使用旧域名或添加新域名 Mailcow 的数据卷 ❌ 保留原样,邮件和设置不受影响 Docker 容器结构 ❌ 无需更改 🔧 二、操作步骤 1. 修改 Mailcow 配置文件 打开 Mailcow 安装目录下的配置文件(如 /opt/mailcow/mailcow.conf),找到并修改以下行: iniCopyEditMAILCOW_HOSTNAME=mail.old-domain.com 改为: iniCopyEditMAILCOW_HOSTNAME=mail.new-domain.com ⚠️ 该设置影响系统识别主机、SOGo 链接生成、邮件头部显示等,必须修改。 2. 修改反向代理(Nginx 等) …

Mailcow📨多域名邮件系统部署与原理详解

许多站长或技术爱好者部署 Mailcow 邮件服务器后,往往会有这样的需求: 我是否可以在一台服务器上同时托管多个邮箱域名,比如 user@domain.com 和 admin@abc.com? 答案是肯定的。Mailcow 完全支持“一套服务,多域名共用”的架构。本文将从 原理、配置方法、DNS 设置 等角度详细介绍。 ✉️ 一、理解邮箱域名与服务器域名的区别 在 Web 系统中,一个域名通常绑定一个网站。但在邮件系统中,邮箱的域名(@后面的部分)和服务器实际绑定的域名可以是不同的。 比如: 这两者之间的关联,完全靠 DNS 中的 MX 记录 来建立。 🧠 二、工作原理解析:邮件是如何投递的? 当其他服务器向 user@abc.com 发送邮件时,流程如下: ✅ 由此可见,邮件通信靠的是 DNS 中的 MX 路由,而不是服务器的主机名或 HTTPS 域名! 🛠️ 三、Mailcow 多域名部署方法 步骤 1:添加多个域名到 Mailcow 登录 Mailcow 管理后台: 步骤 2:为每个域名添加邮箱账户 即可创建如 admin@abc.com、info@xyz.org …

使用 Docker Compose 安装 Portainer CE(图形化容器管理面板)

Portainer 是一个轻量级的图形化 Docker 管理面板,适用于个人服务器管理、容器项目可视化操作、多服务部署维护等场景。本文记录了使用 Docker Compose 安装 Portainer CE 的完整流程,并通过 Nginx + FRP 实现公网安全访问。 🧱 系统结构概览 访问链路为: ✅ 步骤一:在内网主机上部署 Portainer(Host A) 创建目录: 编写 docker-compose.yml 文件: 启动服务: ✅ 步骤二:Nginx 反向代理配置(Host B) 在 Nginx 中添加如下配置(监听代理端口,转发至 Host A): ✅ 步骤三:FRP 穿透配置(VPS + Host B) VPS 上 FRPS 配置(已有可跳过): 确保已开放指定端口,并配置好 frps.ini Host B 上 …

Jitsi Meet🧠安装与部署全指南(Docker + JWT + Rocket.Chat + Nginx + FRP)

🌍 一、系统架构概览 本架构实现了一个内网部署 + 反向代理 + 公网穿透 + 统一认证的视频会议系统,支持与 Rocket.Chat 集成: cssCopyEdit[Jitsi 主机] └─ 使用 docker-compose 部署 Jitsi Meet 各服务(web, jvb, prosody, jicofo) [反向代理主机] └─ Nginx 启用 HTTPS 并将请求转发至 Jitsi 内网地址 [公网入口 VPS] └─ FRP 映射 443 → 反代主机,公网访问统一通过域名入口 🧱 二、环境信息(匿名化) 项目 内容 Jitsi 服务主机 局域网服务器 A 反向代理主机 局域网服务器 B …

Rocket.Chat🚀更换域名操作全记录(Docker + MongoDB 7)

这篇文章分享如何在 Docker 部署环境下,将 Rocket.Chat 的旧域名彻底替换为新域名,包括数据库更新、服务重启和客户端验证等全流程,适用于自己搭建的私有聊天系统。 🧱 部署架构概览 🛡 本文中所有域名、容器名均为示例,实际请根据你的环境替换。 🔍 步骤一:查找并确认含旧域名的数据 进入 MongoDB 容器: bashCopyEditdocker exec -it your-mongo-container-name mongosh 切换到 Rocket.Chat 数据库: jsCopyEdituse rocketchat 检查上传记录中是否包含旧域名: jsCopyEditdb.rocketchat_uploads.countDocuments({ url: { $regex: “localhost|旧域名1|旧域名2|…” } }) 🔄 步骤二:批量替换上传记录中的域名前缀 使用 MongoDB 7 的 $function 方式进行安全、批量替换: jsCopyEditdb.rocketchat_uploads.updateMany( { url: { $regex: “localhost|旧域名1|旧域名2|…” } }, [ { …