许多朋友可能都有过这样的困扰:服务器硬盘空间莫名其妙地被占满,明明程序安装得很少,找不到大文件,但硬盘使用率却居高不下。这到底是怎么回事?
答案可能就在系统日志!尤其是当服务器开放了默认的 SSH 端口(22)时,大量攻击机器人会尝试暴力破解你的密码,这些尝试会生成海量日志,最终导致硬盘空间被侵占。
为什么系统日志会占用这么多空间?
•每次登录失败 会记录约 400 字节 的日志;
•可能有 5-10 个 IP 同时尝试暴力破解;
•每个 IP 每秒尝试 1-2 次;
•攻击行为可能 24 小时不间断。
以此计算,一天的日志轻松达到 几百 MB,甚至 几 GB!
此外,Linux 系统默认保留了硬盘 10% 的空间 专用于日志文件存储。如果你的磁盘容量较小,这些日志就成了 “隐形杀手”。
如何检查系统日志的占用情况?
在服务器上执行以下命令,快速确认日志是否是“真凶”:
# 查看日志占用空间
journalctl --disk-usage
# 查看日志目录大小
du -sh /var/log/journal/
# 检查最近登录失败记录的数量
journalctl | grep "Failed password" | wc -l
如果日志文件占用了几百 MB 或者显示大量登录失败记录,说明你的服务器正遭遇暴力破解攻击。
如何解决日志占用问题?
以下是优化日志占用和提高服务器安全性的具体操作:
1. 清理现有日志
清理系统日志可以立即释放被占用的硬盘空间:
# 停止日志服务
systemctl stop systemd-journald
# 清空日志目录
rm -rf /var/log/journal/*
# 启动日志服务
systemctl start systemd-journald
完成后,你会看到硬盘空间大幅释放。
2. 限制日志大小和保存时间
为了防止日志再次占满硬盘空间,可以通过配置文件限制日志的存储大小和保存时间:
# 编辑日志配置文件
echo "SystemMaxUse=500M
MaxRetentionSec=7day
MaxFileSec=1day" >> /etc/systemd/journald.conf
# 重启日志服务
systemctl restart systemd-journald
这将日志文件的存储空间限制为 500MB,最多保留 7 天的记录。
3. 修改默认 SSH 端口
默认的 22 端口是攻击者的首选目标,建议更改为较高的端口号,例如 35789:
# 备份 SSH 配置文件
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
# 修改 SSH 端口配置
sed -i 's/^Port 22/#Port 22/' /etc/ssh/sshd_config
echo "Port 35789" >> /etc/ssh/sshd_config
# 重启 SSH 服务
systemctl restart sshd
修改后,请使用新的端口重新登录:
ssh -p 35789 root@你的服务器IP
4. 安装 Fail2Ban 自动封禁恶意 IP
Fail2Ban 是一个强大的工具,能够自动封禁多次尝试登录的恶意 IP,有效减少暴力破解和日志生成:
# 安装 Fail2Ban
apt-get install fail2ban -y
# 启动服务并设置开机自启
systemctl start fail2ban
systemctl enable fail2ban
5. 定期检查日志空间占用
优化完成后,也需要定期检查日志空间的占用情况,及时清理和调整配置:
journalctl --disk-usage
将这一步设为日常维护的一部分,可以长期保持服务器的健康运行。
总结
通过以下步骤,可以有效解决日志占用问题:
1. 清理现有日志并限制大小
2. 修改默认SSH端口
3. 安装Fail2Ban自动封禁恶意IP
4. 定期检查日志大小
按照以上方法优化后,你的服务器将更加稳定,硬盘空间也不会再被日志”吃掉”!
作者:老默,转载请注明出处:https://www.laomoss.com/6140.html