SSH 埠口 22 為暴力破解首選目標。修改預設埠口可避開 90% 以上自動化掃描。本文提供 直接修改法 與 雙埠過渡法 (零停機、防鎖死) 兩種策略,並整合防火牆與 SELinux 配置。
vim /etc/ssh/sshd_config
# 找到 #Port 22
Port 2222 # 新埠口 (建議 1024-65535 非常用埠)
# Port 22 # 註解掉舊埠
systemctl restart sshd
# 或
service sshd restart
# firewalld
firewall-cmd --add-port=2222/tcp --permanent
firewall-cmd --reload
# iptables
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
service iptables save
# ufw
ufw allow 2222/tcp
semanage port -a -t ssh_port_t -p tcp 2222
# 驗證
semanage port -l | grep ssh_port_t
ssh -p 2222 user@host
# 或 ~/.ssh/config
Host myserver
HostName 192.168.1.100
Port 2222
User admin
核心邏輯:同時監聽 22 與新埠 → 驗證新埠連線正常 → 移除 22 → 關閉防火牆 22。
vim /etc/ssh/sshd_config
Port 22
Port 2222
systemctl restart sshdssh -p 2222 user@host 確認可登入vim /etc/ssh/sshd_config
# Port 22
Port 2222
systemctl restart sshd# 安裝
dnf install fail2ban # RHEL/CentOS/Fedora
apt install fail2ban # Debian/Ubuntu
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600
findtime = 600
action = iptables-multiport[name=sshd, port="2222", protocol=tcp]
systemctl enable --now fail2ban
# /etc/ssh/sshd_config
PermitRootLogin no # 禁止 root 登入
PubkeyAuthentication yes # 僅允許金鑰認證
PasswordAuthentication no # 禁用密碼認證
PermitEmptyPasswords no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers admin deploy # 僅允許特定使用者
# AllowGroups sshusers # 或允許特定群組
# 1. 確認監聽埠
ss -tlnp | grep sshd
# 2. 測試連線
ssh -p 2222 -o ConnectTimeout=5 user@host
# 3. 檢查防火牆
firewall-cmd --list-ports
# 4. 檢查 SELinux
semanage port -l | grep ssh
# 5. 模擬暴力破解
for i in {1..5}; do ssh -p 2222 fake@host; done
# 第 4 次應被 Fail2Ban 封鎖
修改 SSH 埠口是 安全性收益最高、成本最低 的單一動作。生產環境務必採用 雙埠過渡法 避免鎖死自己。配合 金鑰認證 + Fail2Ban + 禁止 root 登入 構建纵深防禦。記住:security through obscurity (隱匿性安全) 單獨無效,但作為 第一道防線大幅降低雜訊 極其有效。
Linux C/C++ 服務端開發核心經驗總結:內存池、線程池、無鎖數據結構與協議設計實戰
Linux OOM Killer 機制深度解析與 overcommit_memory 調優
vi/vim 編輯器完全指南:從模式切換到正則替換的肌肉記憶訓練手冊
Linux 桌面環境常用配置筆記 (Ubuntu/Debian 為主)
修復 fatal error: security/pam_modules.h 缺失問題
Linux 開機流程核心知識:BIOS → MBR → Bootloader → vmlinux/initrd 兩階段解析