遠程訪問及控制(詳解)——SSH遠程管理及TCP Wrappers 訪問控制
- 一、SSH遠程管理
- 1、定義
- 2、優點
- 3、客戶端與服務端
- 4、SSH服務的開啟、埠號和組態檔
- 二、配置 OpenSSH 服務端
- 1、組態檔常用設定選項
- 2、AllowUsers和DenyUsers
- 三、使用SSH客戶端程式
- 1、SSH遠程登錄
- 2、SCP遠程復制
- ①、下行復制
- ②、上行復制
- 3、sftp 安全 FTP
- 四、sshd服務支持兩種驗證方式
- 1、密碼驗證
- 2、秘鑰對驗證
- ①、在客戶機創建秘鑰對
- ②、將公鑰檔案上傳至服務器
- ③、在服務器中匯入公鑰文本
- ④、在客戶端使用秘鑰對驗證
- ⑤、在客戶機設定ssh代理功能,實作免互動登錄
- 五、TCP Wrappers 訪問控制
- 1、保護機制的兩種實作方式
- ①、查看程式的 libwrap.so.* 鏈接庫——ldd命令
- 2、TCP Wrappers 的訪問策略
- 3、TCP Wrappers 機制的基本原則
- 4、示例
一、SSH遠程管理
1、定義
SSH(Secure Shell )是一種安全通道協議,主要用來實作字符界面的遠程的登錄、遠程復制等功能,
SSH協議對通信雙方的資料傳輸進行了加密處理,其中包括用戶登錄時輸入的用戶口令,因此SSH協議具有很好的安全性,
2、優點

3、客戶端與服務端
- 客戶端:Putty、Xshell、CRT
- 服務端:OpenSSH
- OpenSSH 是實作 SSH 協議的開源軟體專案,適用于各種 UNIX、Linux 作業系統,
- CentOS 7系統默認已安裝openssh相關軟體包,并已將 sshd 服務添加為開機自啟動,
4、SSH服務的開啟、埠號和組態檔
- SSH服務的開啟
- 執行 “systemctl start sshd” 命令即可啟動 sshd 服務 - SSH服務的埠號
- sshd 服務使用的默認埠號為 22 - SSH服務的組態檔
- sshd_config 是針對服務端的組態檔
- ssh_config 是針對客戶端的組態檔
二、配置 OpenSSH 服務端
1、組態檔常用設定選項




2、AllowUsers和DenyUsers





三、使用SSH客戶端程式
1、SSH遠程登錄

當用戶第一次登錄SSH服務器時,必須接受服務器發來的ECDSA秘鑰(根據提示輸入"yes")后才能繼續驗證,接收的秘鑰資訊將保存到 ~/.ssh/known_hosts 檔案中,密碼驗證成功后,即可登錄目標服務器的命令環境中了,
| 選項 | 說明 |
|---|---|
| -1 | 強制使用ssh協議版本1 |
| -2 | 強制使用ssh協議版本2 |
| -4 | 強制使用IPv4地址 |
| -6 | 強制使用IPv6地址 |
| -A | 開啟認證代理連接轉發功能 |
| -a | 關閉認證代理連接轉發功能 |
| -b | 使用本機指定的地址作為對位連接的源IP地址 |
| -C | 請求壓縮所有資料 |
| -F | 指定ssh指令的組態檔,默認的組態檔為“/etc/ssh/ssh_config” |
| -f | 后臺執行ssh指令 |
| -g | 允許遠程主機連接本機的轉發埠 |
| -i | 指定身份檔案(即私鑰檔案) |
| -l | 指定連接遠程服務器的登錄用戶名 |
| -N | 不執行遠程指令 |
| -o | 指定配置選項 |
| -p | 指定遠程服務器上的埠 |
| -q | 靜默模式,所有的警告和診斷資訊被禁止輸出 |
| -X | 開啟X11轉發功能 |
| -x | 關閉X11轉發功能 |
| -y | 開啟信任X11轉發功能 |
2、SCP遠程復制
①、下行復制

②、上行復制

3、sftp 安全 FTP
由于使用了加密/解密技術,所以傳輸效率比普通的FTP要低,但安全性更高,
sftp root@192.168.184.40
root@192.168.184.40's password:
Connected to 192.168.184.40.
sftp> ls
sftp> get 檔案名 #下載檔案
sftp> put 檔案名 #上傳檔案
sftp> exit #退出


四、sshd服務支持兩種驗證方式
1、密碼驗證
- 對服務器中本地系統用戶的登錄名稱、密碼進行驗證,簡便,但可能會被暴力破解
2、秘鑰對驗證
- 要求提供相匹配的密鑰資訊才能通過驗證,通常先在客戶端中創建一對密鑰檔案(公鑰、私鑰),然后將公鑰檔案放到服務器中的指定位置,遠程登錄時,系統將使用公鑰、私鑰進行加密/解密關聯驗證,能增強安全性,且可以免互動登錄,
- 當密碼驗證、密鑰對驗證都啟用時,服務器將優先使用密鑰對驗證,可根據實際情況設定驗證方式,
vim /etc/ssh/sshd_config
PasswordAuthentication yes #啟用密碼驗證
PubkeyAuthentication yes #啟用密鑰對驗證
AuthorizedKeysFile .ssh/authorized_keys #指定公鑰庫檔案

