检测SSH攻击
检测SSH攻击通常涉及查看和分析SSH服务的日志文件。在大多数Linux系统中,默认的SSH日志文件位于/var/log/auth.log
或/var/log/secure
。以下是几个步骤和示例代码,您可以用来检测设备是否遭受SSH攻击
- 检查SSH登录尝试:
可以使用grep
命令来搜索失败的登录尝试
grep "Failed password" /var/log/auth.log
在Linux系统中,grep "Failed password" /var/log/auth.log
命令用于在 /var/log/auth.log
文件中查找包含字符串 “Failed password” 的行。这通常用于查看系统上SSH登录失败的记录。
在安全日志中,“Failed password” 表示一个SSH登录尝试失败。这可能是由于用户输入了错误的密码,或者由于某些其他安全策略导致的拒绝访问。这种信息对于检测潜在的安全威胁很有用,因为它可以指示有人试图非法访问你的系统。
一个典型的相关日志条目可能如下所示:
Dec 26 12:34:56 hostname sshd[12345]: Failed password for user123 from 192.168.1.100 port 22 ssh2
在这个例子中:
Dec 26 12:34:56
表示事件发生的日期和时间。hostname
是你的主机名。sshd[12345]
表示SSH守护进程的进程ID。Failed password for user123
表示用户 “user123” 的密码验证失败。from 192.168.1.100 port 22
表示登录尝试来自IP地址为 192.168.1.100 的主机,使用SSH的默认端口 22。ssh2
表示使用SSH协议的版本。
这些日志可以帮助你监视和识别潜在的安全问题,例如暴力破解尝试或未经授权的访问。如果你看到大量的失败登录尝试,可能需要进一步采取措施,例如使用防火墙规则、禁用密码登录、或设置账户锁定策略来增强系统安全性。
或者,如果你的系统将这些日志保存在/var/log/secure
grep "Failed password" /var/log/secure
这将列出所有失败的登录尝试,显示尝试访问的用户名和来源IP地址。
- 查找多次失败的尝试:
攻击者在尝试暴力破解SSH密码时通常会有多次失败的尝试。可以使用grep
命令和uniq
命令组合,来找出频繁失败的IP地址:
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
这个命令会列出所有失败尝试的次数及其来源IP地址,按尝试次数降序排列。
- 分析成功的登录尝试:
即使攻击者没有成功破解密码,他们也可能使用其他方法获得访问权限。查看成功的SSH登录尝试同样重要:
grep "Accepted password" /var/log/auth.log
或者:
grep "Accepted password" /var/log/secure
注意成功的登录尝试可能也包含正常用户的登录,因此需要仔细分析。
- 实时监控SSH尝试:
实时监控可以帮助你立即发现攻击行为。使用tail -f
命令可以实时查看日志:
tail -f /var/log/auth.log | grep "sshd"
- 使用fail2ban增加安全性:
fail2ban是一个防止暴力破解攻击的工具,它监控日志文件并且在检测到多次失败的登录尝试时封锁来源IP地址。
sudo apt-get install fail2ban
安装后,配置fail2ban的配置文件通常在/etc/fail2ban/jail.conf
,可以根据需要进行调整。
ps aux
能查看当前运行进程的详细信息,也能检测SSH的攻击
ps aux
命令用于在类Unix操作系统中显示关于当前运行进程的详细信息。以下是输出的列说明:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 96448 5340 ? Ss Dec26 0:03 /usr/lib/systemd/systemd
user 1234 2.5 4.0 123456 78900 pts/0 Sl+ Dec26 2:30 /usr/bin/python3 my_script.py
请注意在USER列 频繁出现sshd时候就说明被攻击!!!
在这个示例中:
-
第一行代表系统的
init
进程。 -
第二行代表一个用户运行的Python脚本(
my_script.py
)。进程ID(PID)是1234,它使用了2.5%的CPU和4.0%的内存等。 -
USER: 拥有该进程的用户。
-
PID: 进程ID,每个进程的唯一标识符。
-
%CPU: 该进程使用的CPU的百分比。
-
%MEM: 该进程使用的RAM(内存)的百分比。
-
VSZ: 该进程的虚拟内存大小,以千字节(KB)为单位。
-
RSS: 常驻集大小,表示进程在RAM中占用的部分,以千字节(KB)为单位。
-
TTY: 与进程相关联的终端类型。
-
STAT: 进程状态。常见值包括:
- R: 运行中
- S: 休眠
- D: 不可中断的休眠(通常是等待磁盘I/O)
- Z: 僵尸(已终止但尚未从进程表中删除)
-
START: 进程启动时间。
-
TIME: 该进程自启动以来累计使用的CPU时间。
-
COMMAND: 与该进程相关的命令或程序。
请注意,这些措施可以提高系统的安全性,但不能保证绝对的安全性。定期检查系统日志持系统和软件更以安全最佳实践是维护设备安全的重要步骤。
更多内容请在SSH阅读。