當前位置:
首頁 > 知識 > 安全運維那些事之SSH

安全運維那些事之SSH

SSH (Security Shell)

SSH(安全外殼協議)為建立在應用層基礎上的安全協議。

SSH是目前較可靠,專為遠程登錄會話和其他網路服務提供安全性的協議。

利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。

安裝OpenSSH

開機自啟動

編輯 vim /etc/rc.local

添加 /etc/init.d/ssh start

遠程訪問

ssh IP地址

ssh -l root IP地址 //指定用戶

ssh -p xxx 用戶名@IP地址 //指定用戶同時指定埠為xxx

ssh 命令參數

-1:強制使用ssh協議版本1;

-2:強制使用ssh協議版本2;

-4:強制使用IPv4地址;

-6:強制使用IPv6地址;

-A:開啟認證代理連接轉發功能;

-a:關閉認證代理連接轉發功能;

-b:使用本機指定地址作為對應連接的源ip地址;

-C:請求壓縮所有數據;

-F:指定ssh指令的配置文件;

-f:後台執行ssh指令;

-g:允許遠程主機連接主機的轉發埠;

-i:指定身份文件;

-l:指定連接遠程伺服器登錄用戶名;

-N:不執行遠程指令;

-o:指定配置選項;

-p:指定遠程伺服器上的埠;

-q:靜默模式;

-X:開啟X11轉發功能;

-x:關閉X11轉發功能;

-y:開啟信任X11轉發功能。

配置文件解讀

/etc/ssh/ssh_config 客戶端配置文件

/etc/ssh/sshd_config 服務端配置文件

SSH 加固0x01 禁止使用口令只運行使用密鑰建立SSH連接

1.創建SSH KEY

使用ssh-keygen生成一個密鑰對,並且將公鑰註冊到伺服器的$HOME/.ssh/auth_keys文件

將密鑰下載會自己使用的客戶端

ssh-kengen -t rsa表示創建一對rsa密鑰

三次回車(第一次是默認名稱,第二次是默認空密碼或也可以輸入密碼防止別人盜了你的私鑰文件,第三次是確認)

之後在用戶的家目錄會生成.ssh/(隱藏目錄)和./ssh下的id_rsa(私鑰,2048位)、id_rsa.pub(公鑰,要追加到認證文件)

將id_rsa.pub追加到auth_keys(默認的名字是authorized_keys,可以修改)

並且將auth_keys文件許可權修改為600 (這步沒做,很可能導致ssh連接不成功 認證失敗)

.ssh/ 的目錄也需要是700

2.確保啟用SSH公鑰認證功能

查看/etc/ssh/sshd_config文件,確保以下兩條為 yes且不是注釋狀態:

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/auth_keys #指定認證文件,默認值.ssh/authorized_keys

3.禁止密碼安全驗證

禁止通過密碼方式方式登錄

編輯/etc/ssh/sshd_config文件:

ChallengeResponseAuthentication no

PasswordAuthentication no

PermitEmptyPasswords no

UsePAM no

當配置完後,應當重啟服務sudo service sshd restart同時應打開一個ssh連接去測試效果

0x02 ssh配置文件加強的安全設置

限制用戶方式

禁止root通過ssh登錄:PermitRootLogin no

限制ssh方式的用戶登錄:AllowUsers d4rksec

這樣之後,就只能是你允許的d4rksec用戶可以通過ssh並且是使用密鑰的方式才能登錄

針對固定IP進行允許和禁止登錄

編輯/etc/hosts.allow配置文件中添加設置允許登錄的IP

例如:sshd:192.168.1.22:allow

編輯/etc/hosts.deny文件,設置sshd:ALL

也就是說,我們禁止了所有IP,但是允許了192.168.1.22這個ip登錄。

修改偵聽的port

默認port值是22,可以修改成其它自定義埠,但要注意相關的iptables放行。

還有ListenAddress這一項是指定sshd監聽的網路地址,一般只有一個IP地址的話就無所謂設置了.

如果有兩張網卡,一個是內網ip,一個是外網IP,只想在內網能SSH的話就在這裡設置。例如:ListenAddress 192.168.1.12:22 (這裡假設伺服器IP是192.168.1.12)

認證策略

LoginGraceTime 限制用戶必須在指定的時間內認證成功,默認120秒,可修改為更短。

MaxAuthTries 指定每個連接最大允許的認證次數。默認值是6.

如果失敗認證的次數超過這個數值的一半,連接將被強制斷開。且會生成額外的失敗日誌消息。

PermitUserEnviroment 默認值是no,注意如果是yes的話要改回no,防止繞過訪問控制。

注意sshd配置文件中的 Subsystem 項,和sftp有關

如果確認自己的文件通過sftp上傳和下載完成後,可以考慮出於安全注釋掉,要用的時候再重新開

SSH客戶端選擇通過密鑰文件的方式登錄,因為直接禁止了密碼和root的登錄,所以杜絕了ssh的暴力破解密碼可能。

當然密鑰文件就要妥善保管了。

客戶端連接

創建密鑰的時候 如果同時創建了密碼,那樣更保證即使密鑰文件被黑客盜取也不能第一時間拿來使用

註:修改任何配置一定要重啟服務

ssh -i 私鑰文件(is_rsa) 遠程主機用戶名@遠程主機ip地址 -p 埠號


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 PHP技術大全 的精彩文章:

寶塔Linux面板–9月20日更新–5.2.0正式版
phpjiami 數種解密方法
Swoft-基於swoole2.0的高性能微服務框架
如何面試 PHP 工程師?
一個MySQL 5.7分區表性能下降的案例分析

TAG:PHP技術大全 |