開場:你部 Linux Server 真係安全咩?
同你吹下水,呢排好多客仔問我:「小編,我開咗部 VPS 放咗個 website 上去,咁係咪就搞掂?」你話呢?就咁 default setting 放出街,等於打開大門叫駭客入嚟飲茶啦!
👉 延伸閱讀:Linux Server 安全加固 6 步搞掂 — Defense in Depth 實戰指南
今日同大家探討下 Linux Server SSH 安全加固嘅最佳實踐,由基本到進階,step-by-step 教你鎖實道門。就算你係新手都好,跟住做就一定安心好多。
Step 1:唔好用 root 直接 login
呢個係基本中嘅基本。Default 好多 VPS 都開咗 root SSH login,即係全世界都可以撞你個 root password。我哋第一步就熄咗佢。
首先,create 一個新 user(假設叫 admin):
sudo adduser admin
sudo usermod -aG sudo admin
確認新 user 可以 sudo 之後,edit SSH config:
sudo nano /etc/ssh/sshd_config
搵到 PermitRootLogin 呢行,改做:
PermitRootLogin no
然後 reload SSH:
sudo systemctl reload sshd
記住!改完唔好 logout 住,開多個 terminal 試咗新 user login 到先,如果唔係 lock 死自己就大鑊。
Step 2:換 port + 限制 IP
Default port 22 係最多人掃嘅 target,換個 port 雖然唔係萬能,但至少擋到大量 automated scan。
sudo nano /etc/ssh/sshd_config
# 改成你鐘意嘅 port,例如 2222
Port 2222
更好嘅做法係用 firewall(例如 ufw)限制只允許特定 IP access:
sudo ufw allow from 203.0.113.0/24 to any port 2222 proto tcp
sudo ufw deny 2222/tcp
sudo ufw enable
如果你係用 AWS / GCP / Azure,更加要用 Security Group 去 restrict inbound SSH,呢個係雲端 defense-in-depth 嘅基本操作。
Step 3:SSH Key Authentication — 唔好用 password!
Password 有幾危險?撞得中、phish 到、keylogger 錄到。SSH Key 係最有效嘅第一道防線。
喺你本地機 generate key:
ssh-keygen -t ed25519 -C "your_email@example.com"
然後 copy public key 去 server:
ssh-copy-id -p 2222 admin@your-server-ip
確認 key login 成功之後,熄咗 password authentication:
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
ChallengeResponseAuthentication no
再 reload SSH。由呢一刻開始,只有揸住 private key 嘅你先入到 server。
Step 4:安裝 Fail2Ban — 自動封鎖可疑 IP
Fail2Ban 係一個必須有嘅 tool,佢會 monitor log file,發現有人不斷 fail login 就自動加 firewall rule ban 佢一段時間。
sudo apt install fail2ban -y # Debian/Ubuntu
sudo dnf install fail2ban -y # RHEL/Rocky/Alma
Create 一個 local config:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
重點設定:
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600
意思係:600 秒內 fail 3 次就 ban 1 個鐘。你可以 set 得再 aggressive 啲都得。
sudo systemctl enable fail2ban --now
sudo fail2ban-client status sshd
Step 5:進階玩法 — 2FA + Audit Logging
想再 secure 啲?加埋 Two-Factor Authentication(TOTP):
sudo apt install libpam-google-authenticator
google-authenticator # 跟 prompt 做,scan QR code
Edit PAM config:
sudo nano /etc/pam.d/sshd
# 加呢行:
auth required pam_google_authenticator.so
Edit sshd_config:
ChallengeResponseAuthentication yes
而家每次 SSH login 都要入 verification code,就算 key 俾人偷咗都入唔到嚟。
另外,記得 enable auditd 記錄所有 privilege escalation:
sudo apt install auditd
sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config_change
sudo auditctl -a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands
總結
以上 5 個 step,由 basic 到 advanced,做齊基本上你部 Linux server 已經去到「唔易攻」嘅 level。記住 security 係 journey 唔係 destination,定期 check log、定期 update package、定期 review config,咁先係真正嘅 best practice。
🔗 參考資料:OpenSSH 官方文件
有冇邊個 step 你未做?而家就好去搞咗佢!下次再同大家吹過其他 security 話題,bye~👋
#IT教學 #技術分享 #Server #Linux #SSH



