SSH 爲 Secure Shell 的縮寫, SSH 爲建立在應用層和傳輸層基礎上的安全協議. 利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題.
基於口令的安全驗證: 所有傳輸的數據都會被加密,但是不能保證你正在連接的服務器就是你想連接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到“中間人”這種方式的***。
基於祕鑰的安全驗證: 客戶端在本地生成祕鑰對,把公鑰傳給服務器. 當客戶端訪問服務器時,服務器會在用戶的主目錄下尋找公鑰,然後跟客戶端發來的公鑰進行比對,如果祕鑰一致,服務器就用公用密匙加密“質詢”(challenge)並把它發送給客戶端軟件。客戶端軟件收到“質詢”之後就可以用你的私人密匙解密再把它發送給服務器。
這裏我們的實驗就是用祕鑰登錄
在客戶端生成祕鑰
然後將其傳給服務器
我們在server端會看到多了一個被驗證的key
用root 用戶登陸服務器就不需要密碼了
有時公司爲了安全考慮是不允許root用戶ssh 登陸的.
比如我們編輯server端的/etc/ssh/sshd_config 文件.約49行的位置 PermitRootLogin 改爲no
此時服務端重啓sshd服務後 clent 端用root是登陸不了服務器的
我們再把普通用戶的公鑰傳給服務器就可以用普通用戶ssh登錄服務器了(普通用戶和root用戶指的是存在於服務器上的用戶.本地用戶是不能登陸遠程服務器的.)
在server端添加普通用戶test2
useradd test2
echo 123456 | passwd --stdin test2
在clent端傳給服務器公鑰
再用test2 用戶登錄服務器
用fail2ban軟件 可以防止 別人無限制嘗試破解密碼 佔用帶寬和資源 降低安全風險。
實驗:用fail2ban 限制 ip 登陸嘗試三次失敗後限制ip登陸1個小時
在www.fail2ban.org 官網上下載 fail2ban 軟件
解壓後 用 README.md 提供的方法 安裝軟件
添加開機啓動
cp files/redhat-initd /etc/init.d/fail2ban
chkconfig --add fail2ban
vim /etc/fail2ban/jail.conf
5分鐘內 嘗試失敗三次 就觸發bantime 1小時
#logpath 定義日誌存放的目錄路徑
#bantime 定義 屏幕ip的時間
#findtime 定義 在findtime 時間內 嘗試超過maxretry 規定的次數 會被ban掉
#maxretry 定義 最大嘗試次數
設置完畢後重啓fail2ban服務
systemctl restart fail2ban
rhel6 是 service fail2ban restart
然後在客戶端嘗試登錄3次輸入錯誤密碼 看效果
在server端 /var/log/secure看日誌消息