SSH登录日志是维护系统安全、进行故障排除、进行安全审计和监控的重要依据。通过对日志的分析和解读,管理员可以及时发现潜在的安全威胁,防范潜在的入侵,同时也能优化系统性能,保障系统的正常运行。
常见的SSH登录日志类型:
1. sshd
日志: sshd
是 SSH 服务器守护进程的名称,在大多数 Linux/Unix 系统上用于处理 SSH 连接和身份验证。sshd
日志记录了与 SSH 服务器的交互活动、登录尝试、认证成功或失败以及其他事件。
2. secure
日志: secure
日志是一种常见的日志文件,用于记录系统安全相关的事件和活动。SSH登录日志通常存储在 secure
日志文件中,包括来自 sshd
的登录尝试和身份验证信息。
3. auth.log
日志: auth.log
是 Ubuntu/Linux 系统上的系统身份验证日志文件,其中包含有关用户登录、认证成功或失败等信息,也会包括来自 SSH 登录的事件。
4. wtmp
日志: wtmp
日志文件用于记录用户登录和注销的信息。在 SSH 登录的情况下,wtmp
中会记录登录事件、连接时间、用户名和 IP 地址等信息。
5. lastlog
日志: lastlog
日志文件保存用户上次登录时间和登录位置等信息。对于 SSH 登录,lastlog
可以提供与用户上次登录相关的详细信息。
6. var/log/secure.log
日志: Mac OS 系统上的 secure.log
文件记录了与身份验证和授权相关的各种事件,包括 SSH 登录过程中的事件和错误。
7. authpriv.log
日志: authpriv.log
是一种特权级别的日志文件,用于存储包含敏感信息的安全事件。在某些系统中,SSH 登录的敏感事件会记录在 authpriv.log
文件中。
SSH登录过程:
客户端发起连接请求:用户在本地计算机上的SSH客户端(如OpenSSH)输入要连接的远程服务器的IP地址或主机名。
远程服务器上运行的SSH服务器守护进程(通常是sshd)会监听传入的连接请求,并等待客户端的连接。
如果连接建立,客户端和服务器之间将进行密钥交换。这个过程的目的是确保通信的机密性和完整性。客户端和服务器使用非对称加密算法(如RSA或Diffie-Hellman)生成加密密钥对,并交换公钥。
用户身份认证:客户端向服务器发送用户的身份认证信息,通常是通过密码或公钥进行身份验证。服务器将验证提供的凭证,并决定是否允许登录。
如果成功通过认证,服务器将向客户端发送确认消息,并允许客户端与服务器建立安全的Shell会话。在该会话中,用户可以在远程服务器上执行命令和操作。
完成操作后可以通过关闭或退出Shell会话来终止SSH连接。客户端和服务器将关闭连接,并结束与远程服务器的通信。
日志记录的基本原理和机制是记录和存储系统、应用或网络中发生的事件和活动。
事件记录:系统和应用在运过程中会生成各种事件,如错误、警告、操作记录等。这些事件将被记录并保存在日志中,生成的SSH登录日志通常会被写入系统日志文件中,例如/var/log/auth.log
(Linux系统)或/var/log/secure
(某些UNIX系统)。
日志级别:日志级别用于表示事件的严重程度,常见的级别包括错误(error)、警告(warning)、信息(info)等。
日志格式包括时间戳、事件级别、事件描述、IP地址、用户信息等。
为防止日志文件过大,造成存储空间浪费,通常会对日志进行轮转。轮转可以按照时间、大小或其他条件进行,将旧日志文件进行备份、压缩或删除。
"authentication failure"和"Failed password"是不同服务产生的日志。"authentication failure"通常是由操作系统或网络设备产生的日志,记录了身份验证失败的信息。"Failed password"是由具体的服务(如SSH)产生的日志,记录了登录时密码验证失败的信息。
如果日志没有IP的情况,可能是因为服务日志没有记录完整的连接信息。是由于配置错误、日志级别设置不完全、部分信息被过滤等原因导致的。在这种情况下,可能需要详细检查日志配置和相关设置。
时间戳:登录事件发生的日期和时间。
用户名:成功登录的用户账号名称。
用户IP地址:登录请求来自的IP地址。
登录方式:标识登录使用的身份验证方法,如密码、公钥、证书等。
登录结果:指示登录是否成功的标志,通常为"Accepted"或"Successful".
示例:
Dec 21 23:25:34 server sshd[1234]: Accepted password for fly123 from 192.168.0.100 port 5031 ssh2
该示例记录解读如下:
时间戳:登录事件发生的日期和时间。
用户名:尝试登录的用户账号名称。
用户IP地址:登录请求来自的IP地址。
登录方式:标识登录使用的身份验证方法,如密码、公钥、证书等。
登录结果:指示登录是否失败的标志,通常为"Failed"或"Invalid user"等。
示例:
Dec 21 13:35:34 server sshd[7632]: Failed password for invalid user fly1235 from 192.168.0.100 port 5032 ssh2
该示例记录解读如下:
SSH登录日志中的关键事件标志和含义可以有多种,常见的关键事件标志和它们的含义:
“Accepted”:表示登录请求成功通过身份验证,允许用户登录到系统。
“Failed”:表示登录请求的身份验证失败。可能是由于密码错误、密钥不匹配或其他认证错误。
“Invalid user”:表示无效的用户账号尝试进行登录,通常是由于用户名不存在。
“Disconnected”:表示连接断开,可能是用户主动断开或网络连接的异常。
“Too many authentication failures”:表示尝试使用多种身份验证方法失败过多,系统拒绝进一步尝试。
“Connection refused”:表示SSH服务器拒绝连接请求,可能是由于防火墙规则、配置错误或系统资源限制。
“Authenticating”:表示身份验证过程正在进行中,可能需要额外的身份验证信息。
“Accepted publickey”:表示成功使用公钥进行身份验证。
“Accepted password”:表示成功使用密码进行身份验证。
“Accepted keyboard-interactive”:表示成功使用键盘交互方式进行身份验证,通常需要输入额外的信息。
SSH登录日志的位置和格式可能因操作系统而异。主流操作系统的SSH登录日志文件存储位置和格式:
(1)Linux系统:
(2)macOS:
(3)Windows系统(通过第三方软件):
(4)FreeBSD:
(5)Solaris:
要查看和解析日志文件,可以:
使用文本编辑器(如vi、nano、Sublime Text等)直接打开日志文件,逐行查看和解析其中的内容。这种方法适用于日志文件较小且需要查找特定信息的情况。
命令行工具(如grep、awk、sed等)可以帮助筛选、搜索和解析日志文件中的特定信息。例如,可以使用grep命令搜索特定关键字,如"ERROR"或"Failed",以定位错误或失败的登录尝试。例如:grep "ERROR" /var/log/auth.log
使用专门的日志解析工具,例如,Logstash、Splunk、ELK(Elasticsearch, Logstash, Kibana)等工具提供了强大的日志管理和解析功能。
SSH登录日志对于系统安全和监控非常重要。
SSH登录日志记录了每个SSH连接尝试的详细信息,包括登录时间、来源IP地址、用户名、认证结果等。
监控SSH登录日志可以帮助发现异常或可疑的行为。
用户活动追踪:SSH登录日志记录了用户登录和退出的时间戳和终端信息。
故障排查:SSH登录日志还可以用于故障排查。