SSH 伺服器的設定檔是 /etc/ssh/sshd_config,以下是一些 SSH 的安全配置:
為了加強SSH安全性, 除了限制root帳號登入這種必備的手段之外, 還參照了前輩們的做法, 從三部分來著手:
一. sshd_config 部分
這是一個很簡單的設定手段, 除了限制root之外, 還順便限制連線數, 如下:
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
MaxAuthTries 2
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
PermitEmptyPasswords no
PasswordAuthentication yes
# ChallengeResponseAuthentication=no
#UsePAM no
UsePAM yes
1. SSH 預設會使用 Port 22,將它改成其他的埠號,找到:
Port 22 換成:
Port new_port
2. 禁止 root 直接登入,先要登入一般賬戶,再用 su 指令切換到 root,把 PermitRootlogin 設成 no:
PermitRootlogin no
3. 只給予特定用戶或群組登入 SSH,以下是准許 my_name 用戶及 my_group 群組登入:
AllowUsers my_name
AllowGroups my_group
4. 禁止使用空密碼登入:
PermitEmptyPasswords no
最後儲存檔案,並重新啟動 SSH 伺服器。
—————————————————————————————————
二.利用hosts.deny與hosts.allow 設定可以連線的ip:
先在 /etc/hosts.allow 裡面, 設定哪些ip是可以連線的, 例如前輩們所舉例的:
sshd:140.128.1.123
, 接著, 再到 /etc/hosts.deny 裡面設定拒絕所有ip連線:
sshd:all
於是, 就只有在 /etc/hosts.allow 列表裡面的IP, 才可以使用ssh 來主機連線, 其餘都會被拒絕掉.
—————————————————————————————————
三. 利用pam機制:
在最上面那文章裡面提到, 利用pam機制, 讓sshd接到連線時, 先檢查是否在黑名單之中的做法. 方法很簡單, 就是在/etc/pam.d/ssh裡面增加下面的設定:
auth required pam_stack.so service=system-auth
auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/sshd_user_deny_list onerr=succeed
account required pam_nologin.so
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
session required pam_loginuid.so
(特別注意, 上面設定都是同一行, 並無斷行)
特別新增的是紅色字的部分. 當你的名字在該檔案( /etc/sshd_user_deny_list )之中時, 就無法利用ssh來登入系統.
利用以上三個方法, 可以讓你的主機在提供sshd連線的時候, 安全度提升不少. 但切記, 經常的檢查與更新, 減少不必要的服務, 增加許多的安全限制, 才是主機管理的最佳策略!