提高SSH服務安全

3.提高SSH服務安全
問題
本案例要求提高Linux主機上SSH服務端的安全性,完成以下任務:
1)配置基本安全策略(禁止root、禁止空口令)
2)針對SSH訪問採用僅允許的策略,未明確列出的用戶一概拒絕登錄
3)實現密鑰驗證登錄(私鑰口令)、免密碼登入(無私鑰口令)
4)確認密鑰驗證使用正常後,禁用口令驗證
方案
使用兩臺RHEL6虛擬機,其中svr5作爲OpenSSH服務器,另一臺pc205或svr5本機都可以作爲測試用的客戶機,如圖-2所示。
在這裏插入圖片描述
圖-2
步驟
實現此案例需要按照如下步驟進行。
步驟一:配置基本安全策略
1)調整sshd服務配置,並重載服務
[root@svr5 ~]# vim /etc/ssh/sshd_config
… …
Protocol 2 //去掉SSH協議V1
PermitRootLogin no //禁止root用戶登錄
PermitEmptyPasswords no //禁止密碼爲空的用戶登錄
… …
[root@svr5 ~]# service sshd reload
重新載入 sshd: [確定]
2)測試基本安全策略
嘗試以root用戶SSH登錄,失敗:
[root@svr5 ~]# ssh [email protected]
[email protected]’s password:
Permission denied, please try again.
將服務器上用戶kate的密碼設爲空,嘗試SSH登錄,也會失敗:
[root@svr5 ~]# passwd -d kate //清空用戶口令
清除用戶的密碼 kate。
passwd: 操作成功

[root@svr5 ~]# ssh [email protected]
[email protected]’s password:
Permission denied, please try again.
步驟二:針對SSH訪問採用僅允許的策略,未明確列出的用戶一概拒絕登錄
1)調整sshd服務配置,添加AllowUsers策略,僅允許用戶zengye、john、ugadm,其中ugadm只能從網段192.168.4.0/24登錄。
[root@svr5 ~]# vim /etc/ssh/sshd_config
… …
AllowUsers zengye john [email protected]/24
[root@svr5 ~]# service sshd reload
重新載入 sshd: [確定]
2)驗證SSH訪問控制,未授權的用戶將拒絕登錄。
[root@pc205 ~]# ssh [email protected] //已授權的用戶允許登錄
[email protected]’s password:
[ugadm@svr5 ~]$ exit
[root@pc205 ~]# ssh [email protected] //未授權的用戶被拒絕登錄
[email protected]’s password:
Permission denied, please try again.
步驟三:實現密鑰對驗證登錄(私鑰口令)、免密碼登入(無私鑰口令)
1)準備客戶機測試環境
在客戶機pc205上創建兩個測試用戶:mike、nono。其中mike將用來實現有私鑰口令保護的SSH登錄,而nono用來實現無私鑰口令保護的SSH登錄(免密碼交互) 。
[root@pc205 ~]# useradd mike
[root@pc205 ~]# useradd nono
[root@pc205 ~]# echo 123456 | passwd --stdin mike
… …
[root@pc205 ~]# echo 123456 | passwd --stdin nono
… …
2)爲客戶機的用戶mike、nono分別建立SSH密鑰對
以用戶mike登入客戶機,使用ssh-keygen創建密鑰對,設置好私鑰口令:
[root@pc205 ~]# su - mike
[mike@pc205 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mike/.ssh/id_rsa):
Created directory ‘/home/mike/.ssh’.
Enter passphrase (empty for no passphrase): //設置私鑰口令
Enter same passphrase again: //再次輸入私鑰口令
Your identification has been saved in /home/mike/.ssh/id_rsa.
Your public key has been saved in /home/mike/.ssh/id_rsa.pub.
The key fingerprint is:
63:6e:cf:45:f0:56:e2:89:6f:62:64:5a:5e:fd:68:d2 [email protected]
The key’s randomart image is:
±-[ RSA 2048]----+
| |
| |
| . . . |
| = = |
| S = B . |
| o B = . o |
| + + = E .|
| . + + o |
| o |
±----------------+
[mike@pc205 ~]$ ls -lh ~/.ssh/id_rsa* //確認密鑰對文件
-rw-------. 1 mike mike 1.8K 8月 15 10:35 /home/mike/.ssh/id_rsa
-rw-r–r--. 1 mike mike 403 8月 15 10:35 /home/mike/.ssh/id_rsa.pub

