SSH

author:JevonWei
版权声明:原创做品算法


SSH

  • ssh: secure shell, protocol,22/tcp, 安全的远程登陆
  • 具体的软件实现:shell

    OpenSSH:ssh协议的开源实现,CentOS默认安装
    dropbear:另外一个开源实现
  • SSH协议版本安全

    v1:基于CRC-32作MAC,不安全;man-in-middle
    v2:双方主机协议选择安全的MAC 方式
    基于DH算法作密钥交换,基于RSA 或DSA实现身份认证
  • 两种方式的用户登陆认证:bash

    基于password
    基于key服务器

  • OpenSSH相关软件包:网络

    openssh
    openssh-clients
    openssh-server
  • 工具并发

    基于C/S结构
    Client:ssh,scp,sftp
    Windows客户端:
    xshell,putty,securecrt, sshsecureshellclient
    Server: sshdless

    ssh 客户端

  • ssh, 配置文件:dom

    /etc/ssh/ssh_config
    Host PATTERN
    StrictHostKeyChecking no 首次登陆不显示检查提示ssh

    image

  • 格式:ssh [user@]host [COMMAND]

    ssh [-l user] host [COMMAND]
    -p port:远程服务器监听的端口
    -b: 指定链接的源IP
    -v: 调试模式
    -C:压缩方式
    -X:图形化链接
    -Y:支持信任x11转发
    ForwardX11Trusted yes
    -t:强制伪tty分配
    ssh -t remoteserver1 ssh remoteserver2
  • 容许实现对远程系统经验证地加密安全访问
  • 当用户远程链接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub (CentOS7 默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的~./ssh/know_hosts 中。下次链接时,会自动匹配相应私钥
    ,不能匹配,将拒绝链接

    基于key 认证

  • 基于密钥的认证:

    (1)在客户端生成密钥对
    ssh-keygen -t rsa [-P ''] [-f “~/.ssh/id_rsa"]
    (2)把公钥文件传输至远程服务器对应用户的家目录
    ssh-copy-id [-i [identity_file]] [user@]host
    (3)测试
    (4)在SecureCRT或Xshell实现基于key验证

    在SecureCRT 工具—> 建立公钥—> 生成Identity.pub文件转化为openssh 兼容格式(适合SecureCRT ,Xshell不须要转化格式),
    并复制到需登陆主机上相应文件authorized_keys中,注意权限必须为600,在需登陆的ssh主机上执行:
    ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys
    (5)重设私钥口令:#ssh-keygen –p
    (6)验证代理(authentication agent)保密解密后的密钥
    这样口令就只须要输入一次
    在GNOME中,代理被自动提供给root用户
    不然运行ssh-agent bash
    (7)钥匙经过命令添加给代理
    ssh-add

    SSH 端口转发

  • 什么是SSH端口转发?
    SSH会自动加密和解密全部SSH客户端与服务端之间的网络数据。可是,SSH还可以将其余TCP端口的网络数据经过SSH连接来转发,而且自动提供了相应的加密及解密服务。这一过程也被叫作“隧道”
    (tunneling),这是由于SSH他为其余TCP连接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP些 这些TCP应用均可以从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,若是工做环境中的防火墙限制了一些网络端口的使用,可是容许SSH的链接,也可以将经过将TCP端口转发来使用SSH进行通信
  • SSH端口转发可以提供两大功能:

    加密SSH Client端至SSH Server端之间的通信数据
    突破防火墙的限制完成一些以前没法创建的TCP

    SSH端口转发

    本地转发:
    -L localport:remotehost:remotehostport sshserver
    选项:
    -f 后台启用
    -N 不打开远程shell,处于等待状态
    -g 启用网关功能

    示例
    ssh –L 9527:telnetsrv:23 -N sshsrv
    telnet 127.0.0.1 9527
    当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,再解密被转发到telnetsrv:23
    data <- -> localhost:9527 <- -> localhost:XXXXX <- ->
    sshsrv:22 <- -> sshsrv:YYYYY <- -> telnetsrv:23

    远程转发:
    -R sshserverport:remotehost:remotehostport sshserver
    示例:
    ssh –R 9527:telnetsrv:23 –N sshsrv
    让sshsrv侦听9527端口的访问,若有访问,就加密后经过ssh服务转发请求到本机ssh客户端,再由本机解密后转发到telnetsrv:23
    Data <- -> sshsrv:9527 <- -> sshsrv:22 <- -> localhost:XXXXX <- -> localhost:YYYYY <- -> telnetsrv:23
    动态端口转发:
    当用firefox访问internet时,本机的1080端口作为代理服务器,firefox的访问请求被转发到sshserver上,由sshserver替之访问internet
    在本机firefox设置代理socket proxy:127.0.0.1:1080
    ssh -D 1080 root@sshserver

    X协议转发

  • 全部图形化应用程序都是X 客户程序

    可以经过tcp/ip链接远程X服务器
    数据没有加密机,可是它经过ssh 链接隧道安全进行
  • ssh -X user@remotehost gedit

    remotehost主机上的gedit工具,将会显示在本机的X服务器上
    传输的数据将经过ssh链接加密

    ssh服务器

  • 服务器端:sshd

    man sshd_config
    配置文件:/etc/ssh/sshd_config(服务端)
    /etc/ssh/ssh_config(客户端)
    经常使用参数:
    Port 端口号
    AddressFamily any 指明可以使用ipv4和ipv6地址
    ListenAddress 0.0.0.0 监听的IP
    #SyslogFacility AUTH 意为日志存放在/var/log/secure
    SyslogFacility AUTHPRIV 日志级别
    #LoginGraceTime 2m 等待链接宽限时间2分钟
    #PermitRootLogin yes 禁止root用户直接登陆
    #StrictModes yes 限制模式
    #MaxAuthTries 6 密码输入错误次数为3时退出
    #MaxSessions 10 同一个主机的最大会话数为10次
    #ClientAliveInterval 0 客户端的活动间隔 (单位:秒) #ClientAliveCountMax 3 客户端最大活动间隔统计次数
    UseDNS yes 使用DNS反向解析IP
    PidFile /var/run/sshd.pid PID文件
    MaxStartups 最大容许保持多少个未认证链接,默认值10
    #Banner /etc/ssh.txt ssh链接时提示信息文件
    PsswordAuthentication yes 基于密码认证登陆
    PermitEmptyPasswords no 基于key认证的登陆

    限制可登陆用户的办法:
          AllowUsers user1 user2 user3   容许用户链接
          DenyUsers  拒绝用户
          AllowGroups 容许组
          DenyGroups
      DenyUser的优先级大于AllowUsers

    ssh服务的最佳实践

    要使用默认端口
    禁止使用protocol version 1
    限制可登陆用户
    设定空闲会话超时时长
    利用防火墙设置ssh访问策略
    仅监听特定的IP地址
    基于口令认证时,使用强密码策略
    tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30| xargs
    使用基于密钥的认证
    禁止使用空密码
    禁止root用户直接登陆
    限制ssh的访问频度和并发在线数
    作好日志,常常分析

    编译安装dropbear示例

  • ssh协议的另外一个实现:dropbear

    安装准备: 一、安装开发包组: 二、ftp://172.16.0.1/pub/Sources/sources/dropbear/dropbear-2013.58.tar.bz2 安装: 三、tar xf dropbear-2013.58.tar.bz2, 四、less INSTALL 五、./configure 六、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" 七、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install 启动ssh服务: 八、ls /usr/local/sbin/ /usr/local/bin/ 九、/usr/local/sbin/dropbear -h 十、mkdir /etc/dropbear 十一、dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048 十二、dropbearkey -t dss -f /etc/dropbear/dropbear_dsa_host_key 1三、dropbear -p :2222 -F –E #前台运行 dropbear -p :2222 #后台运行 客户端访问: 1四、ssh -p 2222 root@127.0.0.1 1五、dbclient -p 2222 root@127.0.0.1

相关文章
相关标签/搜索