1. 程式人生 > >SSH服務介紹

SSH服務介紹

linux ssh

系統環境:

[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
[[email protected] ~]# uname -r
3.10.0-327.el7.x86_64

SSH:

SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議,SSH最初是UNIX系統上的一個程序,後來又迅速擴展到其他操作平臺,SH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平臺。幾乎所有UNIX平臺—包括HP-UX、Linux、AIX、Solaris等以及其他平臺,都可運行SSH。


OpenSSH:ssh協議的開源實現

C/S架構:

Client:ssh,scp,sftp,Xshell,S-CRT

Server:sshd

技術分享

相關軟件包:

[[email protected] ~]# yum install openssh openssl -y


服務端軟件OpenSSH:

[[email protected] ~]# rpm -q openssh openssl
openssh-6.6.1p1-35.el7_3.x86_64
openssl-1.0.1e-60.el7_3.1.x86_64


服務相關操作:(CentOS 7)

[[email protected] ~]# systemctl start sshd   #啟動
[[email protected] ~]# systemctl restart sshd  #重啟
[[email protected] ~]# systemctl status sshd   #查詢服務狀態
[[email protected] ~]# systemctl stop sshd    #關閉


服務端進程sshd:負責監聽遠程客戶端的連接請求

[[email protected] ~]# ps -ef | grep sshd
root       2110      1  0 17:58 ?        00:00:00 sshd: [email protected]/0
root      14947      1  0 18:01 ?        00:00:00 /usr/sbin/sshd -D


程序監聽端口:默認22端口

[[email protected] ~]# ss -ntulp | grep sshd
tcp    LISTEN     0      128       *:22                    *:*                   users:(("sshd",pid=14947,fd=3))
tcp    LISTEN     0      128      :::22                   :::*                   users:(("sshd",pid=14947,fd=4))

配置文件:

[[email protected] ~]# ll /etc/ssh/ssh_config      #ssh_config客戶端配置文件
-rw-r--r-- 1 root root 2208 4月  12 22:05 /etc/ssh/ssh_config
[[email protected] ~]# ll /etc/ssh/sshd_config     #sshd_confgi服務器端配置文件
-rw------- 1 root root 4361 4月  12 22:05 /etc/ssh/sshd_config

1.客戶端配置文件:

[[email protected] ~]# vim /etc/ssh/ssh_config
Host *           #匹配後面字符串的節點,*表示所有計算機#
StrictHostKeyChecking no  #首次登陸不顯示檢查提示#

2.服務端配置文件:(常見參數,安全優化參數)

[[email protected] ~]# vim /etc/ssh/sshd_config
#Port 22                #監聽端口,默認22
#ListenAddress 0.0.0.0         #監聽地址
#Protocol 2               #SSH協議版本v2
# HostKey for protocol version 1  #SSHv1使用的私鑰文件路徑
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2   
HostKey /etc/ssh/ssh_host_rsa_key  #設置SSHv2使用的RSA私鑰
#HostKey /etc/ssh/ssh_host_dsa_key
SyslogFacility AUTHPRIV       #定義日誌,可以設置級別
#KeyRegenerationInterval 1h     #設置時間節點後重新生成服務器的秘鑰
#ServerKeyBits 1024         #定義秘鑰長度
#LoginGraceTime 2m          #連接失敗等待時長
#PermitRootLogin yes         #設置是否可以root身份ssh登錄,建議PermitRootLogin no
#MaxAuthTries 6           #設置最大失敗登錄次數
#MaxSessions 10           #設置IP最大連接數
#PermitEmptyPasswords no       #是否允許空密碼登錄  
UsePAM yes              #是否通過PAM驗證
#UseDNS yes             #不通過DNS解析,影響速率
#GSSAPIAuthentication no       #指定是否允許基於GSSAPI的用戶認證,默認為no

SSH服務的工作機制:

SSHClient連接Server端,Server端檢測Client的數據包和IP地址,確認合法,向Client發送密鑰,Client端本地再將密鑰發回Server,建立連接。


SSH協議版本:版本分別為SSHv1,SSHv2(主流使用SSHv2),OpenSSH同時支持v1,v2版本。

v1:基於CRC-32做MAC,不安全;

v2:雙方主機協議選擇安全的MAC方式;


加密方式:(基於DH算法做秘鑰交換,基於RSA或DSA實現身份認證)

RSA:非對稱加密法,使用公私鑰的方法進行加解密,公鑰用於加密,私鑰用於解密;

DSA:簽名與認證,和RSA加密解密過程相反,在DSA數字簽名和認證中,發送者使用自己的私鑰對文件或消息進行簽名,接受者收到消息後使用發送者的公鑰來驗證簽名的真實性,和RSA不同之處在於它不能用作加密和解密,也不能進行密鑰交換,只用於簽名,它比RSA要快很多。

註意:SSH2支持RSA和DSA密鑰,但是SSH1僅支持RSA密鑰。


SSH服務認證類型:

1.基於口令的認證方式

2.基於秘鑰的認證方式

基於口令的認證方式:

[[email protected] ~]# ssh [email protected]
[email protected]‘s password:
[[email protected] ~]# cd /root/.ssh/
[[email protected] .ssh]# ls
known_hosts
[[email protected] .ssh]# cat known_hosts 
192.168.47.137 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLJFTEcHvtnMURWwfWr2oeY0NUnNrPSUhFsntUGyvN/s4r6nndUmb5HyvF7fmcYF0jsIhaNo6ma1bdJZ2pND/+c=

SSH服務客戶端連接:

格式:ssh [[email protected]]Host [Command]

參數:

-p(port)指定遠程服務器監聽端口
-b:指定連接的源IP
-v:調試模式
-C:壓縮方式
-X:支持x11轉發
-t:強制偽tty分配

基於秘鑰的安全認證:

#使用ssh-keygen工具生成對應密鑰對,-t指定加密算法#
[[email protected] ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.

#指定保存位置,默認用戶家目錄#
Enter file in which to save the key (/root/.ssh/id_rsa): 

#設置密鑰密碼,每次使用密鑰認證,不設置為空#
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
8b:ca:dc:f3:72:14:d9:87:06:ac:ee:3d:f9:05:e1:d8 [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
|       .         |
|        o        |
|       . +..     |
|      . o++..    |
|     .  SoE.     |
|      .... .     |
|     ..o..  .    |
|   o o+ =  .     |
|    + .=.o.      |
+-----------------+
[[email protected] ~]# ll /root/.ssh/
總用量 8
#私鑰#
-rw------- 1 root root 1679 8月  27 18:38 id_rsa
#公鑰#
-rw-r--r-- 1 root root  396 8月  27 18:38 id_rsa.pub

#使用指令實現公鑰自動註冊,-i公鑰至目標服務器#
[[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.47.138
#過程輸入一次密碼#
[email protected]‘s password:

#測試:
[[email protected] ~]# ssh [email protected]
Last login: Sun Aug 27 18:44:33 2017 from 192.168.47.137
[[email protected] ~]#

SSH服務使用安全建議:

1.不使用默認22端口

2.禁止使用v1版本

3.配合防火墻策略設置ssh訪問策略,亦可以配合/etc/hosts.allow,deny指定策略

4設置空閑會話超時時長

5.使用基於秘鑰的認證

6.禁止使用空密碼

7.禁止root用戶直接登錄(配合sudo普通用戶權限登錄)

8.限制ssh的訪問頻度和並發在線數

9.做好日誌分析


本文出自 “11847592” 博客,請務必保留此出處http://gning.blog.51cto.com/11847592/1959773

SSH服務介紹