SSH遠程訪問及控制(模擬實驗詳解)
目錄
- 一、SSH遠程管理
- (一)、定義
- (二)、SSH介紹
- (三)、配置OpenSSH 服務端
- (四)、sshd 服務兩種驗證方式
- 1、密碼驗證
- 2、密鑰對驗證
- 3、配置密鑰對驗證
- (五)、scp 遠程復制
- 1、下行復制(客戶端向服務端下載資料)
- 2、上行復制(將客戶端檔案上傳到服務端)
- (六)、sftp 安全 FTP
- (七)、TCP Wrappers 訪問控制
一、SSH遠程管理
(一)、定義
SSH(Secure Shell)是一種安全通道協議,主要用來實作字符界面的遠程登錄、遠程復制等功能,
SSH協議對通信雙方的資料傳輸進行了加密處理,其中包括用戶登錄時輸入的用戶口令,因此SSH協議具有很好的安全性,
(二)、SSH介紹
SSH(Secure Shell)協議
是一種安全通道協議
對通信資料進行了加密處理,用于遠程管理
SSH客戶端工具:Putty、Xshell、CRT等等,
SSH服務端:OpenSSH
SSH客戶端與SSH服務端互相傳輸資料是加密的,可以防止資訊泄露,并且資料傳輸是壓縮的,可以提高傳輸速度,
OpenSSH 是實作 SSH 協議的開源軟體專案,適用于各種 UNIX、Linux 作業系統,
CentOS 7系統默認已安裝openssh相關軟體包,并已將 sshd 服務添加為開機自啟動,
執行“systemctl start sshd”命令即可啟動 sshd 服務
sshd 服務默認使用的是TCP的 22埠
sshd 服務的默認組態檔是/etc/ssh/sshd_config
ssh_config和sshd_config都是ssh服務器的組態檔,二者區別在于前者是針對客戶端的組態檔,后者則是針對服務端的組態檔,
(三)、配置OpenSSH 服務端
模擬實驗的時候,我們用到兩臺虛擬機,一臺作為服務端(IP地址是:192.168.126.20),一臺作為客戶端,修改組態檔是在服務端修改,不要弄混
vim /etc/ssh/sshd_config
Port 22 #監聽埠為 22
ListenAddress 0.0.0.0 #監聽地址為任意網段,也可以指定OpenSSH服務器的具體IP
LoginGraceTime 2m #登錄驗證時間為 2 分鐘
PermitRootLogin no #禁止 root 用戶登錄
MaxAuthTries 6 #最大重試次數為 6
PermitEmptyPasswords no #禁止空密碼用戶登錄
UseDNS no #禁用 DNS 反向決議,以提高服務器的回應速度
#只允許zhangsan、lisi、wangwu用戶登錄,且其中wangwu用戶僅能夠從IP地址為61.23.24.25 的主機遠程登錄
AllowUsers zhangsan lisi wangwu@61.23.24.25 #多個用戶以空格分隔
#禁止某些用戶登錄,用法于AllowUsers 類似(注意不要同時使用)
DenyUsers zhangsan

如果你允許zhangsan,lisi可以通過主機訪問,首先要在服務端(虛擬機2)上面創建zhangsan,lisi用戶,再多創建一個chen用戶,方便驗證
useradd zhangsan passwd zhangsan
useradd lisi passwd lisi
useradd chen passwd chen

我們用客戶端(虛擬機1)訪問一下試試

這就是服務端的簡單配置,里面還有一些其他的設定,比如最大重試次數,禁止root訪問,登錄驗證時間,都可以自己嘗試更改驗證一下
(四)、sshd 服務兩種驗證方式
1、密碼驗證
對服務器中本地系統用戶的登錄名稱、密碼進行驗證,簡便,但可能會被暴力破解
之前我們一直使用的就是密碼驗證
2、密鑰對驗證
要求提供相匹配的密鑰資訊才能通過驗證,通常先在客戶端中創建一對密鑰檔案(公鑰、私鑰),然后將公鑰檔案放到服務器中的指定位置,遠程登錄時,系統將使用公鑰、私鑰進行加密/解密關聯驗證,能增強安全性,且可以免互動登錄,
vim /etc/ssh/sshd_config
PasswordAuthentication yes #啟用密碼驗證
PubkeyAuthentication yes #啟用密鑰對驗證
AuthorizedKeysFile .ssh/authorized_keys #指定公鑰庫檔案
3、配置密鑰對驗證
步驟:
1、在客戶端創建密鑰對
通過ssh-keygen工具為當前用戶創建密鑰對檔案,可用的加密演算法為RSA、ECDSA或DSA等(ssh-keygen命令的“-t”選項用于指定演算法型別),
useradd chenwei
echo "123123" | passwd --stdin chenwei
su - chenwei
ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_ecdsa): #指定私鑰位置,直接回車使用默認位置
Created directory '/home/admin/.ssh'. #生成的私鑰、公鑰檔案默認存放在宿主目錄中的隱藏目錄.ssh/下
Enter passphrase (empty for no passphrase): #設定私鑰的密碼
Enter same passphrase again: #確認輸入

2、設定好了以后就可以看到.ssh下面會有一個私鑰的檔案和一個公鑰的檔案
id_ecdsa是私鑰檔案,權限默認為600;id_ecdsa.pub是公鑰檔案,用來提供給 SSH 服務器

