文章目錄
- 一、SSH遠程管理
- (一)、配置 OpenSSH 服務端
- 1、 配置 OpenSSH 服務端實操(該處可以修改的地方可以參考上面理論處)
- 二、sshd服務支持兩種驗證方式
- (一)、密碼驗證
- (二)、密鑰對驗證
- (三)、公鑰和私鑰的關系:
- (四)、配置密鑰對驗證步驟
- 1、在客戶端創建密鑰對
- 2、將公鑰檔案上傳至服務器
- 3、在服務器中匯入公鑰文本
- 4、在客戶端使用密鑰對驗證
- 5、在客戶機設定ssh代理功能,實作免互動登錄
- 6、配置密鑰對驗證 實驗實操
- 三、使用SSH客戶端程式
- (一)、ssh遠程登錄
- (二)、scp遠程復制
- (三)、sftp 安全FTP
- (四)、使用SSH客戶端程式示例實操
- 1、接下來實驗 ssh遠程登錄:
- 2、接下來實驗 scp遠程復制:
- 接下來實驗的是上行復制,即上傳
- 接下來實驗sftp 檔案的傳輸與下載:
- 四、TCP Wrappers 訪問控制
- (一)、TCP Wrappers 訪問控制 也稱 TCP Wrappers (TCP封套)
- (二)TCP wrappers 保護機制的兩種實作方式
- (三)、TCP Wrappers的訪問策略
- (四)、TCP Wrappers 機制的基本原則
一、SSH遠程管理
SSH (Secure Shell)是一種安全通道協議,主要用來實作字符界面的遠程登錄、遠程復制等功能,
SSH協議對通信雙方的資料傳輸進行了加密處理,其中包括用戶登錄時輸入的用戶口令,因此SSH 協議具有很好的安全性,
網路
SSH客戶端 <-------------------------------------------------------------------------------------->SSH服務端
資料傳輸是加密的,可以防止資訊泄漏
資料傳輸是壓縮的,可以提高傳輸速度
SSH客戶端:Putty、 xshell、CRT
SSH服務端:OpenSSH
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 服務端
sshd config 組態檔的常用選項設定
vim /etc/ssh_config或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 #多個用戶以空格分隔,加@是指定允許的用戶只能在指定的IP的客戶端登錄服務器
------禁止某些用戶登錄,用法于Allowsers類似(注意不要同時使用)------
DenyUsers zhangsan
1、 配置 OpenSSH 服務端實操(該處可以修改的地方可以參考上面理論處)
首先可以檢查一下 openssh 是不是已經默認安裝了,

同時我們也可以進入到/etc/ssh 目錄下查看一下客戶端和服務器的兩個默認組態檔ssh_config和sshd_config

接著就是來修改 OpenSSH服務端的組態檔了,

我們這里試驗一下只允許張三用戶登錄客戶端,可以在AllowUsers 中添加允許訪問的用戶zhangsan

接著添加兩個用戶zhangsan 和 lisi

接著新建一個會話,該新建的會話是作為客戶端,目的是用來連接服務器使用,所以填的主機IP 要是服務器的IP,然后用它來實驗剛剛的設定是否成功了,即能否連接上服務器,




接著重啟一下SSH 服務,來實驗 lisi 用戶能否登錄服務端,
重啟了服務器之后,將之前新建的會話1 斷開連接后重新連接,輸入lisi 用戶名,發現不能登錄,


發現密碼被拒絕,說明 lisi 不能登錄,被拒絕訪問了,

