Secure Ubuntu Server bằng SSH Key, tắt Root Login, đổi cổng SSH an toàn
Một VPS Ubuntu mới cài thường “mở cửa” khá rộng: SSH chạy cổng 22, user root có thể đăng nhập, mật khẩu có thể bị brute-force. Chỉ vài phút sau khi online, server đã có thể nhận hàng trăm req dò mật khẩu từ bot.
Tin tốt: chỉ cần cấu hình đúng SSH, bạn giảm mạnh rủi ro. Bài này hướng dẫn 3 việc cốt lõi: dùng SSH key, tắt root login, đổi cổng SSH an toàn. Mục tiêu: bảo mật hơn, vẫn tránh tự khóa mình khỏi server.
Vì sao cần harden SSH?
SSH là cổng quản trị chính của server. Ai vào được SSH gần như kiểm soát toàn bộ máy. Các rủi ro phổ biến:
– Brute-force password: bot thử user/pass liên tục.
– Root login trực tiếp: nếu root bị lộ pass/key → mất toàn quyền ngay.
– Cổng 22 bị scan mặc định: dễ nằm trong danh sách tấn công tự động.
– Cấu hình sai firewall: đổi cổng xong tự khóa chính mình.
Bảo mật SSH không phải “ẩn mình tuyệt đối”, mà là giảm bề mặt tấn công, bắt buộc xác thực mạnh, giới hạn quyền, có đường rollback.
Nguyên tắc an toàn trước khi chỉnh SSH
Trước khi sửa /etc/ssh/sshd_config, làm đúng các bước sau:
– Giữ session SSH hiện tại mở. Không logout.
– Mở thêm 1 terminal test login sau mỗi thay đổi.
– Backup config trước khi sửa.
– Kiểm tra syntax bằng sshd -t.
– Mở firewall trước, rồi mới đổi SSH port.
– Không restart bừa nếu chưa test config.
Cảnh báo: bật firewall sai rule có thể khóa truy cập. Với VPS cloud, kiểm tra thêm Security Group / Cloud Firewall tại nhà cung cấp.
Nếu dùng cloud như AWS, GCP, Azure, Hetzner, DigitalOcean:
– Mở inbound TCP port mới.
– Giới hạn theo IP cá nhân nếu có thể.
– Không chỉ sửa UFW rồi quên firewall tầng cloud.
Test config:
sudo sshd -t
Reload:
sudo systemctl reload ssh
Test port mới từ terminal khác:
ssh -p 24222 deploy@SERVER_IP
Nếu thành công, bỏ port 22:
Port 24222
Sau đó reload:
sudo sshd -t
sudo systemctl reload ssh
Đóng port 22 trên UFW:
sudo ufw delete allow 22/tcp
Tối ưu SSH config thêm
Một số cấu hình hữu ích:
LoginGraceTime 30
MaxAuthTries 3
MaxSessions 3
X11Forwarding no
AllowUsers deploy
Ý nghĩa:
– LoginGraceTime 30 → giới hạn thời gian login.
– MaxAuthTries 3 → giảm lần thử sai.
– MaxSessions 3 → hạn chế session song song.
– X11Forwarding no → tắt tính năng ít dùng.
– AllowUsers deploy → chỉ user được chỉ định login SSH.
Nếu có nhiều user:
AllowUsers deploy admin
Cẩn thận: cấu hình sai AllowUsers → tự khóa login.
Dùng SSH config trên máy local
Để khỏi gõ port/user dài, tạo file:
nano ~/.ssh/config
Thêm:
Host prod-server
HostName SERVER_IP
User deploy
Port 24222
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
Kết nối:
ssh prod-server
Lợi ích:
– Dễ dùng.
– Ít sai port.
– Phù hợp automation, deploy script.
– Sai key.
– Sai user.
– Sai quyền thư mục .ssh.
– Public key chưa có trong authorized_keys.
Fix:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Trên server cần đúng owner:
sudo chown -R deploy:deploy /home/deploy/.ssh
Connection refused
Có thể:
– SSH service chưa listen port mới.
– Firewall chưa mở.
– Cloud firewall chưa mở.
– Port sai.
Debug:
sudo ss -tulpn | grep ssh
sudo systemctl status ssh
sudo ufw status verbose
Tự khóa khỏi server
Nếu còn session cũ → rollback ngay.
Nếu mất hết session → dùng console/VNC/rescue mode từ nhà cung cấp VPS.
Kết luận thực tế
Secure SSH không phức tạp, nhưng cần làm đúng thứ tự. Công thức an toàn:
1. Tạo user sudo.
2. Cài SSH key.
3. Test key login.
4. Tắt root login.
5. Tắt password auth.
6. Mở firewall port mới.
7. Đổi SSH port.
8. Test terminal mới.
9. Đóng port 22.
10. Thêm Fail2ban.
Kết quả: server Ubuntu giảm mạnh rủi ro brute-force, không còn root login trực tiếp, SSH chỉ nhận key, cổng mặc định không còn phơi ra. Đây là baseline nên làm ngay sau khi tạo VPS, trước khi deploy app, DB, Docker, Nginx hay bất kỳ workload production nào.