Vì sao SSH là “cửa chính” mà kẻ tấn công luôn thử trước?
Bạn vừa dựng xong một Ubuntu server: VPS mới mua, máy chủ thử nghiệm cho app, hay một instance nội bộ để học DevOps. Mọi thứ có vẻ đơn giản cho đến khi bạn nhận ra một sự thật: chỉ cần mở SSH ra Internet, server của bạn gần như chắc chắn sẽ bị bot quét trong vài phút đầu tiên.
Với người mới, “secure server” thường nghe rất to tát, như thể cần firewall phức tạp, IDS/IPS, hay hàng tá công cụ enterprise. Nhưng thực tế, bước bảo vệ hiệu quả nhất thường bắt đầu từ SSH — dịch vụ đăng nhập từ xa quan trọng nhất trên server Linux. Nếu SSH cấu hình hớ hênh, kẻ xấu có thể brute-force mật khẩu, thử user phổ biến như root, admin, ubuntu, hoặc tận dụng thói quen dùng password yếu để chiếm quyền truy cập.
Tin tốt là: bạn không cần trở thành chuyên gia bảo mật để làm chắc phần này. Chỉ với vài thay đổi đúng chỗ, bạn có thể giảm mạnh nguy cơ truy cập trái phép. Bài viết này sẽ hướng dẫn cách cấu hình SSH an toàn trên Ubuntu theo cách thực tế, dễ áp dụng cho người mới.
Hiểu đúng mục tiêu: không phải “ẩn mình”, mà là giảm bề mặt tấn công
Nhiều người mới nghĩ rằng đổi port SSH từ 22 sang port khác là đủ. Đây là một bước có ích, nhưng không phải “áo giáp thần kỳ”. Bot hiện nay quét rất rộng, không chỉ port mặc định. Mục tiêu đúng hơn là:
– Chặn đăng nhập bằng mật khẩu yếu
– Ngăn đăng nhập trực tiếp bằng root
– Chỉ cho phép user cần thiết truy cập
– Giảm số lần thử đăng nhập thất bại
– Có cơ chế phát hiện và chặn bot brute-force
Nói cách khác, bạn không cần làm server “vô hình”, mà cần làm cho việc tấn công trở nên khó, tốn công, và dễ bị chặn.
Bước 1: Tạo user riêng và tránh dùng root để đăng nhập SSH
Một sai lầm phổ biến là đăng nhập trực tiếp bằng root. Đây là tài khoản quyền lực nhất hệ thống, nên cũng là mục tiêu đầu tiên của bot. Nếu root bị lộ hoặc bị brute-force thành công, kẻ tấn công có toàn quyền trên máy.
Cách an toàn hơn là:
– Tạo một user thường
– Cấp quyền sudo cho user đó
– Dùng user này để SSH vào server
– Tắt đăng nhập SSH trực tiếp bằng root
Sau đó, hãy chắc chắn rằng bạn có thể đăng nhập bằng user mới trước khi vô hiệu hóa root. Đây là nguyên tắc sống còn: không khóa cửa trước khi thử chìa khóa mới.
Bước 2: Dùng SSH key thay vì mật khẩu
Đây là thay đổi quan trọng nhất.
Đăng nhập bằng mật khẩu luôn có rủi ro: người dùng đặt password yếu, dùng lại password cũ, hoặc bị brute-force. Trong khi đó, SSH key sử dụng cặp khóa bất đối xứng, an toàn hơn rất nhiều nếu được quản lý đúng.
Thiết lập này buộc bạn phải đăng nhập bằng user thường rồi dùng sudo khi cần quyền admin.
Tắt xác thực bằng mật khẩu
Sau khi xác nhận SSH key hoạt động ổn định, hãy tắt password login:
PasswordAuthentication no
ChallengeResponseAuthentication no
Điều này gần như loại bỏ hẳn kiểu tấn công brute-force mật khẩu.
Chỉ cho phép user cần thiết
Nếu server chỉ có 1-2 người quản trị, bạn nên giới hạn rõ:
AllowUsers tenuser
Nếu có nhiều user:
AllowUsers tenuser adminops deploy
Nhờ đó, các tài khoản lạ hoặc user hệ thống sẽ không thể dùng SSH để đăng nhập.
Đổi port SSH nếu muốn giảm nhiễu log
Bạn có thể đổi từ port mặc định 22 sang port khác, ví dụ:
Port 2222
Việc này không thay thế bảo mật thực sự, nhưng giúp giảm đáng kể lượng bot tấn công ngẫu nhiên vào port mặc định, đồng thời làm log bớt ồn hơn.
Giới hạn số lần thử đăng nhập
MaxAuthTries 3
LoginGraceTime 30
Thiết lập này khiến việc thử liên tục trở nên khó hơn.
Bước 4: Kiểm tra cấu hình trước khi restart SSH
Đây là bước người mới rất hay bỏ qua. Nếu cấu hình sai rồi restart SSH, bạn có thể tự khóa mình khỏi server.
Hãy kiểm tra syntax trước:
sudo sshd -t
Nếu không có lỗi, mới restart dịch vụ:
sudo systemctl restart ssh
Hoặc trên một số hệ thống:
sudo systemctl restart sshd
Mẹo an toàn
Đừng đóng phiên SSH hiện tại ngay. Hãy mở một terminal mới và thử đăng nhập lại bằng cấu hình mới. Nếu thành công, lúc đó mới yên tâm thoát phiên cũ.
Bước 5: Bật firewall để chỉ mở đúng cổng cần dùng
SSH an toàn hơn khi đi cùng firewall. Trên Ubuntu, công cụ dễ dùng nhất là UFW.
Nếu bạn vẫn dùng port 22:
sudo ufw allow 22/tcp
sudo ufw enable
Nếu đổi sang 2222:
sudo ufw allow 2222/tcp
sudo ufw enable
Sau đó kiểm tra:
sudo ufw status
Nếu server chỉ phục vụ web, bạn thường chỉ cần mở:
– SSH port của bạn
– 80/tcp
– 443/tcp
Nguyên tắc rất đơn giản: không cần thì không mở.
Bước 6: Cài Fail2ban để chặn brute-force tự động
Ngay cả khi đã đổi port và dùng SSH key, việc cài thêm fail2ban vẫn rất đáng làm. Công cụ này theo dõi log và tự động chặn IP có quá nhiều lần đăng nhập thất bại.
Fail2ban không thay thế SSH key, nhưng là lớp phòng thủ tốt trước các bot quét diện rộng.
Những sai lầm người mới hay gặp
Tắt password quá sớm
Nếu chưa cấu hình SSH key xong mà đã đặt PasswordAuthentication no, bạn có thể bị khóa ngoài server. Luôn test trước bằng một phiên đăng nhập mới.
Đổi port nhưng quên mở firewall
Bạn đổi SSH sang 2222, nhưng UFW chỉ cho phép 22. Kết quả là mất kết nối ngay sau restart.
Chỉ dựa vào đổi port
Đổi port chỉ giúp giảm “tiếng ồn”, không ngăn được kẻ tấn công có chủ đích. Nếu vẫn cho phép đăng nhập bằng mật khẩu yếu, rủi ro vẫn cao.
Dùng chung một tài khoản admin cho nhiều người
Việc này làm khó truy vết và tăng rủi ro rò rỉ. Tốt hơn là mỗi người một user, một SSH key riêng.
Một cấu hình tối thiểu, hợp lý cho người mới
Nếu bạn muốn một checklist đơn giản và thực tế, hãy bắt đầu với bộ sau:
– Tạo user riêng có quyền sudo
– Tắt đăng nhập SSH bằng root
– Bật đăng nhập bằng SSH key
– Tắt xác thực bằng mật khẩu
– Giới hạn user được phép SSH
– Mở đúng port bằng UFW
– Cài Fail2ban để chặn brute-force
Đây không phải mức hardening tối đa, nhưng đã đủ tốt cho phần lớn VPS cá nhân, server web nhỏ, máy thử nghiệm, và môi trường học tập.
Kết luận: bảo mật tốt là bảo mật làm được và duy trì được
Với người mới, sai lầm lớn nhất không phải là “chưa biết hết mọi kỹ thuật”, mà là hoặc bỏ mặc hoàn toàn, hoặc cấu hình quá tay rồi tự khóa mình khỏi server. Bảo mật hiệu quả nên bắt đầu từ những thay đổi rõ ràng, dễ kiểm soát, và có thể kiểm tra được.
SSH là nơi bạn nên ưu tiên đầu tiên. Khi bạn bỏ đăng nhập root, dùng SSH key, tắt password login, giới hạn user, bật firewall và thêm Fail2ban, bạn đã chặn được phần lớn các nỗ lực truy cập trái phép phổ biến trên Internet.
Hãy nhớ: secure server không phải là thiết lập một lần rồi quên. Sau khi cấu hình xong, bạn nên định kỳ kiểm tra log đăng nhập, cập nhật hệ thống, thu hồi key cũ, và rà soát lại những ai còn quyền truy cập. Chỉ vài thói quen nhỏ như vậy cũng tạo ra khác biệt rất lớn về an toàn lâu dài.
Nếu bạn mới bắt đầu, đừng cố làm mọi thứ cùng lúc. Chỉ cần làm chắc SSH trước — đó đã là một bước bảo vệ đáng giá hơn rất nhiều so với vẻ ngoài “server đang chạy ổn”.