提供幾個SSH的安全要領:
1.
變更 sshd 聆聽埠口
2.
禁止 root 登入 & 限制只有某些帳號可以登入
3.
使用金鑰登入
4.
不要每一台伺服器都對外開放 sshd 埠口
變更 sshd 聆聽埠口
作法一: 確實變更 sshd 聆聽埠口
# vi /etc/ssh/sshd_config
Port 22022
# service sshd restart
視需求調整 iptables、fail2ban 規則
作法二: 變更硬體防火牆 Port
Forwarding 設定
1.
登入硬體防火牆 Web 管理界面
2.
修改 NAT / Port Forwarding 設定, 將 Public
Port 改為 22022, Private Port 仍為 22
3.
變更防火牆規則
說明: 埠號自由選擇, 不衝突即可; 這是避免遭受騷擾的最有效辦法, 立竿見影!
禁止 root 登入 & 限制只有某些帳號可以登入
# vi /etc/ssh/sshd_config
PermitRootLogin no
AllowUsers userA userB userC
# service sshd restart
說明: 避免 root 帳號被破解, 一定要養成 "以一般帳號登入" 的習慣; 只允許需要 ssh 操作的帳號登入會更安全, 但要注意多個帳號以空白隔開, 弄錯的話只能到 console 登入處理了
補充: 允許 ssh 登入的帳號不要太普通, 密碼不能太弱, 都能有效提昇安全性
使用金鑰登入
Client:
$ ssh-keygen
$ ssh-copy-id -i ~/.ssh/id_rsa.pub
myaccount@my.linux.host
Server:
# vi /etc/ssh/sshd_config
# 全面禁止密碼登入
PasswordAuthentication no
或
# 只限制某些帳號必須使用金鑰登入
PasswordAuthentication yes
Match User userA,userB
PasswordAuthentication no
# service sshd restart
說明: 使用金鑰登入可避免密碼外洩, 但必須妥善保管私鑰
不要每一台伺服器都對外開放 sshd 埠口
即使變更 sshd 聆聽埠口, 一旦暴露在 Internet 上就有被入侵的風險. 因此, 除非必要, 否則不建議每台伺服器都開放 Internet 登入 sshd. 只開放一台 Server 作為登入跳板、限制連線 IP 來源, 或 VPN 連線後才使用 ssh 服務, 都是保險的作法.
沒有留言:
張貼留言