要快速定位麒麟系统中近期异常SSH登录IP,需解析/var/log/auth.log,用grep筛选“Failed password”并awk或sed提取IP,再用sort | uniq -c | sort -nr统计频次;高频IP(如超50次/小时)应立即防火墙封禁;查24小时SSH事件可用journalctl或awk按时间范围过滤auth.log。

要快速定位麒麟系统中近期是否有异常IP通过SSH发起登录尝试,必须直接解析认证日志文件,因为SSH连接请求(无论成功或失败)都会被PAM模块记录到/var/log/auth.log中,而last等命令仅反映已建立的会话,无法捕获被拒绝的试探行为。
筛选所有失败的SSH登录尝试IP
执行以下命令提取含“Failed password”字段的完整日志行,并只保留IP地址列:
sudo grep "Failed password" /var/log/auth.log | awk '{print $11}'
这一步输出的是原始IP字段,但部分日志中IP可能被方括号包裹(如[192.168.1.100]),直接取第11列会导致括号混入;若结果异常,请改用正则提取:sudo grep "Failed password" /var/log/auth.log | sed -n 's/.*from \([^ ]*\).*/\1/p'。
统计各IP失败次数并排序
攻击者常使用暴力扫描,单个IP反复尝试是典型特征。运行以下命令可按失败次数降序列出IP及其计数:
sudo grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
注意:若某IP出现频率极高(例如超过50次/小时),应立即在防火墙中封禁——【该操作不可逆,封禁后该IP将完全无法访问本机任何端口】。
查看最近24小时内所有SSH相关认证事件
方法一:用journalctl实时回溯(适用于systemd-journald已启用持久化)
sudo journalctl --since "24 hours ago" -u sshd.service | grep -E "(Failed|Accepted|Connection closed)"
方法二:直接读取auth.log时间范围(更可靠,不依赖journald状态)
sudo awk -v d1="$(date -d '24 hours ago' '+%b %d %H:%M:%S')" -v d2="$(date '+%b %d %H:%M:%S')" '$0 > d1 && $0
此命令利用日志时间戳字符串的字典序比较实现范围筛选,能准确覆盖跨天场景(如当前是10月2日19:38,则自动包含10月1日19:38之后全部记录)。
提取成功登录的远程IP及对应用户名
第一步:筛选出所有“Accepted”类型的SSH登录成功条目
sudo grep "Accepted " /var/log/auth.log
第二步:从结果中精准提取日期、IP和用户名(跳过密钥类型等干扰字段)
sudo grep "Accepted " /var/log/auth.log | awk '{for(i=1;i
第三步:去重并按时间倒序排列(最新登录排最前)
sudo grep "Accepted " /var/log/auth.log | awk '{for(i=1;i