二、sshd服務支持兩種驗證方式
(一)、密碼驗證
密碼驗證對服務器中本地系統用戶的登錄名稱、密碼進行驗證,簡便,但可能會被暴力破解
(二)、密鑰對驗證
密鑰對驗證要求提供相匹配的密鑰資訊才能通過驗證,通常先在客戶端中創建一對密鑰檔案(公鑰、私鑰),然后將公鑰檔案放到服務器的指定位置,遠程登錄時,系統將使用公鑰、私鑰進行加密/解密關聯驗證,能增強安全性,且可以免互動登錄,
(三)、公鑰和私鑰的關系:
1、公鑰和私鑰是成對生成的,這兩個密鑰互不相同,可以互相加密和解密,不能根據一個密鑰來推算出另一個密鑰,
2、公鑰對外公開,私鑰只有私鑰的持有者才知道,
3、當密碼驗證、密鑰對驗證都啟用時,服務器將優先使用密鑰對驗證,可根據實際情況設定驗證方式,
vim /etc/ssh/sshd_config
PasswordAuthentication yes #啟用密碼驗證
PubkeyAuthentication yes #啟用密鑰對驗證
AuthorizedkeysFile .ssh/authorized_keys #指定公鑰庫檔案,.ssh目錄是在/目錄下的隱藏檔案,需要使用ls -a 來查看
(四)、配置密鑰對驗證步驟
1、在客戶端創建密鑰對
在客戶端創建密鑰對通過ssh-keygen工具為當前用戶創建密鑰對檔案,可用的加密演算法為RSA,ECDSA或DSA等(ssh-keygen命令的 “-t" 選項用于指定演算法型別)
useradd admin
echo "123123" I passwd --stdin admin
su - admin su - root #帶 - 選項表示將使用目標用戶的登錄Shell環境,登錄shell環境之后就可以使用該用戶的~/.bashrc組態檔
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: #并確認輸入
ls -l ~/.ssh/id_ecdsa
#id_ecdsa 是私鑰檔案,權限默認為600;id-ecdsa .pub 是公鑰檔案,用來提供給SSH服務器
2、將公鑰檔案上傳至服務器
scp ~/.ssh/id_ecdsa.pub root@192.168.80.10:/opt
或
#此方法可直接在服務器的 /home/zhangsan/.ssh/ 目錄中匯入公鑰文本
cd ~/.ssh/
ssh-copy-id -i id ecdsa.pub zhangsane@192.168.80.10
3、在服務器中匯入公鑰文本
mkdir /home/zhangsan/.ssh/
cat /opt/id_ecdsa.pub >> /home/zhangsan/.ssh/authorized_keys
cat /home/zhangsan/.ssh/authorized_keys
4、在客戶端使用密鑰對驗證
ssh zhangsan@192.168.80.10
Enter passphrase for key '/home/admin/.ssh/id ecdsa': #輸入私鑰的密碼
5、在客戶機設定ssh代理功能,實作免互動登錄
ssh-agent bash
ssh-add
Enter passphrase for /home/admin/.ssh/id_ecdsa: #輸入私鑰的密碼
ssh zhangsan@192.168.80.10
6、配置密鑰對驗證 實驗實操
在7-1 中的admin 用戶創建一個密鑰對,那首先要su admin,然后創建密鑰對

然后在admin 用戶中的 家目錄下的 .ssh/ 目錄下,查看一下密鑰對,接著在服務器中匯入7-1 的公鑰文本

接著在7-2 中進入匯入公鑰的用戶zhangsan 的/ 目錄下查看 .ssh/ ,發現已經匯入了公鑰,

然后在 客戶端7-1 的admin 用戶下就可以直接使用ssh 命令 然后輸入私鑰密碼就可以切換到7-2 的 zhangsan 用戶中去了

接下來實驗 在客戶機設定ssh代理功能,實作免互動登錄:
在7-1 中的admin 用戶下設定ssh 代理功能,就可以在登錄zhangsan 用戶的時候不需要再次輸入私鑰密碼了,

三、使用SSH客戶端程式
(一)、ssh遠程登錄
ssh [選項] zhangsan@192.168.80.10
當用戶第一次登錄SSH服務器時,必須接受服務器發來的ECDSA密鑰(根據提示輸入"yes")后才能繼續驗證,接收的密鑰資訊將保存到 ~/.ssh/known_hosts 檔案中,密碼驗證成功以后,即可登錄目標服務器的命令列環境中了,
-p:指定非默認的埠號,預設時默認使用22埠
例如:ssh -p 2345 zhangsan@192.168.80.10
(二)、scp遠程復制
下行復制-------
scp root@192.168.80.11:/etc/passwd /root/passwd #將遠程主機中的/etc/passwd10 檔案復制到本機的/root目錄下并改名為passwd10保存
------上行復制------
scp -r /etc/ssh/ root@192.168.80.10:/opt #將本機的/etc/ssh目錄復制到遠程主機,-當上傳或下載的是目錄時,需要加-r代表遞回
(三)、sftp 安全FTP
由于使用了加密/解密技術,所以傳輸效率比普通的FTP要低,但安全性更高,操作語法sftp與 ftp幾乎一樣,輕量級的檔案傳輸,
sftp zhangsan@192.168.80.10
Connecting to 192.168.80.10...
tsengyia@172.16.16.22's password: #輸入密碼
sftp > ls
sftp > get 檔案名 #下載檔案到相應的下載的目錄下
sftp > put 檔案名 #上傳檔案到相應的上傳的目錄下
sftp > quit #退出
(四)、使用SSH客戶端程式示例實操
1、接下來實驗 ssh遠程登錄:
此時我們需要用到另外一臺虛擬機來進行連接,我們目的是從Centos 7-1 連接到 Centos 7-2 中的gcc 用戶上使用,,使用ssh 后面跟上Centos 7-2 的用戶gcc 以及@Centos 7-2 的IP 地址即可,

使用ifconfig 可以發現已經連接上Centos7-2 上面了,因為IP地址已經是7-2的IP地址了,

2、接下來實驗 scp遠程復制:
首先實驗的是下行復制,也就是下載:
此處我們在7-1 中復制7-2 的網卡組態檔ens-33到7-1它自己的/opt 目錄下(注意:復制的檔案最好使用絕對路徑,避免出現錯誤),然后在7-1中的/opt 目錄下能找到下載的7-2的網卡組態檔,


接下來實驗的是上行復制,即上傳
我們將7-1 的/etc目錄下的/ssh 目錄復制到7-2 的/opt 目錄下,注意這邊需要使用 -r 遞回上傳,避免檔案丟失,

在7-2 的/opt 目錄下就可以找到我們上傳過去的/etc/ssh 目錄(這邊我們最好也使用絕對路徑)

接下來實驗sftp 檔案的傳輸與下載:
這邊我們想在 7-1 中連接上7-2 ,可以使用sftp 然后用root用戶@7-2的IP 地址即可

使用get 命令將7-2 的/home 目錄下的hahaha.txt 檔案下載到7-1 中,注意下載好以后的檔案是存盤在7-2相應的/home 目錄下的,同樣的從7-1 中使用put 命令上傳/opt 目錄下的123.txt 到7-2,上傳的檔案也是保存在7-2的相應的/opt 目錄下的,
下載:

上傳:


四、TCP Wrappers 訪問控制
(一)、TCP Wrappers 訪問控制 也稱 TCP Wrappers (TCP封套)
將TCP服務程式”包裹" 起來,代為監聽TCP服務程式的埠,增加了一個安全檢測程序,外來的連接請求必須先通過這層安全檢測,獲得許可后才能訪問真正的服務程式
大多數Linux發行版, TCP Wrappers 是默認提供的功能,
rpm -q tcp_wrappers
(二)TCP wrappers 保護機制的兩種實作方式
1、直接使用 tcpd程式 對其他服務程式進行保護,需要運行tcpd程式,
2、由其他網路服務程式呼叫 libwrap.so.* 鏈接庫,不需要運行tcpd程式,此方式的應用更加廣泛,也更有效率,
使用 ldd 命令可以查看程式的 libwrap.so.*鏈接庫
ldd $ (which ssh) #which是查看ssh 這個程式檔案所在的位置的,而$()是呼叫()中的結果的作用)
使用 ldd $ (which ssh) 來查看ssh 這個程式檔案的相關的 libwrap.so.*鏈接庫,當使用該命令查找到相關的鏈接庫檔案后就說明ssh 可以使用 TCP Wrappers 的功能,

(三)、TCP Wrappers的訪問策略
TCP Wrappers機制的保護物件為各種網路服務程式,針對訪問服務的客戶端地址進行訪問控制,對應的兩個策略檔案為 /etc/hosts.allow 和 /etc/hosts.deny 分別用來設定允許和拒絕的策略,
格式
<服務程式串列>:<客戶端地址串列>
1、服務程式串列
ALL 代表所有的服務
單個服務程式:如 “vsftpd”,
多個服務程式組成的串列:如"vsftpd,sshd",用“,” 間隔,
2、客戶端地址串列
ALL:代表任何客戶端地址,
LOCAL:代表本機地址,
多個地址以逗號分隔
允許使用通配符 “*” 和 “?” ,前者代表任意長度字符,后者僅代表一個字符
網段地址,如 “192.168.80.” 或者 192.168.80.0/255.255.255.0
區域地址,如 “.benet.con” 匹配 benet.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.226.0/24網段的主機訪問sshd服務,其他地址被拒絕,
vim /etc/hosts.allow
sshd:12.0.0.1,192.168.226.20.0
vim /etc/hosts.deny
sshd:ALL


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/233078.html
標籤:其他
上一篇:LINUX學習筆記---基礎篇
