在运维和系统管理中,Debian日志分析是保障服务器安全与稳定运行的重要环节。通过分析系统日志,我们可以及时发现异常登录、服务崩溃、资源耗尽等问题。本文将带你从零开始,编写一个简单但实用的日志监控脚本,即使你是Linux小白,也能轻松上手!

Debian系统默认会将各类事件记录在 /var/log/ 目录下,例如:
/var/log/syslog:系统综合日志/var/log/auth.log:认证与登录日志/var/log/kern.log:内核日志手动查看这些日志费时费力,而通过编写一个自动化日志分析脚本,我们可以定时扫描关键信息(如多次失败登录、服务错误等),并通过邮件或终端提醒管理员。
确保你使用的是Debian或其衍生系统(如Ubuntu),并拥有普通用户权限(建议不要直接用root)。打开终端,准备开始!
我们将编写一个Shell脚本,用于检测最近1小时内是否有5次以上的SSH登录失败记录。这类行为可能意味着有人正在暴力破解你的服务器密码。
在终端中执行以下命令创建脚本文件:
nano /home/$USER/check_ssh_failures.sh然后将以下内容粘贴进去:
#!/bin/bash# Debian日志分析脚本 - 检测SSH暴力破解尝试# 作者:你的名字# 功能:检查过去1小时内auth.log中的失败登录次数LOG_FILE="/var/log/auth.log"TIME_WINDOW=3600 # 1小时(秒)THRESHOLD=5 # 阈值:超过5次即告警# 获取当前时间戳NOW=$(date +%s)# 计算1小时前的时间戳ONE_HOUR_AGO=$((NOW - TIME_WINDOW))# 初始化计数器COUNT=0# 读取日志文件,逐行分析while IFS= read -r line; do # 提取日志时间(格式如:May 10 14:23:01) LOG_TIME_STR=$(echo "$line" | cut -d' ' -f1-3) # 跳过无法解析的时间行 if [[ -z "$LOG_TIME_STR" ]]; then continue fi # 尝试将日志时间转换为时间戳 LOG_TIMESTAMP=$(date -d "$LOG_TIME_STR" +%s 2>/dev/null) # 如果转换失败(比如年份缺失),跳过 if [[ $? -ne 0 ]]; then continue fi # 判断是否在1小时内且包含“Failed password” if [[ $LOG_TIMESTAMP -ge $ONE_HOUR_AGO ]] && [[ "$line" == *"Failed password"* ]]; then ((COUNT++)) fidone < "$LOG_FILE"# 判断是否超过阈值if [[ $COUNT -ge $THRESHOLD ]]; then echo "[警告] 检测到 $COUNT 次SSH登录失败!可能正在遭受暴力破解攻击。" # 可选:发送邮件或写入告警日志 # echo "$(date): SSH brute-force detected ($COUNT failures)" >> /var/log/ssh_alerts.logelse echo "[正常] 过去1小时内SSH登录失败次数:$COUNT(低于阈值$THRESHOLD)"fi保存文件后,返回终端,执行以下命令赋予脚本执行权限:
chmod +x /home/$USER/check_ssh_failures.sh然后运行脚本:
./check_ssh_failures.sh你会看到类似这样的输出:
[正常] 过去1小时内SSH登录失败次数:2(低于阈值5)为了让脚本自动运行,我们可以使用 cron 定时任务。执行:
crontab -e在打开的编辑器中添加一行(每10分钟检查一次):
*/10 * * * * /home/your_username/check_ssh_failures.sh >> /var/log/ssh_monitor.log 2>&1记得将 your_username 替换为你的实际用户名。
syslog 中的服务崩溃信息mail 命令)通过这个简单的Shell脚本,你已经掌握了基本的Debian日志分析技巧。这不仅提升了你的Linux系统日志处理能力,也为服务器安全筑起了一道防线。随着经验积累,你可以逐步构建更复杂的自动化日志分析系统,实现真正的智能运维!
赶快动手试试吧!如有疑问,欢迎在评论区交流。
本文由主机测评网于2025-12-08发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025124802.html