在 centOS 上详解 SSH 配置文件、日志文件
SSH 重要文件
以主机 A 连接主机 B 为例,主机 A 为 SSH 客户端,主机 B 为 SSH 服务端。
远程服务端
- /etc/ssh/sshd_config:ssh 服务程序 sshd 的配置文件。
- /etc/ssh/ssh_host_*:服务程序 sshd 启动时,自动生成的服务端私钥文件/etc/ssh/ssh_host_rsa_key和公钥文件/etc/ssh/ssh_host_rsa_key.pub。公钥文件是主机验证时的 host key,将写入到客户端的~/.ssh/known_hosts文件中。其中私钥文件严格要求权限为 600。若不是,则 sshd 服务可能会启动失败。
- ~/.ssh/authorized_keys:保存的是基于公钥认证机制时来自于客户端的公钥。在基于公钥认证机制认证时,服务端将读取该文件。
本机客户端
- /etc/ssh/ssh_config:客户端的全局配置文件。
- ~/.ssh/config:客户端的用户配置文件,生效优先级高于全局配置文件。一般该文件默认不存在。该文件对权限有严格要求只对所有者有读/写权限,对其他人完全拒绝写权限。
- ~/.ssh/known_hosts:保存主机验证时服务端主机 host key 的文件。文件内容来源于服务端的 ssh_host_rsa_key.pub 文件。
- /etc/ssh/known_hosts:全局 host key 保存文件。作用等同于~/.ssh/known_hosts。
- ~/.ssh/id_rsa:客户端生成的私钥。由 ssh-keygen 生成。该文件严格要求权限,当其他用户对此文件有可读权限时,ssh 将直接忽略该文件。
- ~/.ssh/id_rsa.pub:私钥 id_rsa 的配对公钥。对权限不敏感。当采用公钥认证机制时,该文件内容需要复制到服务端的~/.ssh/authorized_keys文件中。
- ~/.ssh/rc:保存的是命令列表,这些命令在 ssh 连接到远程主机成功时将第一时间执行,执行完这些命令之后才开始登陆或执行 ssh 命令行中的命令。
- /etc/ssh/rc:作用等同于~/.ssh/rc。
符号 | 含义 |
---|---|
. | 当前目录 |
.. | 上一层目录 |
- | 前一个工作目录,上一次操作的目录,cd - 会切换都上次你操作的目录 |
~ | 当前用户所在的家目录。root用户的家目录是/root |
/ | root根目录 |
SSH 日志文件
- SSH 远程登录的错误日志文件:/var/log/btmp。用于记录错误的登录文件过大,也会导致等待长久。
- 安全日志文件:/var/log/secure。一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志,如果该文件很大,说明有人在破解你的 root 密码,或爆力破解:
- 系统日志文件:/var/log/messages。包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录其中。
查询 SSH 登录日志:
# tail 显示的是后几行,默认 10行tail /var/log/btmp # 查询 SSH 登录日志,最后 20条tail -n 20 /var/log/btmp
远程服务器,若被攻击,可能存在暴力破解登录,而导致/var/log/btmp文件特别大。查找恶意登录的前十个 IP:
lastb | awk '{ print $3}' | awk '{++S[$NF]} END {for(a in S) print a, S[a]}' | sort -rk2 |head
Linux lastb
命令用于列出登入系统失败的用户相关信息。单独执行lastb
指令,它会读取/var/log/btmp文件,并把该文件记录登入失败的用户名,全部显示出来。
查询 SSH 登录日志:
tail /var/log/secure # 查询 SSH 登录日志,最后 20条tail -n 20 /var/log/secure # 查询 SSH 登录日志,最后 20条,逆向显示tail -r -n 20 /var/log/secure
清空/var/log/btmp文件,可以使用下面三种命令的任何一种:
echo "" > /var/log/btmpcat /dev/null > /var/log/btmptruncate -s 0 /var/log/btmp
清空/var/log/secure文件,可以使用下面三种命令的任何一种:
echo "" > /var/log/securecat /dev/null > /var/log/securetruncate -s 0 /var/log/secure
清空/var/log/messages文件,可以使用下面三种命令的任何一种:
echo "" > /var/log/messagescat /dev/null > /var/log/messagestruncate -s 0 /var/log/messages