這里寫目錄標題
- 一、SSH遠程管理
- 1.1 配置OpenSSH服務端
- 1.2 使用SSH客戶端程式
- 1.2.1 ssh遠程登錄
- 1.2.2 scp遠程復制
- 1.2.3 sftp安全FTP
- 1.3 密鑰對驗證的SSH體系
- 1.3.1 配置密鑰對驗證的大概步驟
- 1.3.1 配置密鑰對驗證實驗的詳細步驟
- 1.在客戶端創建密鑰對:
- 2.將公鑰檔案上傳至服務器
- 3.在服務器中匯入公鑰文本
- 4.在客戶端驗證并設定ssh代理功能,實作面互動登錄
- 二、TCP Wrapper訪問控制
- 2.1 TCP Wrapper
- 2.1.1 TCP Wrapper概述
- 2.1.1 TCP Wrapper保護機制
- 2.2 TCP Wrapper訪問策略
- 2.2.1 TCP Wrapper配置格式
- 2.2.2 TCP Wrapper訪問機制
- 2.3 TCP Wrapper 的配置
- 實驗詳細步驟
一、SSH遠程管理
- SSH是一種安全通道協議,主要用來實作字符界面的遠程登錄、遠程復制等功能;
- 對通信雙方的資料傳輸進行加密處理,其中包括用戶登錄時輸入的用戶口令;
- 與早期的Telnet(遠程登錄)、rsh(遠程執行命令)、rcp(遠程檔案控制)等相比,SSH協議提供了更好的安全性,

1.1 配置OpenSSH服務端
1.SSH服務端的組態檔:/etc/ssh/sshd_config
2.服務監聽選項:埠(默認Tcp的22號埠)、地址、協議版本和DNS反向決議等
vim /etc/ssh/sshd_config #服務端組態檔
#Port 22 #監埠為22
#AddressFamily any #監聽地址為任意網卡,也可以指定Openssh服務器的具體ip
#LoginGraceTime 2m #登錄驗證時間為2分鐘
#PermitRootLogin yes #禁止root用戶登錄
#MaxAuthTries 6 #最大重試次數為 6
#PermitEmptyPasswords no #禁止空密碼用戶登錄
#UseDNS no #禁用DNS反向決議,以提高服務器的回應速度
----------------------------------------------------------------------------------
配置允許和禁止用戶登錄:加@表示限制ip,注意允許和禁止不要同時使用!!
AllowUsers zhangsan #允許zhangsan登錄
AllowUsers zhangsan@192.168.80.80 #只允許zhangsan通過192.168.80.80登錄
DenyUsers lisi #禁止lisi登錄
實體:只允許zhangsang、lisi、wangwu用戶登錄,且其中lisi用戶僅能夠從IP地址為192.168.80.80的主機遠程登錄,
vim /etc/ssh/sshd_config #修改服務端組態檔
-------------------------------------------------------
AllowUsers zhangsan lisi@192.168.80.80 wangwu #這里為添加的配置
-------------------------------------------------------
systemctl reload sshd #修改完記得重新加載
3.sshd服務支持登錄驗證方式有:密碼驗證和密鑰對驗證,可以設定只使用其中一種,也可以都啟用,
-
密碼驗證:
以服務器中本地系統用戶的登錄名稱、密碼進行驗證,這種方式使用最為簡便,但從客戶機角度來看,正在連接的服務器有可能被假冒,從服務器角度來看,當遭遇密碼暴力破解攻擊時防御能力比較弱, -
密鑰對驗證:
要求提供相匹配的密鑰資訊才能通過驗證,通常先在客戶機中創建一對密鑰檔案(公鑰和私鑰),然后將公鑰檔案放到服務器中的指定位置,遠程登錄時,系統將使用公鑰、私鑰進行加密/解密關聯驗證,增強了遠程管理的安全性,- 公鑰和私鑰是成對生成的,這兩個密鑰互不相同,可以互相加密和解密;
- 不能根據一個密碼來推算出另一個密鑰;
- 公鑰對外公開,私鑰只有私鑰的持有人才知道,

