• kali 服务篇openssh 学习笔记


     SSH

     Secure Shell 的缩写,是建立在应用层基础上的安全协议。SSH是较为可靠的专为远程登录会话和其他网络服务提供安全性的协议。利用用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

    scp 命令
    命令:将本机文件复制到远程服务器上(上传)

    命令格式:scp 【本地文件路径】 [username]@[主机IP]:[拷贝的目录]

    注意两点:

    1.如果远程服务器openssh有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
    scp -P 2222 [username]@[主机地址]:/usr/local/sin.sh /home/administrator

    2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限.

    恺撒密码

    在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。

    可使用systemctl命令查看和设置openssh服务的状态。

    systemctl status sshd.service    #查看ssh状态
    systemctl start sshd.service     #启动ssh服务
    systemctl stop sshd.service      #停止ssh服务

    配置免密码(公私钥认证)登录

    涉及命令:

    ssh-keygen 

    sh-copy-id -i ~/.ssh/id_rsa.pub USERNAME@X.X.X.X

    ssh服务主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录。

    下面我们来解释一下公私钥的概念:

    密码体系从加密和解密方面来分类的话,可以分为对称加密和非对称加密。

    • 对称加密:加密和解密使用的密钥是同一个。
    • 非对称加密:加密和解密使用的密钥是不同的,采用两个密钥。
    • 对称加密解密的速度比较快,非对称加密和解密花费的时间长、速度相对较慢。
    • 对称加密的安全性相对较低,非对称加密的安全性较高。

    公私钥体系既是常见的非对称加密,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。其特性为:

    • 一个公钥对应一个私钥。
    • 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
    • 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
    • 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

    ssh服务通过密码进行登录,主要流程为:

      1. 客户端连接上服务器之后,服务器把自己的公钥传给客户端
      2. 客户端输入服务器密码通过公钥加密之后传给服务器
      3. 服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录

    ssh服务主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录。

    下面我们来解释一下公私钥的概念:

    密码体系从加密和解密方面来分类的话,可以分为对称加密和非对称加密。

    • 对称加密:加密和解密使用的密钥是同一个。
    • 非对称加密:加密和解密使用的密钥是不同的,采用两个密钥。
    • 对称加密解密的速度比较快,非对称加密和解密花费的时间长、速度相对较慢。
    • 对称加密的安全性相对较低,非对称加密的安全性较高。

    公私钥体系既是常见的非对称加密,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。其特性为:

    • 一个公钥对应一个私钥。
    • 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
    • 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
    • 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

    ssh服务通过密码进行登录,主要流程为:

      1. 客户端连接上服务器之后,服务器把自己的公钥传给客户端
      2. 客户端输入服务器密码通过公钥加密之后传给服务器
      3. 服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录

    ssh服务公钥登录,主要流程为:

      1. 客户端生成RSA公钥和私钥
      2. 客户端将自己的公钥存放到服务器
      3. 客户端请求连接服务器,服务器将一个随机字符串发送给客户端
      4. 客户端根据自己的私钥加密这个随机字符串之后再发送给服务器
      5. 服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。

    openssh 配置文件与加固

    修改 SSH 默认端口

    vi /etc/ssh/sshd_config

    Port 2222

    配置ssh日志

    vi /etc/ssh/sshd_config  将光标定位到约30行左右可以查看到如下信息。

    #SyslogFacility AUTH    # 日志记录的是不包含敏感信息的用户身份验证消息
    
    SyslogFacility   AUTHPRIV  # 表示当有人使用ssh登录系统时,ssh会记录信息,记录类型为AUTHPRIV。AUTHPRIV 表达了日志记录的是包含敏感信息的用户身份验证消息
    LogLevel DEBUG  # 表示设置记录sshd日志信息的级别 PS:溯源的时候临时打开

    SyslogFacility一项,规定了服务日志的性质,也规定了服务日志存储的默认路径。

    如:AUTHPRIV 表达了日志记录的是包含敏感信息的用户身份验证消息,默认存储于/var/log/secure

    AUTH 则表达了日志记录的是不包含敏感信息的用户身份验证消息,同样默认存储于/var/log/secure

    ssh配置文件的这一字段一般是不需要修改的。在LInux系统的其他服务配置文件中,你可能会遇见SyslogFacility设置为其他状态的情况,可以通过下表了解其含义。

    设置描述默认日志文件
    local0 BIG-IP 特定消息 /var/log/ltm
    local1 EM 特定消息 APM 特定消息 /var/log/em /var/log/apm
    loacl2 GTM 和链路控制器特定消息 /var/log/gtm
    local3 ASM 特定消息 /var/log/asm
    loacl4 ITCM 门户和服务器 (iControl) 特定消息 /var/log/ltm
    loacl5 包过滤特定消息 /var/log/pktfilter
    loacl6 HTTPD 特定消息 /var/log/httpd/httpd_errors
    loacl7 Linux 特定的引导消息 /var/log/boot.log
    cron 与cron进程相关的消息 /var/log/cron
    daemon 与系统守护进程相关的消息(包括named和ntpd) /var/log/daemon.log
    kern 内核消息 /var/log/kern.log
    mail 邮件系统消息 /var/log/maillog
    auth 不包含敏感信息的用户身份验证消息 /var/log/secure
    authpriv 包含敏感信息的用户身份验证消息 /var/log/secure
    user 与用户进程相关的消息 /var/log/user.log

    #LogLevel INFO表示设置记录sshd日志信息的级别。可以理解为设置了日志的详细程度。

    INFO级别代表了日志会报告大部分有用信息,是较为详细的日志等级,除此外,还有其他等级:

    等级描述冗长度
    emerg 紧急系统紧急信息 最低限度
    alert 需要管理员干预的严重错误 低的
    crit 严重错误,包括硬件和文件系统故障 低的
    err 非关键但可能非常重要的错误消息 低的
    warning 至少应该记录以供审查的警告消息 中等的
    notice 包含有用但可能会被忽略的消息 中等的
    info 包含有用但可能会被忽略的消息 高的
    debug 仅用于故障排除的消息 最大值

    禁止root登录

    vi /etc/ssh/sshd_config

    PermitRootLogin no

    配置长时间无人操作自动断开ssh链接

    vi /etc/ssh/sshd_config

    LoginGraceTime 2m
    
    PermitEmptyPasswords no

    vi /etc/profile

    export TMOUT=10    #单位是秒

    执行 source /etc/profile  生效

    ssh 访问速度调优

    GSSAPIAuthentication no  #关闭GSSAPI认证
    UseDNS no  #关闭DNS解析


    Note:一般 SSH 依次进行的认证方法的是 publickey, gssapi-keyex, gssapi-with-mic, password。 一般用户只使用 password 认证方式,但前面 3 个认证过程系统还是会尝试,这就浪费时间了,也就造成 SSH 登录慢。GSSAPI 主要是基于 Kerberos 的,因此要解决这个问题也就变成要系统配置有 Kerberos, 一般用户是没有配置 Kerberos的

    启用密码策略

    vi /etc/login.defs

    PASS_MAX_DAYS 99   #密码99天过期
    PASS_MIN_DAYS 1    #修改密码最小间隔为1天
    PASS_MIN_LEN 8     #密码最短长度为8
    PASS_WARN_AGE 1    #密码过期前1天内通知用户

    vi /etc/security/pwquality.conf

    minlen = 8          #定义用户密码的最小长度;
    minclass = 4        #定义密码必须满足同时有几种字符;
    maxrepeat = 2       #定义密码中允许几个连续相同的字符;
    maxclassrepeat = 2  #定义用户密码连续字符的最大数目;
    lcredi = 1          #定义用户密码中必须包含多少个小写字母;
    ucredit = 1         #定义用户密码中必须包含多少个大写字母;
    dcredit = 1         #定义用户密码中必须包含多少个数字;1
    ocredit = 1         #定义用户密码中必须包含多少个特殊字符(除数字、字母之外);其中 = 1表示,至少有一个

    PS: 密码策略这里修改后,只对新建用户生效。我们可以新建一个test用户尝试设置其密码。

    ssh 的日志

    ssh服务的日志存储于/var/log/secure。 tail -f /var/log/secure 大家可以自由定制所想查看的日志,例如模拟登录失败,登录成功等不同方式,以观察日志的不同变化。 状态:

    Failed password 为密码错误
    Accept password 为登录成功
    disconnected by user 为断开链接

    学习内容参考:http://book.fsec.io/101-%E5%9F%BA%E7%A1%80%E7%AF%87/101-B-linux%E6%9C%8D%E5%8A%A1/101-B1-openssh%E6%9C%8D%E5%8A%A1.html

  • 相关阅读:
    Python之数据结构:元组
    Python之数据结构:列表
    python学习之路-第一天-接触python
    微信公众号的搭建-第五天-自定义菜单
    微信公众号的搭建-第四天(2)-获取并缓存access_token
    微信公众号的搭建-第四天-完成消息接受和返回响应的消息类型
    微信公众号的搭建-第三天-对请求、事件、响应类的封装
    鸟哥的Linux私房菜-第一部分-第3章主机规划与磁盘分区
    微信公众号的搭建-第二天-申请公众号并与本地测试服务器绑定
    微信公众号的搭建-第一天-搭建一个测试服务器
  • 原文地址:https://www.cnblogs.com/Cong0ks/p/16223475.html
Copyright © 2020-2023  润新知