關(guān)于SSH服務(wù)解讀
一、SSH基礎(chǔ)
1.介紹
SSH(Secure Shell)是一種安全通道協(xié)議,主要用來實(shí)現(xiàn)字符界面的遠(yuǎn)程登錄、遠(yuǎn)程 復(fù)制等功能。
SSH 協(xié)議對(duì)通信雙方的數(shù)據(jù)傳輸進(jìn)行了加密處理,其中包括用戶登錄時(shí)輸入的用戶口令,SSH 為建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議。
對(duì)數(shù)據(jù)進(jìn)行壓縮,加快傳輸速度。
- SSH是一個(gè)應(yīng)用層協(xié)議
- 實(shí)現(xiàn)Linux的遠(yuǎn)程加密連接
- 適用于Linux服務(wù)器遠(yuǎn)程管理
SSH客戶端<--------------網(wǎng)絡(luò)---------------->SSH服務(wù)端
2.優(yōu)點(diǎn)
- 數(shù)據(jù)傳輸是加密的,可以防止信息泄漏
- 數(shù)據(jù)傳輸是壓縮的,可以提高傳輸速度
3.作用
SSHD 服務(wù)使用 SSH 協(xié)議可以用來進(jìn)行遠(yuǎn)程控制,或在計(jì)算機(jī)之間傳送文件。
ssh服務(wù)端主要包括兩個(gè)服務(wù)功能 ssh遠(yuǎn)程鏈接和sftp服務(wù)(文件傳輸功能)
SSH服務(wù)端口22/tcp
4.SSH 軟件
- SSH 客戶端:finalshell xshell putty secureCRT MobaXterm
- SSH 服務(wù)端:openSSH (Centos 7 默認(rèn)安裝)
5.openSSH 服務(wù)器配置文件
- 服務(wù)名稱:sshd
- 服務(wù)端主程序:/usr/sbin/sshd
- 服務(wù)端配置文件:/etc/ssh/sshd_config
- 客戶端配置文件:/etc/ssh/ssh_config
openSSH是實(shí)現(xiàn)SSH協(xié)議的開源軟件項(xiàng)目,適用于各種UNIX、Linux操作系統(tǒng)。
執(zhí)行“systemctl start sshd”命令即可啟動(dòng)sshd服務(wù)。默認(rèn)端口使用的22端口。
ssh服務(wù)端主要包括兩個(gè)服務(wù)功能 ssh遠(yuǎn)程鏈接和sftp服務(wù)(文件傳輸功能)
作用:SSHD 服務(wù)使用 SSH 協(xié)議可以用來進(jìn)行遠(yuǎn)程控制,或在計(jì)算機(jī)之間傳送文件。 相比較之前用 Telnet 方式來傳輸文件要安全很多,因?yàn)?Telnet 使用明文傳輸,SSH 是加密傳輸。
遠(yuǎn)程管理linux系統(tǒng)基本上都要使用到ssh,原因很簡(jiǎn)單:telnet、FTP等傳輸方式是?以明文傳送用戶認(rèn)證信息,本質(zhì)上是不安全的,存在被網(wǎng)絡(luò)竊聽的危險(xiǎn)。SSH(Secure Shell)目前較可靠,是專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用SSH協(xié)議可以有效防止遠(yuǎn)程管理過程中的信息泄露問題,透過SSH可以對(duì)所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,也能夠防止DNS欺騙和IP欺騙。
二、ssh原理
登陸:
1.公鑰傳輸原理
- 客戶端發(fā)起鏈接請(qǐng)求
- 服務(wù)端返回自己的公鑰,以及一個(gè)會(huì)話ID(這一步客戶端得到服務(wù)端公鑰)
- 客戶端生成密鑰對(duì)
- 客戶端用自己的公鑰異或會(huì)話ID,計(jì)算出一個(gè)值Res,并用服務(wù)端的公鑰加密
- 客戶端發(fā)送加密值到服務(wù)端,服務(wù)端用私鑰解密,得到Res
- 服務(wù)端用解密后的值Res異或會(huì)話ID,計(jì)算出客戶端的公鑰(這一步服務(wù)端得到客戶端公鑰)
- 最終:雙方各自持有三個(gè)秘鑰,分別為自己的一對(duì)公、私鑰,以及對(duì)方的公鑰,之后的所有通訊都會(huì)被加密
2.加密通訊原理
2.1 對(duì)稱加密:
概念:
采用單鑰密碼系統(tǒng)的加密方法,同一個(gè)密鑰可以同時(shí)用作信息的加密和解密,這種加密方法稱為對(duì)稱加密,由于其速度快,對(duì)稱性加密通常在消息發(fā)送方需要加密大量數(shù)據(jù)時(shí)使用。
常用算法:
對(duì)稱加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
特點(diǎn):
1、加密方和解密方使用同一個(gè)密鑰;
2、加密解密的速度比較快,適合數(shù)據(jù)比較長(zhǎng)時(shí)的使用;
3、密鑰傳輸?shù)倪^程不安全,且容易被破解,密鑰管理也比較麻煩;
優(yōu)缺點(diǎn):
優(yōu)點(diǎn):算法公開、計(jì)算量小、加密速度快、加密效率高
缺點(diǎn):在數(shù)據(jù)傳送前,發(fā)送方和接收方必須商定好秘鑰,然后使雙方都能保存好秘鑰。其次如果一方的秘鑰被泄露,那么加密信息也就不安全了。另外,每對(duì)用戶每次使用對(duì)稱加密算法時(shí),都需要使用其他人不知道的獨(dú)一秘鑰,這會(huì)使得收、發(fā)雙方所擁有的鑰匙數(shù)量巨大,密鑰管理成為雙方的負(fù)擔(dān)。
2.2 非對(duì)稱加密:
概念:
非對(duì)稱加密算法需要兩個(gè)密鑰:公開密鑰(publickey:簡(jiǎn)稱公鑰)和私有密鑰(privatekey:簡(jiǎn)稱私鑰)。公鑰與私鑰是一對(duì),如果用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私鑰才能解密。因?yàn)榧用芎徒饷苁褂玫氖莾蓚€(gè)不同的密鑰,所以這種算法叫作非對(duì)稱加密算法。
常用算法:
RSA:目前使用最廣泛的算法
DSA:數(shù)字簽名算法,和 RSA 不同的是 DSA僅能用于數(shù)字簽名,不能進(jìn)行數(shù)據(jù)加密解密,其安全性和RSA相當(dāng),但其性能要比RSA快
ECC(橢圓曲線加密算法)
ECDSA:橢圓曲線簽名算法,是ECC和 DSA的結(jié)合,相比于RSA算法,ECC 可以使用更小的秘鑰,更高的效率,提供更高的安全保障
原理:
首先ssh通過加密算法在客戶端產(chǎn)生密鑰對(duì)(公鑰和私鑰),公鑰發(fā)送給服務(wù)器端,自己保留私鑰,如果要想連接到帶有公鑰的SSH服務(wù)器,客戶端SSH軟件就會(huì)向SSH服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求用聯(lián)機(jī)的用戶密鑰進(jìn)行安全驗(yàn)證。SSH服務(wù)器收到請(qǐng)求之后,會(huì)先在該SSH服務(wù)器上連接的用戶的家目錄下。
優(yōu)缺點(diǎn):
相比于對(duì)稱加密技術(shù),非對(duì)稱加密技術(shù)安全性更好,但性能更慢
三、ssh的應(yīng)用
1.ssh配置文件信息
在linux中實(shí)現(xiàn)ssh,是通過opsnSSH的sshd服務(wù)提供的
1.1.ssh服務(wù)端的配置文件:
/etc/ssh/sshd_config
1.2 存放ssh客戶端的配置文件
/etc/ssh/ssh_config
2.ssh的基本用法
選項(xiàng):
- -l 選項(xiàng),指定登錄名稱。
- -p 選項(xiàng),指定登錄端口
- -t
2.1.直接連接ip地址:
格式:ssh ip地址
第一次連接時(shí)會(huì)詢問你是否要驗(yàn)證公鑰,同意之后,下次登錄就會(huì)自動(dòng)獲取服務(wù)端的公鑰
2.2.連接指定用戶:
- ssh 用戶名@ip地址
- ssh -l 用戶名 ip地址
2.3.連接指定端口號(hào):
格式: ssh ip地址 -p 端口號(hào)
sshd服務(wù)的默認(rèn)端口號(hào)是 22,如果不是此端口,需要 -p 來指定端口
在 /etc/ssh/sshd_config下面修改端口號(hào)
2.4.跳板機(jī):
使用跳板是為了方便和安全
格式: ssh -t ip地址 ssh -t ip地址 ssh -t ip地址 ........
將172.16.195.3 做為中間跳板遠(yuǎn)程連接 172.16.195.4
2.5.直接跟上命令遠(yuǎn)程操作:
格式: ssh ip地址 想使用的命令
3. 黑白名單
白名單:默認(rèn)拒絕所有,只有白名單上允許的人才可以訪問
黑名單:默認(rèn)允許所有,只有黑名單上的用戶讓你不允許訪問
(白名單優(yōu)先級(jí)高,但一般不會(huì)同時(shí)使用白名單和黑名單,白名單使用會(huì)多一點(diǎn))
3.1 白名單:
在172.16.195.3上
在 /etc/ssh/sshd_config 里手動(dòng)添加
在空白處添加此內(nèi)容
在 172.16.195.4上連接
3.2黑名單:
在172.16.195.3上設(shè)置
用172.16.195.4上的gg用戶請(qǐng)求連接
連接不上
用172.16.195.4上的root用戶請(qǐng)求連接
連接上了
3.3.更改默認(rèn)端口
打開配置文件——vim /etc/ssh/sshd_config
3.4.禁止root用戶登陸:
打開配置文件——vim /etc/ssh/sshd_config
在空白處添加
在172.16.195.3上
在172.16.195.4上
發(fā)現(xiàn)連接不上
但是可以切換用戶連接上
在pam.d/su配置文件上開啟
切換用戶也連接不上了
3.5. ssh服務(wù)的最佳實(shí)踐:
- 建議使用非默認(rèn)端口 22
- 禁止使用protocol version 1
- 限制可登錄用戶 白名單
- 設(shè)定空閑會(huì)話超時(shí)時(shí)長(zhǎng)
- 利用防火墻設(shè)置ssh訪問策略
- 僅監(jiān)聽特定的IP地址 公網(wǎng) 內(nèi)網(wǎng)
- 基于口令認(rèn)證時(shí),使用強(qiáng)密碼策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
- 使用基于密鑰的認(rèn)證
- 禁止使用空密碼
- 禁止root用戶直接登錄
- 限制ssh的訪問頻度和并發(fā)在線數(shù)
- 經(jīng)常分析日志 分離
- 如果有一天登錄ssh變得非常非常慢,請(qǐng)禁用反向解析
三. 使用密鑰對(duì)免交互驗(yàn)證登錄
原理:
- 用戶/密碼
- 基于秘鑰
用戶/密碼:
- 1.生成公鑰和私鑰
- 2.將公鑰導(dǎo)給對(duì)面
- 客戶端發(fā)起ssh請(qǐng)求,服務(wù)器會(huì)把自己的公鑰發(fā)送給用戶
- 用戶會(huì)根據(jù)服務(wù)器發(fā)來的公鑰對(duì)密碼進(jìn)行加密
- 加密后的信息回傳給服務(wù)器,服務(wù)器用自己的私鑰解密,如果密碼正確,則用戶登錄成功
基于密鑰的登錄方式 :
- 首先在客戶端生成一對(duì)密鑰(ssh-keygen)
- 并將客戶端的公鑰ssh-copy-id 拷貝到服務(wù)端
- 當(dāng)客戶端再次發(fā)送一個(gè)連接請(qǐng)求,包括ip、用戶名
- 服務(wù)端得到客戶端的請(qǐng)求后,會(huì)到authorized_keys()中查找,如果有響應(yīng)的IP和用戶,就會(huì)隨機(jī)生成一個(gè)字符串,例如:kgc
- 服務(wù)端將使用客戶端拷貝過來的公鑰進(jìn)行加密,然后發(fā)送給客戶端
- 得到服務(wù)端發(fā)來的消息后,客戶端會(huì)使用私鑰進(jìn)行解密,然后將解密后的字符串發(fā)送給服務(wù)端
- 服務(wù)端接受到客戶端發(fā)來的字符串后,跟之前的字符串進(jìn)行對(duì)比,如果一致,就允許免密碼登錄
1.創(chuàng)建密鑰
2.將密鑰傳送給服務(wù)端
3.在服務(wù)端查看是否收到密鑰文件
如果有,會(huì)生成一個(gè) authorized_keys 文件
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用腳本實(shí)現(xiàn)故障時(shí)自動(dòng)重啟Apache
這篇文章主要介紹了使用腳本實(shí)現(xiàn)故障時(shí)自動(dòng)重啟Apache,需要的朋友可以參考下2014-12-12Linux deepin 刪除多余內(nèi)核的實(shí)現(xiàn)方法
這篇文章主要介紹了Linux deepin 刪除多余內(nèi)核的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Linux啟動(dòng)Java程序jar包Shell腳本方式
文章介紹了如何創(chuàng)建一個(gè)Shell腳本來簡(jiǎn)化在Linux環(huán)境中啟動(dòng)Java程序jar包的過程,該腳本可以檢查jar包的狀態(tài)、啟動(dòng)、停止和重啟項(xiàng)目,只需修改腳本中的變量并將其與jar包放在同一目錄下,即可方便地使用該腳本2024-12-12Ubuntu安裝MySQL5.7并配置數(shù)據(jù)存儲(chǔ)路徑的方法步驟
這篇文章主要介紹了Ubuntu安裝MySQL5.7并配置數(shù)據(jù)存儲(chǔ)路徑的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06Canonical通過Flutter啟用Linux桌面應(yīng)用程序(推薦)
這篇文章主要介紹了Canonical通過Flutter啟用Linux桌面應(yīng)用程序,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07詳解Centos8 配置靜態(tài)IP的實(shí)現(xiàn)
這篇文章主要介紹了詳解Centos8 配置靜態(tài)IP的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10