-
公鑰和私鑰要配對使用,如果用公鑰對資料進行加密,只有用相對應的私鑰才能解密;如果用私鑰對資料進行加密,那么只有對應的公鑰才能解密,
-
當密碼驗證、密鑰對驗證都啟用時,服務器將優先使用密鑰對驗證,對于安全性要求較高的服務器,建議將密碼驗證方式禁用,只允許啟用密碼對驗證方式;若沒有特殊要求,則兩種方式都可以,
1.2 使用SSH客戶端程式
SSH客戶端的組態檔:/etc/ssh/ssh_config
1.2.1 ssh遠程登錄
通過ssh命令可以遠程登錄sshd服務,為用戶提供一個安全的Shell環境,以便于對服務器進行管理和維護,
1.格式:
ssh [選項] zhangsan@192.168.80.77 #指定登錄用戶、目標主機地址作為引數
ssh -p 20 zhangsan@192.168.80.77 #-p為指定埠
2.當用戶第一次登錄SSH服務器時,必須接受服務器發來的RSA密鑰(需要根據提示輸入:yes)后才能繼續驗證,接受的密鑰資訊將保存到~/.ssh/known_hosts檔案中,密碼驗證成功以后,就登錄到目標服務器的命令列環境中了,如下:
The authenticity of host '192.168.80.77 (192.168.80.77)' can't be established.
ECDSA key fingerprint is SHA256:sRKz60ZIwaIjOXejXaNdZp69M/aygMdkunCMR7a3u+4.
ECDSA key fingerprint is MD5:be:42:dd:a7:be:d9:96:f3:9d:8a:0c:20:b6:65:c9:2e.
Are you sure you want to continue connecting (yes/no)? yes #接受密鑰
root@192.168.80.77's password: #輸入密碼
實體:使用ssh遠程登錄的簡單案例

3.如果sshd服務器使用了非默認的埠號(如:1234),則在登錄時必須通過 -p 選項指定埠號,
ssh -p 1234 root@192.168.80.77 #指定埠
root@192.168.80.77's password: #輸入密碼
1.2.2 scp遠程復制
通過scp命令可以利用SSH安全連接與遠程主機相互復制檔案,使用scp命令時,除了必須指定賦值源、目標之外,還應該指定目標主機地址、登錄用戶,執行后提示驗證口令即可,
1.格式:
下行復制:
scp root@192.168.80.77:/etc/passwd /root/passwd123.txt
#從目標主機192.168.80.77下載passwd檔案到本機并改名為passwd123.txt
上行復制:
scp -r /etc/ssh/ root@192.168.80.77:/opt
#從本機上行復制/etc/ssh/目錄到192.168.80.77的/opt目錄下
實體:上下復制和下行復制的簡單案例

1.2.3 sftp安全FTP
- 通過sftp命令可以利用SSH安全連接與遠程主機上傳、下載檔案,采用了與FTP類似的登錄程序和互動環境,便于目錄資源管理,
- 由于使用了加密/解密技術,所以傳輸效率比普通的FTP要低,但安全性更高,操作語法和ftp幾乎一樣,
1.格式:
[root@localhost ~]# sftp root@192.168.80.77
root@192.168.80.77's password:
sftp> ls
sftp> get abc.txt
/root/abc.txt 100% 6 2.5KB/s 00:00
sftp> put /var/lo
local/ lock/ log/
sftp> put /var/log/mess
messages messages-20210411 messages-20210420 messages-20210425
sftp> put /var/log/messages
Uploading /var/log/messages to /root/messages
/var/log/messages 100% 246KB 5.6MB/s 00:00
sftp> put /var/log/messages /tmp/message.bak
Uploading /var/log/messages to /tmp/message.bak
/var/log/messages 100% 246KB 35.1MB/s 00:00
sftp> quit
[root@localhost ~]#

1.3 密鑰對驗證的SSH體系
1.3.1 配置密鑰對驗證的大概步驟
1.在客戶端創建密鑰對:
通過ssh - keygen工具為當前用戶創建密鑰對檔案,可用的加密演算法為RSA、ECDSA或DSA等(ssh - keygen命令的“-t”選項用于指定演算法型別)
首先創建賬戶:admin
useradd admin #創建新用戶
echo "123456" | passwd --stdin admin #設定密碼
su admin #切換到admin用戶
ssh-keygen -t ecdsa #使用ssh-keygen進行加密
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* #可以查看到生成的密鑰對檔案
/home/admin/.ssh/id_ecdsa #這是私鑰檔案,權限默認為600
/home/admin/.ssh/id_ecdsa.pub #這是公鑰檔案,用來提供給SSH服務器
2.將公鑰檔案上傳至服務器
scp ~/.ssh/id_ecdsa.pub root@192.168.80.80:/opt #將自己的公鑰檔案上傳到服務器的opt目錄下
或
cd ~/.ssh #切換到密鑰對所在目錄,此方法在服務端創建好zhangsan用戶,使用此方法直接跳過第三步
ssh-copy-id -i id_ecdsa.pub zhangsan@192.168.80.10 #這個方法可以直接在服務的/home/zhangsan/,ssh/目錄中匯入公鑰文本
3.在服務器中匯入公鑰文本
useradd zhangsan #添加新用戶zhangsan
echo "123456" | passwd -- stdin zhangsan #設定密碼
mkdir /home/zhangsan/.ssh/ #創建zhangsan的.ssh目錄
cat /opt/id_ecdsa.pub >> /home/zhangsan/.ssh/authorized_keys #將從客戶端接受的公鑰匯入到zhangsan的公鑰庫中
cat /home/zhangsan/.ssh/authorized_keys #使用cat命令進行查看確定
4.在客戶端驗證并設定ssh代理功能,實作面互動登錄
ssh zhangsan@192.168.80.80 #使用密鑰進行遠程連接驗證
Enter passphrase for key '/home/admin/.ssh/id_ecdsa': #輸入私鑰的密碼進行驗證
exit #退出服務器端
ssh-agent bash #咋客戶機設定ssh代理功能,實作面互動登錄
ssh-add
Enter passphrase for /home/admin/.ssh/id_ecdsa: #輸入私鑰進行確定
ssh zhangsan@192.168.80.80 #再次遠程連接服務器的時候無需輸入密碼
1.3.1 配置密鑰對驗證實驗的詳細步驟
1.在客戶端創建密鑰對:


