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

相關文章
相關標籤/搜索