①、在客戶機創建秘鑰對
通過ssh-keygen工具為當前用戶創建密鑰對檔案,可用的加密演算法為RSA、ECDSA或DSA等(ssh-keygen命令的“-t”選項用于指定演算法型別),
useradd ljm
echo "123456" | passwd --stdin ljm
su - ljm
ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/ljm/.ssh/id_ecdsa): #指定私鑰位置,直接回車使用默認位置
Created directory '/home/ljm/.ssh'. #生成的私鑰、公鑰檔案默認存放在宿主目錄中的隱藏目錄.ssh/下
Enter passphrase (empty for no passphrase): #設定私鑰的密碼
Enter same passphrase again: #確認輸入
ls -l .ssh/id_ecdsa* #id_ecdsa是私鑰檔案,權限默認為600;id_ecdsa.pub是公鑰檔案,用來提供給 SSH 服務器

②、將公鑰檔案上傳至服務器
scp ~/.ssh/id_ecdsa.pub root@192.168.184.20:/opt
或
#此方法可直接在服務器的/home/ljm/.ssh/目錄中匯入公鑰文本
cd ~/.ssh/
ssh-copy-id -i id_ecdsa.pub zhangsan@192.168.184.20

③、在服務器中匯入公鑰文本
mkdir /home/zhangsan/.ssh/
cat /tmp/id_ecdsa.pub >> /home/zhangsan/.ssh/authorized_keys
cat /home/zhangsan/.ssh/authorized_keys

④、在客戶端使用秘鑰對驗證
ssh zhangsan@192.168.184.20
lucien@192.168.184.20's password: #輸入私鑰的密碼

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

五、TCP Wrappers 訪問控制

- TCP Wrappers 將TCP服務程式“包裹”起來,代為監聽TCP服務程式的埠,增加了一個安全檢測程序,外來的連接請求必須先通過這層安全檢測,獲得許可后才能訪問真正的服務程式,
- 大多數 Linux 發行版,TCP Wrappers 是默認提供的功能,

1、保護機制的兩種實作方式
- 直接使用 tcpd 程式對其他服務程式進行保護,需要運行 tcpd程式,
- 由其他網路服務程式呼叫 libwrap.so.* 鏈接庫,不需要運行 tcpd 程式,此方式的應用更加廣泛,也更有效率,
①、查看程式的 libwrap.so.* 鏈接庫——ldd命令

| 常用引數 | 說明 |
|---|---|
| -v | 詳細資訊模式,列印所有相關資訊 |
| -u | 列印未使用的直接依賴 |
| -d | 執行重定位和報告任何丟失的物件 |
| -r | 執行資料物件和函式的重定位,并且報告任何丟失的物件和函式 |
| – -help | 顯示幫助資訊 |
- 檔案需要寫上絕對路徑
- 我們不是很清楚檔案的絕對路徑時,可以使用which命令查詢
- 也可以兩條命令一起使用:ldd $(which sshd)
2、TCP Wrappers 的訪問策略
- TCP Wrappers 機制的保護物件為各種網路服務程式,針對訪問服務的客戶端地址進行訪問控制,
- 對應的兩個策略檔案為 /etc/hosts.allow 和 /etc/hosts.deny,分別用來設定允許和拒絕的策略,

| 服務程式串列 | ALL | 代表所有的服務 |
|---|---|---|
| 單個服務程式 | 如“vsftpd” | |
| 多個服務程式組成的串列 | 如“vsftpd,sshd” | |
| 客戶端地址串列 | ALL | 代表任何客戶端地址 |
| LOCAL | 代表本機地址 | |
| 多個地址以逗號分隔 | ||
| 允許使用通配符 | * | 代表任意長度字符 |
| ? | 僅代表一個字符 | |
3、TCP Wrappers 機制的基本原則
-
首先檢查/etc/hosts.allow檔案,如果找到相匹配的策略,則允許訪問;
-
否則繼續檢查/etc/hosts.deny檔案,如果找到相匹配的策略,則拒絕訪問;
-
如果檢查上述兩個檔案都找不到相匹配的策略,則允許訪問,
-
允許所有,拒絕個別
只需在/etc/hosts.deny檔案中添加相應的拒絕策略 -
允許個別,拒絕所有
除了在/etc/hosts.allow中添加允許策略之外,還需要在/etc/hosts.deny檔案中設定“ALL:ALL”的拒絕策略,
4、示例
只希望從IP地址為12.0.0.1的主機或者位于192.168.80.0/24網段的主機訪問sshd服務,其他地址被拒絕,
vi /etc/hosts.allow
sshd:12.0.0.1,192.168.80.*
vi /etc/hosts.deny
sshd:ALL
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/263740.html
標籤:其他
上一篇:shell編程之免互動
