Cách bảo mật SSH cho VPS Linux
VPS có IP công khai sẽ nhận các lần dò đăng nhập tự động chỉ vài phút sau khi lên mạng. Các bước dưới đây giúp SSH khó bị tấn công hơn nhiều. Bài viết dành cho Ubuntu hoặc Debian; nếu chưa có máy chủ, bạn có thể thuê VPS Linux và bắt đầu từ một bản cài sạch. Hãy giữ phiên SSH hiện tại cho đến khi bạn thử xong cấu hình mới ở một cửa sổ thứ hai.
1. Tạo người dùng thường có quyền sudo
adduser deploy
usermod -aG sudo deploy2. Dùng khoá SSH thay cho mật khẩu
Trên máy tính của bạn:
ssh-keygen -t ed25519 -C "ban@example.com"
ssh-copy-id deploy@IP_MAY_CHU
ssh deploy@IP_MAY_CHUĐăng nhập thử một lần bằng khoá để chắc chắn nó hoạt động trước khi tắt mật khẩu.
3. Tắt đăng nhập bằng mật khẩu và bằng root
Tạo /etc/ssh/sshd_config.d/99-hardening.conf:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3Kiểm tra cú pháp rồi nạp lại dịch vụ. Tên dịch vụ là ssh trên Ubuntu và Debian, sshd trên hệ RHEL:
sudo sshd -t && sudo systemctl reload sshMở một terminal thứ hai và đăng nhập lại. Chỉ khi đó mới đóng phiên cũ.
4. Bật firewall
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verboseChỉ mở những cổng cần thiết, ví dụ 80 và 443 cho máy chủ web. Bạn cũng có thể giới hạn SSH chỉ cho IP của mình bằng quy tắc firewall trong bảng điều khiển cloud.
5. Chặn đăng nhập sai lặp lại bằng Fail2ban
sudo apt install -y fail2banTạo /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1hsudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd6. Tự động cài bản vá bảo mật
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades7. Bổ sung tuỳ chọn
- Đổi cổng SSH giảm bớt log rác nhưng tự nó không phải biện pháp bảo mật.
- Đặt passphrase cho khoá riêng và lưu một bản sao ở nơi an toàn.
- Xem lịch sử đăng nhập bằng
lastvàsudo journalctl -u ssh --since today. - Chụp snapshot sau khi cấu hình xong để có thể khôi phục về trạng thái sạch.
Nếu bị khoá ngoài, hãy dùng console trên trình duyệt trong bảng điều khiển cloud để đăng nhập và sửa cấu hình. Bài chống DDoS cho VPS nói về lớp bảo vệ tiếp theo.
Câu hỏi thường gặp
Tắt đăng nhập root có an toàn không?
An toàn, nếu bạn đã tạo user sudo và thử khoá của nó hoạt động. Bạn vẫn chạy được lệnh quản trị bằng sudo.
Chỉ dùng khoá thì có cần Fail2ban không?
Không bắt buộc. Khi đã tắt mật khẩu, dò mật khẩu không thể thành công, nhưng Fail2ban giúp giảm log rác và tải.
Nếu mất khoá SSH thì sao?
Dùng console trong bảng điều khiển cloud để đăng nhập, thêm khoá công khai mới vào ~/.ssh/authorized_keys và xoá khoá cũ.