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服務介紹