在Linux系统中,查看SSH登录成功以及登录失败用户的IP是非常重要的安全措施,这可以帮助系统管理员追踪潜在的恶意访问尝试,并采取相应的防护措施,下面是一些方法和步骤,用于查看和分析SSH登录日志。
(图片来源网络,侵删)查看SSH登录日志
需要了解SSH登录日志通常存放的位置,大多数Linux发行版使用/var/log/auth.log
(Debian/Ubuntu)或/var/log/secure
(RHEL/CentOS)来记录认证信息,包括SSH登录尝试。
1、打开终端。
2、使用以下命令查看登录成功的日志:
“`
sudo grep ‘sshd[‘ /var/log/auth.log | grep ‘Accepted’
“`
或者对于RHEL/CentOS:
“`
sudo grep ‘sshd[‘ /var/log/secure | grep ‘Accepted’
“`
这些命令会过滤出所有包含“Accepted”关键词的日志行,表示用户成功登录。
1、同样在终端中执行以下命令查看登录失败的日志:
“`
sudo grep ‘sshd[‘ /var/log/auth.log | grep ‘Failed’
“`
或者对于RHEL/CentOS:
“`
sudo grep ‘sshd[‘ /var/log/secure | grep ‘Failed’
“`
这将显示所有包含“Failed”关键词的日志行,表示用户登录失败。
理解日志格式对于分析日志非常重要,一个典型的SSH登录日志条目可能如下所示:
Sep 14 08:10:22 server sshd[12345]: Accepted publickey for user from 192.0.2.1 port 50000 ssh2
Sep 14 08:10:22
表示事件发生的日期和时间。
server
表示SSH服务器的主机名。
sshd[12345]
表示sshd进程的PID。
Accepted
表示SSH登录已接受。
publickey
表示使用的认证方法是公钥。
for user
表示以哪个用户身份登录。
from 192.0.2.1
表示客户端的IP地址。
port 50000
表示客户端使用的端口号。
ssh2
表示SSH协议版本。
日志文件会随着时间不断增长,因此需要定期轮替和维护以避免消耗过多磁盘空间,Linux系统中通常使用logrotate
工具进行自动日志管理。
如果想要实时查看登录尝试,可以使用tail
命令:
sudo tail f /var/log/auth.log | grep 'sshd['
这将实时显示所有SSH相关的日志条目。
为了增强安全性,可以采取以下措施:
更改SSH默认端口以规避自动化的恶意扫描。
禁用root用户的SSH远程登录。
使用密钥认证代替密码认证。
配置防火墙规则限制特定IP地址或范围的访问。
Q1: 如何只查看今天SSH登录成功的日志?
A1: 可以使用grep
结合日期来过滤今天的日志条目:
sudo grep 'sshd[' /var/log/auth.log | grep 'Accepted' | grep "$(date '+%b %e')"
Q2: 如何监控非授权的SSH登录尝试?
A2: 可以通过设置SSH的日志级别为DEBUG,然后在日志中查找关键字“unauthorized”来监控非授权的尝试:
sudo sed i 's/#LogLevel INFO/LogLevel DEBUG/g' /etc/ssh/sshd_configsudo service ssh restartsudo grep 'sshd[' /var/log/auth.log | grep 'unauthorized'
不过,请记得将日志级别改回INFO,避免产生过多的日志数据。
感谢观看,欢迎评论、关注和点赞!