SSH 爲 secure shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 爲創建在應用層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登陸會話和其餘網絡服務提供安全性的協議。利用 SSH 協議能夠有效防止遠程管理過程當中的信息泄露問題。SSH最初是UNIX系統上的一個程序,後來又迅速擴展到其餘操做平臺。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平臺。幾乎全部UNIX平臺—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其餘平臺,均可運行SSH。git
1.首先咱們開啓兩臺Linux系統,一臺做爲服務端,一臺做爲客戶端。咱們先用vim編輯器對ssh服務端配置文件「/etc/ssh/sshd_config」進行編輯。shell
Port 22 監聽端口,默認監聽22端口 #AddressFamily any IPV4和IPV6協議家族用哪一個,any表示兩者均有 #ListenAddress 0.0.0.0 指明監控的地址,0.0.0.0表示本機的全部地址 #ListenAddress :: 指明監聽的IPV6的全部地址格式
#LoginGraceTime 2m 會話時間,默認2分鐘則自動斷開鏈接 #PermitRootLogin yes 是否容許管理員直接登陸,'yes'表示容許 #StrictModes yes 是否讓sshd去檢查用戶主目錄或相關文件的權限數據 MaxAuthTries 6 最大認證嘗試次數,最多能夠嘗試6次輸入密碼。 #MaxSessions 10 容許的最大會話數 (將「#」刪除便可開啓相應功能)
2.配置完畢記得重啓服務纔會生效,咱們用客戶端嘗試鏈接一下服務端。vim
咱們直接輸入用來的登陸的用戶root(注意是服務端用戶)和服務端IP地址便可,而後輸入用戶密碼便可登陸。我以前登錄過,若是沒有登錄過,系統會問你是否想鏈接,你只需輸入「yes」便可。
若是客戶端的用戶名和服務端的用戶名相同,登陸時能夠省略用戶名。
SSH服務的默認端口是22,若是你不設置端口的話,登陸請求會自動送到遠程主機的22端口。若是咱們在配置文件裏修改了端口號,咱們可使用 -p 選項來指定端口號。例如端口改成了123:
安全
3.咱們知道root用戶是系統的管理員,若是別人可以隨意登陸確定是不安全的。因此咱們能夠經過修改配置文件,不讓別人經過root用戶登陸。修改完記得重啓服務。bash
咱們再次用root用戶登陸,輸入密碼後顯示權限拒絕,而換成zhangsan用戶又能夠登陸了。
4.雖然咱們限制了使用root用戶登陸,可是當咱們用zhangsan用戶登陸了,用「su」命令任然能夠切換到root用戶。網絡
因此咱們能夠開啓「su」命令的PAM安全認證功能,咱們只要將容許用「su」命令的用戶添加到「wheel」組便可。
app
能夠看到用戶「jiang」在「wheel」組中,用戶「zhangsan」不在。咱們再用「zhangsan」用戶切換root用戶已經顯示權限拒絕,而在「wheel」組用戶「jiang」任然能夠切換root用戶。
ssh
5.前面我將最大認證嘗試次數6次數開啓了,咱們能夠測試一下是否成功。
能夠看到當咱們嘗試了6次,就自動被斷開鏈接了。可是咱們得用「-o NumberOfPasswordPrompts=8」選項才能測試成功,若是直接輸入,仍是默認3次就會斷開鏈接。
編輯器
6.咱們還能夠經過在服務端配置文件裏添加黑白名單來限制登陸的用戶和IP地址。ide
黑白名單不能同時存在,通常企業中多用白名單,下面以白名單爲例演示。
首先咱們在配置文件中添加白名單,限制zhangsan用戶只能在ip爲192.168.52.132的主機上進行登陸,lisi用戶能夠在任意主機上進行登陸。配置完成要重啓服務。
咱們在ip爲192.168.52.132的主機上登陸時,能夠看到因爲設置了白名單,用戶「jiang」不在名單裏全部已經不能登陸了,而zhangsan與lisi用戶任然能夠登陸。
咱們在ip爲192.168.52.128的主機上登陸時,只有lisi用戶能夠登陸,zhangsan用戶不能登陸,由於咱們限制了zhangsan用戶只能在ip爲192.168.52.132的主機上進行登陸。
1.咱們將以前設置的白名單刪除,容許root用戶登陸改成「yes」,並重啓服務。
2.首先在client主機的「/opt/」目錄,新建一個文件「ssh_client.txt」和一個目錄「ssh」,而後用scp命令將它們都複製到server主機的「/opt/」目錄下。
3.再在client主機的「/opt/」目錄下,建立一個文件「test01」,而後在「server」主機用scp命令將文件複製過來。
4.咱們將以前在兩臺主機「/opt/」目錄下新建的目錄和文件刪除,分別在server與client的「/opt/」目錄下建立兩個文件demo0一、demo02。
5.咱們在client主機用sftp命令也能夠登陸server主機進行文件的上傳和下載。上傳用「put」命令,下載用「get」命令,同時咱們還能夠用cd命令進行目錄的切換。
6.能夠看到咱們能夠用cd命令隨意切換目錄,這樣很不安全,因此咱們能夠經過對ssh服務端配置文件進行修改,將sftp命令鏈接後限制在咱們指定的目錄裏。
首先用vim編輯器對文件「/etc/ssh/sshd_config」進行編輯,將「Subsystem sftp /usr/libexec/openssh/sftp-server」註釋掉。而後添加下面的命令:
Subsystem sftp internal-sftp Match User zhangsan ChrootDirectory /home/zhangsan X11Forwarding no ForceCommand internal-sftp AllowTcpForwarding no (配置完別忘了重啓服務)
而後咱們進入「/home/」目錄,將咱們指定的目錄「zhangsan」的權限設爲「755」,屬主、屬組均改成root。
咱們再「/home/zhangsan/」目錄下,新建5個空文件。
咱們再次用client主機,經過sftp鏈接server主機,能夠看到咱們直接就登陸到「zhangsan/目」錄中了。當咱們想切換到別的目錄時,都不能成功。
1.將以前的限制sftp登陸切換目錄的配置修改回來,開啓密鑰對登陸功能(刪除#便可),並重啓服務。
2.首先用「ssh-keygen -t ecdsa」命令生成密鑰對,將密鑰文件存在「/home/zhangsan/.ssh/」目錄中。
3.用命令「ssh-copy-id -i id_ecdsa.pub zhangsan@192.168.52.131」將目錄「/home/zhangsan/.ssh/」下的公鑰文件「id_ecdsa.pub」導入到server主機。
4.當咱們再次用ssh命令登陸時,這是隻要輸入以前的密鑰便可。
5.可是咱們每次登陸都得輸入密鑰會很麻煩,此時咱們只要用bash代理,添加密鑰便可,咱們下次登陸就不用輸入密鑰了。
控制策略的配置文件:
- /etc/hosts.allow(白名單文件)
- /etc/hosts.deny(黑名單文件)
策略的應用順序:
- 先檢查hosts.allow文件,找到匹配則直接容許訪問,再也不檢查hosts.deny文件;
- 若hosts.allow文件中沒有,再檢測hosts.deny文件,找到則拒絕訪問;
- 若兩個文件中均無匹配策略,則默認容許訪問。
1.先用vim編輯器對文件「/etc/hosts.allow」進行編輯,添加一個白名單ip192.168.52.132。
2.再用vim編輯器對文件「/etc/hosts.deny」進行編輯,將全部ip設爲黑名單。
3.下面咱們用ip爲192.168.52.132的主機client和ip爲192.168.52.128的主機client02分別進行登陸,只有白名單裏的client主機能夠登陸。
4.將白名單中的client主機ip刪除,加入到黑名單中,再用client主機去登陸,結果不能登陸。