2.將公鑰檔案上傳至服務器

3.在服務器中匯入公鑰文本

4.在客戶端驗證并設定ssh代理功能,實作面互動登錄

二、TCP Wrapper訪問控制
2.1 TCP Wrapper
2.1.1 TCP Wrapper概述
- TCP Wrappers ( TCP封套)
- 將TCP服務程式“包裹”起來,代為監聽TCP服務程式的埠,增加了一個安全檢測程序,外來的連接請求必須先通過這層安全檢測,獲得許可后才能訪問真正的服務程式,
- 大多數Linux 發行版,TCP Wrappers 是默認提供的功能,
rpm -q tcp_ wrappers查看是否安裝程式,
2.1.1 TCP Wrapper保護機制
TCP Wrappers保護機制的兩種實作方式:
- 直接使用tcpd程式對其他服務程式進行保護,需要運行tcpd程式,
- 由其他網路服務程式呼叫libwrap.so. 鏈接庫,不需要運行tcpd程式,此方式的應用更加廣泛,也更有效率,

- 使用ldd命令可以查看程式的libwrap.so. 鏈接庫
- ldd $ (which ssh)

2.2 TCP Wrapper訪問策略
- TCPWrappers機制的保護物件為各種網路服務程式,針對訪問服務的客戶端地址進行訪問控制,
- 對應的兩個策略檔案為
/etc/ hosts.allow和/etc/hosts .deny,分別用來設定允許和拒絕的策略,
2.2.1 TCP Wrapper配置格式
<服務程式串列> : <客戶端地址串列>
- 服務程式串列:
- ALL:代表所有的服務,
- 單個服務程式:如“vsftpd",
- 多個服務程式組成的串列:如“vsftpd, sshd”,
- 客戶端地址串列:
- ALL:代表任何客戶端地址,
- LOCAL:代表本機地址,
- 多個地址以逗號分隔
- 允許使用通配符“*” 和"?” ,前者代表任意長度字符,后者僅代表一個字符
- 網段地址,如"192. 168.80.”或者192. 168.80.0/255.255.255.0
- 區域地址,如". benet . com"匹配benet.com 域中的所有主機,
2.2.2 TCP Wrapper訪問機制

-
首先檢查
/etc/hosts.allow檔案,如果找到相匹配的策略,則允許訪問;
否則繼續檢查/etc/hosts.deny檔案, 如果找到相匹配的策略,則拒絕訪問;
如果檢查上述兩個檔案都找不到相匹配的策略,則允許訪問, -
“允許所有,拒絕個別”
只需在/etc/hosts.deny檔案中添加相應的拒絕策略 -
“允許個別,拒絕所有”
除了在/etc/hosts.allow中添加允許策略之外,還需要在/etc/ hosts. deny檔案中設定"ALL : ALL"的拒絕策略,
2.3 TCP Wrapper 的配置
實體:若只希望從IP地址為192.168.80.80的主機訪問sshd服務,其他地址被拒絕,
實驗詳細步驟
1.主機1(192.168.80.77)的/etc/ hosts.allow組態檔內增加192.168.80.80主機2的ip

2.主機1(192.168.80.77)的/etc/ hosts.deny組態檔內增加拒絕所有的配置

3.主機二(192.168.80.80)可以正常遠程登錄到主機1上

4.主機二(192.168.80.78)被拒絕登錄到主機1上,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/282254.html
標籤:其他
上一篇:多執行緒學習總結篇(一)
下一篇:網路編程基本詳情
