一、SSH服務
1.1SSH基礎
(1)SSH:是一種安全通道協議,主要用來實作字符界面的遠程登錄、遠程復制等功能,SSH 協議對通信雙方的資料傳輸進行了加密處理,其中包括用戶登錄時輸入的用戶口令,SSH 為建立在應用層和傳輸層基礎上的安全協議,對資料進行壓縮,加快傳輸速度,
SSH客戶端<--------------網路(通過網路連接服務端和客戶端)---------------->SSH服務端
(2)SSH協議的優點:
- 資料傳輸是加密的,可以防止資訊泄漏
- 資料傳輸是壓縮的,可以提高傳輸速度
(3)服務名稱:sshd
服務端主程式:/usr/sbin/sshd
服務端組態檔:/etc/ssh/sshd_config
客戶端組態檔:/etc/ssh/ssh_config
1.2SSH原理
(1)公鑰傳輸原理

- 客戶端發起鏈接請求
- 服務端回傳自己的公鑰,以及一個會話ID(這一步客戶端得到服務端公鑰)
- 客戶端生成密鑰對
- 客戶端用自己的公鑰異或會話ID,計算出一個值Res,并用服務端的公鑰加密
- 客戶端發送加密值到服務端,服務端用私鑰解密,得到Res
- 服務端用解密后的值Res異或會話ID,計算出客戶端的公鑰(這一步服務端得到客戶端公鑰)
- 最終:雙方各自持有三個秘鑰,分別為自己的一對公、私鑰,以及對方的公鑰,之后的所有通訊都會被加密
(2)ssh遠程登錄
方法一:
ssh [遠程主機用戶名]@[遠程服務器主機名或IP地址] -p 埠號

方法二:
ssh -l [遠程主機用戶名] [遠程服務器主機名或IP 地址] -p 埠號
-l:-l選項,指定登錄名稱,
-p:-p選項,指定登錄埠(當服務端的埠非默認時,需要使用-p 指定埠進行登錄),

1.3服務端配置
[root@client ~]# vim /etc/ssh/sshd_config #修改常用配置項
- Port 22 #生產建議修改
- ListenAddress ip #監聽地址設定SSHD服務器系結的IP 地址,0.0.0.0 表示偵聽所有地址安全建議:如果主機不需要從公網ssh訪問,可以把監聽地址改為內網地址 這個值可以寫成本地IP地址,也可以寫成所有地址,即0.0.0.0 表示所有IP,
- LoginGraceTime 2m #用來設定如果用戶登錄失敗,在切斷連接前服務器需要等待的時間,單位為秒
- PermitRootLogin yes #默認 ubuntu不允許root遠程ssh登錄
- StrictModes yes #檢查.ssh/檔案的所有者,權限等
- MaxAuthTries #用來設定最大失敗嘗試登陸次數為6
- MaxSessions 10 #同一個連接最大會話
- PubkeyAuthentication yes #基于key驗證
- PermitEmptyPasswords no #密碼驗證當然是需要的!所以這里寫 yes,也可以設定為 no,在真實的生產服務器上,根據不同安全級別要求,有的是設定不需要密碼登陸的,通過認證的秘鑰來登陸,
- PasswordAuthentication yes #基于用戶名和密碼連接
- GatewayPorts no
- ClientAliveInterval 10 #單位:秒
- ClientAliveCountMax 3 #默認3
- UseDNS yes #提高速度可改為no 內網改為no 禁用反向決議
- GSSAPIAuthentication yes #提高速度可改為no
- MaxStartups #未認證連接最大值,默認值10
- Banner /path/file #以下可以限制可登錄用戶的辦法:白名單 黑名單
- AllowUsers user1 user2 user3@ip(限制主機)
- DenyUsers user1 user2 user3
- AllowGroups g1 g2
- DenyGroups g1 g2
(1)白名單黑名單串列

![]()
(2)輸入密碼限制

![]()
1.4SSH客戶端
(1)免密登錄
[root@server ~]#ssh-keygen [root@server ~]#ssh-copy-id -i .ssh/id_rsa.pub 192.168.10.20 [root@server ~]#ssh 192.168.10.20


(2)隱藏埠號,并且不讓用戶使用su命令切換root用戶
[root@server ~]#vim /etc/ssh/sshd_config #修改以下兩行 Port 10086 PermitRootLogin no [root@server ~]#systemctl restart sshd [root@server ~]#vim /etc/pam.d/su 打開第6行 客戶端測驗: [root@client ~]#ssh zhangzijun@192.168.10.10 -p 10086

![]()

![]()

二、TCP Wrappers
在Linux 系統中,許多網路服務針對客戶端提供了訪問控制機制,如 Samba、BIND、 HTTPD、OpenSSH 等,本節將介紹另一種防護機制——TCP Wrappers(TCP 封套),以作為應用服務與網路之間的一道特殊防線,提供額外的安全保障,TCP Wrappers 將 TCP 服務程式“包裹”起來,代為監聽 TCP 服務程式的埠,增加了 一個安全檢測程序,外來的連接請求必須先通過這層安全檢測,獲得許可后才能訪問真正 的服務程式,TCP Wrappers 還可以記錄所有企圖訪問被保護服務的行為, 為管理員提供豐富的安全分析資料,

2.1策略的配置格式
兩個策略檔案的作用相反,但配置記錄的格式相同,如下所示
服務程式串列、客戶端地址串列之間以冒號分隔,在每個串列內的多個項之間以逗號分隔
(1)服務程式串列可分為以下幾類,
- ALL:代表所有的服務
- 單個服務程式:如“vsftpd“
- 多個服務程式組成的串列:如“vsftpd,sshd”
(2)客戶端地址串列可分為以下幾類,
- ALL:代表任何客戶端地址,
- LOCAL:代表本機地址,
- 單個 IP 地址:如“192.168.10.10”
- 網路段地址:如“192.168.10.0/255.255.255.0”
- 以“.”開始的域名:如“.bdqn.com”匹配 bdqn.com 域中的所有主機,
- 以“.”結束的網路地址:如“192.168.10.”匹配整個 192.168.10.0/24 網段
- 嵌入通配符“*”“?”:前者代表任意長度字符,后者僅代表一個字符,如“10.0.8.2*”
- 匹配以 10.0.8.2 開頭的所有 IP 地址,不可與以“**.**”開始或結束的模式混用
- 多個客戶端地址組成的串列:如“192.168.1.,172.16.16.,.bdqn.com”
2.2訪問控制的基本格式
注意sshd_config的黑白名單:


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/518984.html
標籤:其他
