萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux SSH 安全加固:修改預設埠 22、禁用 Root 登入、金鑰認證三步走

SSH (Secure Shell) 是 Linux 遠端管理主力協定,預設埠 22 面對全網暴力破解風險極高。本文提供分層防護策略:修改埠號、禁用密碼登入、強制金鑰認證、Fail2Ban 自動封鎖。

第一層:修改預設埠號 (降低掃描噪音)

vim /etc/ssh/sshd_config
# 找到 #Port 22,取消註解並新增一行 (保留 22 以防鎖死)
Port 22
Port 2222

# 重啟服務
systemctl restart sshd        # CentOS 7+/RHEL 7+/Ubuntu 16.04+
# 或
service sshd restart          # CentOS 6
service ssh restart           # Debian/Ubuntu 舊版

防火牆同步開放:

# firewalld
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

# iptables
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT

第二層:禁用 Root 密碼登入 (強制跳板用戶)

# 1. 建立一般用戶
useradd adminuser
passwd adminuser
usermod -aG wheel adminuser   # CentOS/RHEL
usermod -aG sudo adminuser    # Ubuntu/Debian

# 2. 修改 sshd_config
PermitRootLogin no            # 禁用 root 登入
PasswordAuthentication no     # 禁用密碼認證 (配合金鑰)
PubkeyAuthentication yes      # 啟用金鑰認證
AuthorizedKeysFile .ssh/authorized_keys

# 3. 重啟驗證 (先開新終端機測試,別關舊連線!)
systemctl restart sshd

第三層:SSH 金鑰認證 (最強防護)

# 客戶端產生金鑰對
ssh-keygen -t ed25519 -C "user@host"  # 推薦 Ed25519,比 RSA 4096 更快更安全

# 複製公鑰至伺服器
ssh-copy-id -p 2222 adminuser@server_ip

# 伺服器端驗證權限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

第四層:Fail2Ban 自動封鎖暴力破解

# 安裝
yum install fail2ban -y
# 或 apt install fail2ban

# 設定 /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600
findtime = 600

systemctl enable --now fail2ban

SSH 設定檔修改示意圖

Port 設定範例

PermitRootLogin 設定

重啟服務示意圖

防火牆設定示意圖

防火牆規則示意圖

進階加固清單

  • Protocol 2 (預設,僅支援 SSHv2)
  • MaxAuthTries 3 限制嘗試次數
  • ClientAliveInterval 300 ClientAliveCountMax 2 斷開閒置連線
  • AllowUsers adminuser@192.168.1.* 限制來源 IP
  • Banner /etc/issue.net 法律警告横幅
  • 定期審計 /var/log/secure / /var/log/auth.log

緊急救援:被鎖在外面怎麼辦?

  1. VPS 控制台 / KVM / IPMI 進入單用戶模式
  2. 掛載根分區:mount /dev/sda2 /mnt
  3. 修復 /mnt/etc/ssh/sshd_config
  4. 或暫時關閉防火牆:systemctl stop firewalld

分層防護、最小權限、自動化封鎖,讓 SSH 從「最大攻擊面」變成「最堅固堡壘」。

copyright © 萬盛學電腦網 all rights reserved