• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在 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


    centOS 中特殊字符代表的路径含义
    符号含义
    .当前目录
    ..上一层目录
    -前一个工作目录,上一次操作的目录,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/btmp
    cat /dev/null > /var/log/btmp
    truncate -s 0 /var/log/btmp
    

    清空/var/log/secure文件,可以使用下面三种命令的任何一种:

    echo "" > /var/log/secure
    cat /dev/null > /var/log/secure
    truncate -s 0 /var/log/secure
    

    清空/var/log/messages文件,可以使用下面三种命令的任何一种:

    echo "" > /var/log/messages
    cat /dev/null > /var/log/messages
    truncate -s 0 /var/log/messages