3、這一步就要將公鑰檔案傳給服務端,用于客戶端訪問服務端的時候進行驗證
scp ~/.ssh/id_ecdsa.pub root@192.168.126.20:/opt
mkdir /home/zhangsan/.ssh/
cat /opt/id_ecdsa.pub >> /home/zhangsan/.ssh/authorized_keys
cat /home/zhangsan/.ssh/authorized_keys
或者:#此方法可直接在服務器的/home/zhangsan/.ssh/目錄中匯入公鑰文本
cd ~/.ssh/
ssh-copy-id -i id_ecdsa.pub zhangsan@192.168.126.20
我們使用一部到位的下面這種方法:

4、到服務端(虛擬機2)看一下家目錄中的.ssh檔案

5、在客戶端使用密鑰對驗證

6、在客戶機設定ssh代理功能,實作免互動登錄
ssh-agent bash
ssh-add
Enter passphrase for /home/admin/.ssh/id_ecdsa: #輸入私鑰的密碼
ssh zhangsan@192.168.126.20

(五)、scp 遠程復制
1、下行復制(客戶端向服務端下載資料)
scp root@192.168.126.20:/etc/passwd /root/passwd2.txt #將遠程主機中的/etc/passwd檔案復制到本機

2、上行復制(將客戶端檔案上傳到服務端)
`scp -r /etc/ssh/ root@192.168.126.20:/opt #將本機的/etc/ssh 目錄復制到遠程主機/opt下面


(六)、sftp 安全 FTP
由于使用了加密/解密技術,所以傳輸效率比普通的FTP要低,但安全性更高,操作語法sftp與ftp幾乎一樣
sftp zhangsan@192.168.126.20
Connecting to 192.168.126.20
tsengyia@172.16.16.22's password: #輸入密碼
sftp> ls
sftp> get 檔案名 #下載檔案到ftp目錄
sftp> put 檔案名 #上傳檔案到ftp目錄
sftp> quit #退出


(七)、TCP Wrappers 訪問控制
TCP Wrappers 將TCP服務程式“包裹”起來,代為監聽TCP服務程式的埠,增加了一個安全檢測程序,外來的連接請求必須先通過這層安全檢測,獲得許可后才能訪問真正的服務程式,
大多數 Linux 發行版,TCP Wrappers 是默認提供的功能,rpm -q tcp_wrappers
TCP Wrapper 保護機制的兩種實作方式
1.直接使用 tcpd 程式對其他服務程式進行保護,需要運行 tcpd程式,
2.由其他網路服務程式呼叫 libwrap.so.*鏈接庫,不需要運行 tcpd 程式,此方式的應用更加廣泛,也更有效率,
使用 ldd 命令可以查看程式的 libwrap.so.*鏈接庫
ldd $(which ssh vsftpd)
TCP Wrappers 的訪問策略
TCP Wrappers 機制的保護物件為各種網路服務程式,針對訪問服務的客戶端地址進行訪問控制,
對應的兩個策略檔案為/etc/hosts.allow 和/etc/hosts.deny,分別用來設定允許和拒絕的策略,
格式:
<服務程式串列>:<客戶端地址串列>
(1)服務程式串列
ALL:代表所有的服務,
單個服務程式:如“vsftpd”,
多個服務程式組成的串列:如“vsftpd,sshd”,
(2)客戶端地址串列
ALL:代表任何客戶端地址,
LOCAL:代表本機地址,
多個地址以逗號分隔
允許使用通配符 “?” 和 “*” ,前者代表任意長度字符,后者僅代表一個字符
網段地址,如 192.168.126. 或者 192.168.126.0/255.255.255.0
區域地址,如 “.benet.com”匹配 bdqn.com 域中的所有主機,
TCP Wrappers 機制的基本原則:
首先檢查/etc/hosts.allow檔案,如果找到相匹配的策略,則允許訪問;
否則繼續檢查/etc/hosts.deny檔案,如果找到相匹配的策略,則拒絕訪問;
如果檢查上述兩個檔案都找不到相匹配的策略,則允許訪問,
“允許所有,拒絕個別”
只需在/etc/hosts.deny檔案中添加相應的拒絕策略
“允許個別,拒絕所有”
除了在/etc/hosts.allow中添加允許策略之外,還需要在/etc/hosts.deny檔案中設定“ALL:ALL”的拒絕策略,
實體:
若只希望從IP地址為12.0.0.1的主機或者位于192.168.126.0/24網段的主機訪問sshd服務,其他地址被拒絕,
vi /etc/hosts.allow
sshd:12.0.0.1,192.168.126.*
vi /etc/hosts.deny
sshd:ALL
,拒絕所有”
除了在/etc/hosts.allow中添加允許策略之外,還需要在/etc/hosts.deny檔案中設定“ALL:ALL”的拒絕策略,
實體:
若只希望從IP地址為12.0.0.1的主機或者位于192.168.126.0/24網段的主機訪問sshd服務,其他地址被拒絕,
vi /etc/hosts.allow
sshd:12.0.0.1,192.168.126.*
vi /etc/hosts.deny
sshd:ALL
訪問控制用的不多,自己有興趣可以做一下
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232544.html
標籤:其他