[mike@pc205 ~]$ exit
Logout
切換到用戶nono,使用ssh-keygen創建密鑰對,將私鑰口令設爲空(直接回車):
[root@pc205 ~]# su - nono
[nono@pc205 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nono/.ssh/id_rsa):
Created directory ‘/home/nono/.ssh’.
Enter passphrase (empty for no passphrase): //直接回車將口令設爲空
Enter same passphrase again: //再次回車確認
Your identification has been saved in /home/nono/.ssh/id_rsa.
Your public key has been saved in /home/nono/.ssh/id_rsa.pub.
The key fingerprint is:
43:16:c1:88:5a:02:ec:d5:37:22:4e:c0:25:6f:84:63 [email protected]
The key’s randomart image is:
±-[ RSA 2048]----+
|+++o… oo. |
| E=+oo.o… |
|o =. o + |
| .o. o |
| S |
| . |
| |
| |
| |
±----------------+
[nono@pc205 ~]$ ls -lh ~/.ssh/id_rsa
//確認密鑰對文件
-rw-------. 1 nono nono 1.7K 8月 15 10:37 /home/nono/.ssh/id_rsa
-rw-r–r--. 1 nono nono 403 8月 15 10:37 /home/nono/.ssh/id_rsa.pub
3)將客戶機上用戶mike、nono的公鑰部署到SSH服務器
以用戶nono登入客戶機,使用ssh-copy-id命令將自己的公鑰部署到服務器,服務器上的目標用戶爲john:
[nono@pc205 ~]$ ssh-copy-id [email protected]
[email protected]’s password:
Now try logging into the machine, with “ssh ‘[email protected]’”, and check in:
.ssh/authorized_keys
to make sure we haven’t added extra keys that you weren’t expecting.
[nono@pc205 ~]$ exit
Logout
同樣地,以用戶mike登入客戶機,使用ssh-copy-id命令將自己的公鑰部署到服務器,服務器上的目標用戶也是john:
[root@pc205 ~]# su - mike
[mike@pc205 ~]$ ssh-copy-id [email protected]
[email protected]’s password:
Now try logging into the machine, with “ssh ‘[email protected]’”, and check in:
.ssh/authorized_keys
to make sure we haven’t added extra keys that you weren’t expecting.
4)在服務器上確認客戶機用戶mike、nono上傳的公鑰信息
默認部署位置爲目標用戶de ~/.ssh/authorized_keys文件:
[root@svr5 ~]# tail -2 ~john/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzz+5AiFMGQ7LfuiV7eBnOcmRO9JRTcqRoynGO2y5
RyFL+LxR1IpEbkNrUyIZDk5uaX1Y8rwsf+pa7UZ2NyqmUEvNSUo0hQyDGsU9SPyAdzRCCvDgwpOFhaHi/OFnT+zqjAqXH2M9fFYEVUU4PIVL8HT19zCQRVZ/q3acQA34UsQUR0PpLJAobsf1BLe2EDM8BsSHckDGsNoDT9vk+u3e83RaehBMuy1cVEN5sLAaIrIeyM8Q0WxQNlqknL908HRkTlTeKrRoHbMnOBFj8StwlnscKHlkrsKkhUf8A9WWz/vL4GDwGND5jdca3I2hdITAySjMdfL1HMHnMYOgMjPM0Q== [email protected]
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAl6PopFT7VoFaQFVVKrH4N7VgDIUUjcIc/TN/dmA1
EmTAqv9wYnX83Do3/14wUD6WkUQ1wkZV64bkHCrgUDsCy2iV7wvH7xiOg4CYGFk1RALn5edKC8fEKiveR8MrUafa6O2iBpuG/vYin2QDyc7PpipyRw4rFg7/PaD1XuRRwFGcHgiv8PLUjO6GcuS4c3gyKbSADM7mV1gu62wMHm47e5jAxzxNGkYnyYeb7Ut7hwvs5xP54MHy23zSs+DjN7oRvKN5xZueaFLbVUcnSvGzN5IZqV7Qu3NqtFGpgCdUr/yaFcZWC7VIrNH2IJJwKNboCMSUoEm+InRtIvITdCWWVQ== [email protected]
5)在客戶機上測試SSH密鑰對驗證
在客戶機用戶mike的環境中,以遠程用戶john登入192.168.4.5主機,需要驗證客戶機用戶mike 的私鑰口令:
[mike@pc205 ~]$ ssh [email protected] //需驗證私鑰口令
Enter passphrase for key ‘/home/mike/.ssh/id_rsa’:
Last login: Thu Aug 15 10:10:37 2013 from 192.168.4.205
[john@svr5 ~]$ whoami
john
而在客戶機用戶nono的環境中,以遠程用戶john登入192.168.4.5主機時,無需驗證口令即可登入(因爲私鑰口令爲空):
[nono@pc205 ~]$ ssh [email protected] //免交互直接登入
Last login: Thu Aug 15 10:48:09 2013 from 192.168.4.205
[john@svr5 ~]$ whoami
john
步驟四:確認密鑰驗證使用正常後,禁用口令驗證
1)調整sshd服務配置,將PasswordAuthentication設爲no
[root@svr5 ~]# vim /etc/ssh/sshd_config
… …

PasswordAuthentication no //將此行yes改成no

[root@svr5 ~]# service sshd reload
重新載入 sshd: [確定]
2)確認密碼登錄驗證已不可用,只有部署了公鑰的用戶纔可以登錄
[root@pc205 ~]# su - mike
[mike@pc205 ~]$ ssh [email protected] //口令驗證被拒絕
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

[mike@pc205 ~]$ ssh [email protected] //密鑰驗證登錄成功
Enter passphrase for key ‘/home/mike/.ssh/id_rsa’:
Last login: Thu Aug 15 10:49:13 2013 from 192.168.4.205

發佈了225 篇原創文章 · 獲贊 196 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章