安全運維那些事之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 埠號


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