Vì sao cần đổi port SSH và tắt root login ngay?
Nếu bạn vừa thuê một máy chủ ảo (VPS) mới và để nguyên cấu hình mặc định, VPS của bạn đang nằm trong tầm ngắm. Các hacker không rảnh rỗi ngồi gõ từng IP, chúng sử dụng các mạng lưới botnet khổng lồ. Mục tiêu của chúng là rà quét cổng (port) 22 mặc định của dịch vụ SSH trên toàn cầu.
Chỉ trong vòng vài giờ sau khi VPS online, bạn sẽ phải hứng chịu hàng ngàn lượt thử mật khẩu trái phép. Việc thực hiện ngay 2 thay đổi bảo mật cơ bản này mang lại những lợi ích sống còn:
- 🚨 Chặn đứng Botnet: Tránh được 99% các kịch bản quét tự động (mass scanning) nhắm vào port 22 mặc định.
- 🔑 Chống Brute-force: Tắt tài khoản
rootbuộc hacker phải đoán cả tên đăng nhập lẫn mật khẩu, độ khó tăng lên hàng vạn lần. - 📉 Tiết kiệm tài nguyên: Quá trình bị scan liên tục làm CPU và RAM của VPS quá tải. Chặn đứng chúng giúp VPS chạy web mượt mà hơn.
- 🛡️ Ẩn mình hiệu quả: Chuyển SSH sang một cổng ngẫu nhiên giúp VPS “tàng hình” trước các công cụ dò quét phổ thông.
- ⛔ Bảo vệ toàn vẹn: Hạn chế tối đa rủi ro bị cài cắm mã độc, đào coin trộm hoặc biến VPS thành một phần của mạng lưới tấn công DDoS.
1. Tạo user mới có quyền sudo (Bước đệm bắt buộc)
Tóm gọn: Tuyệt đối không tắt root login trước khi tạo một user thường có quyền quản trị (sudo), nếu không bạn sẽ vĩnh viễn mất quyền điều khiển VPS.
Tài khoản root là tài khoản có quyền lực cao nhất trên hệ thống Linux. Nếu bạn vô hiệu hóa nó mà chưa có tài khoản thay thế, bạn sẽ tự khóa mình ở ngoài. Do đó, trên Ubuntu 22.04/24.04, bước đầu tiên là tạo một user mới.
Thêm user mới vào hệ thống Ubuntu
Chúng ta sẽ sử dụng lệnh adduser để tạo một tài khoản mới. Lệnh này thân thiện với người mới bắt đầu vì nó tự động tạo thư mục gốc (home directory) và thiết lập các thông tin cơ bản.
sudo adduser vsisadmin
Adding user `vsisadmin' ...
Adding new group `vsisadmin' (1001) ...
Adding new user `vsisadmin' (1001) with group `vsisadmin' ...
Creating home directory `/home/vsisadmin' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for vsisadmin
Enter the new value, or press ENTER for the default
Full Name []: VSIS Admin
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
adduser: Lệnh chuẩn trên Ubuntu để tạo user một cách tương tác.vsisadmin: Tên user mới bạn muốn tạo (bạn có thể đổi thành tên bất kỳ, viết liền không dấu).- Mật khẩu (Password): Khi nhập mật khẩu, màn hình sẽ không hiện các dấu sao
*. Bạn cứ nhập bình thường và nhấn Enter. - Thông tin bổ sung: Các thông tin như Full Name, Room Number bạn có thể bỏ qua bằng cách nhấn Enter liên tục.
Cấp quyền quản trị (sudo) cho user mới
User vừa tạo chỉ là người dùng bình thường, không thể cài đặt phần mềm hay chỉnh sửa file hệ thống. Bạn cần thêm user này vào nhóm sudo để cấp quyền quản trị.
sudo usermod -aG sudo vsisadmin
usermod: Lệnh dùng để sửa đổi thuộc tính của một user đã tồn tại.-a(append): Thêm user vào một nhóm mới mà không xóa user khỏi các nhóm hiện tại.-G(groups): Chỉ định nhóm mà user sẽ được thêm vào (ở đây là nhómsudo).
⚠️ Cảnh báo: Tuyệt đối không được quên cờ
-akhi dùng lệnhusermod -G. Nếu thiếu-a, user của bạn sẽ bị xóa sạch khỏi các nhóm cũ và gây lỗi hệ thống nghiêm trọng.
2. Thay đổi port SSH mặc định (Từ 22 sang port tùy chọn)
Tóm gọn: Chuyển dịch vụ SSH sang một port cao (từ 1024 đến 65535) giúp VPS đánh lừa các công cụ quét tự động luôn mặc định SSH nằm ở port 22.
Mọi cấu hình liên quan đến dịch vụ SSH trên Ubuntu đều nằm trong một file duy nhất có đường dẫn tuyệt đối là /etc/ssh/sshd_config. Chúng ta sẽ dùng trình soạn thảo văn bản Nano để chỉnh sửa file này.
Mở file cấu hình SSH bằng Nano
Trình soạn thảo Nano rất dễ dùng cho người mới (Beginner). Bạn cần mở file với quyền sudo để có thể lưu lại các thay đổi.
sudo nano /etc/ssh/sshd_config
Khi file được mở ra, hãy dùng phím mũi tên trên bàn phím để cuộn xuống. Bạn không thể dùng chuột để cuộn hay click trong giao diện dòng lệnh này.
Tìm và chỉnh sửa thông số Port
Trong file cấu hình, bạn hãy tìm đến dòng có chữ #Port 22. Dấu thăng # ở đầu dòng có nghĩa là dòng đó đang bị “comment” (vô hiệu hóa) và hệ thống đang dùng giá trị mặc định là 22.
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
Bạn hãy xóa dấu # đi và thay số 22 thành một con số bạn muốn. Ví dụ, chúng ta sẽ đổi thành port 55222.
Port 55222
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
- Xóa dấu
#: Bắt buộc phải xóa dấu#thì cấu hình mới có hiệu lực. - Chọn port an toàn: Hãy chọn một số ngẫu nhiên từ
1024đến65535. - Tránh xung đột: Không chọn các port phổ biến đang được dịch vụ khác dùng như
80(HTTP),443(HTTPS),3306(MySQL),21(FTP).
💡 Mẹo: Để lưu file trong Nano, bạn nhấn tổ hợp phím
Ctrl + O, sau đó nhấnEnterđể xác nhận tên file. Cuối cùng, nhấnCtrl + Xđể thoát ra ngoài màn hình dòng lệnh.
3. Vô hiệu hóa quyền đăng nhập trực tiếp của Root
Tóm gọn: Tắt PermitRootLogin chặn đứng hoàn toàn các cuộc tấn công Brute-force nhắm thẳng vào tài khoản quyền lực nhất hệ thống.
Vẫn ở trong file /etc/ssh/sshd_config mà bạn vừa mở ở bước trên. Chúng ta sẽ tiếp tục tìm cấu hình cho phép root đăng nhập và tắt nó đi.
Chỉnh sửa PermitRootLogin trong sshd_config
Sử dụng phím mũi tên cuộn xuống khu vực giữa file, bạn sẽ thấy một dòng quy định quyền đăng nhập của root. Tùy vào phiên bản Ubuntu, nó có thể hiển thị là PermitRootLogin yes hoặc PermitRootLogin prohibit-password.
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
Hãy sửa chữ yes (hoặc prohibit-password) thành no. Đảm bảo rằng không có dấu # ở đầu dòng.
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
PermitRootLogin no: Lệnh này nói với dịch vụ SSH rằng: Bất kể ai nhập đúng mật khẩu của root, hãy từ chối kết nối ngay lập tức.- Bảo mật kép: Giờ đây, hacker muốn phá hoại VPS của bạn thì phải đoán đúng tên user mới (vsisadmin) VÀ đoán đúng mật khẩu của user đó.
Kiểm tra cú pháp file cấu hình
Trước khi áp dụng thay đổi, bạn phải kiểm tra xem mình có gõ sai chính tả hay dư dấu cách nào trong file cấu hình không. Nếu file cấu hình lỗi, dịch vụ SSH sẽ sập và bạn sẽ mất kết nối.
sudo sshd -t
sshd: Tên của dịch vụ SSH Daemon (chạy ngầm).-t(test mode): Yêu cầu hệ thống kiểm tra tính hợp lệ của file cấu hình.- Output trống: Nếu sau khi chạy lệnh, màn hình không trả về bất kỳ thông báo nào (chỉ hiện lại dấu nhắc lệnh trống), tức là cấu hình của bạn hoàn toàn chính xác.
⚠️ Cảnh báo: Luôn luôn chạy lệnh
sshd -ttrước khi khởi động lại SSH. Nếu lệnh này báo lỗi (ví dụ: “Bad configuration option”), bạn phải mở lại file Nano để sửa ngay lập tức.
4. Cấu hình Firewall (UFW) để cho phép port mới
Tóm gọn: Nếu đổi port SSH thành công mà quên mở port đó trên tường lửa UFW (Uncomplicated Firewall), tường lửa sẽ chặn bạn ở ngoài khi bạn cố gắng đăng nhập lại.
Ubuntu thường đi kèm với UFW. Nếu UFW đang hoạt động, nó sẽ chặn mọi kết nối đến các port lạ. Bạn phải chủ động “đục lỗ” trên tường lửa cho port 55222 vừa tạo.
Mở port SSH mới trên UFW
Sử dụng lệnh ufw allow để cho phép lưu lượng mạng đi qua port mới. Dịch vụ SSH sử dụng giao thức TCP.
sudo ufw allow 55222/tcp
Rule added
Rule added (v6)
ufw: Gọi công cụ quản lý tường lửa mặc định của Ubuntu.allow: Hành động cho phép kết nối đi qua.55222/tcp: Chỉ định rõ số port và giao thức TCP. Việc ghi rõ/tcpgiúp tường lửa hoạt động tối ưu hơn là mở cả UDP không cần thiết.
Xóa rule port 22 cũ và Reload SSH
Sau khi đã mở port mới, bạn nên đóng port 22 cũ lại để tránh rò rỉ bảo mật. Sau đó, khởi động lại dịch vụ SSH để áp dụng toàn bộ các thay đổi từ nãy đến giờ.
sudo ufw delete allow 22/tcp
sudo systemctl restart ssh
delete allow 22/tcp: Xóa bỏ luật cho phép truy cập port 22 trên tường lửa.systemctl restart ssh: Khởi động lại dịch vụ SSH. Kể từ giây phút lệnh này chạy xong, port 22 chính thức bị đóng và port 55222 bắt đầu hoạt động.
💡 Mẹo: Đừng vội tắt cửa sổ Terminal hiện tại! Hãy giữ nguyên nó, mở một tab Terminal mới (hoặc mở lại phần mềm PuTTY/MobaXterm) để test đăng nhập. Nếu có lỗi không đăng nhập được, bạn vẫn còn tab cũ đang có quyền root để sửa sai.
5. Kiểm tra và xác nhận thành quả bảo mật
Tóm gọn: Xác minh lại quá trình đăng nhập để đảm bảo tài khoản root đã bị chặn hoàn toàn và user mới hoạt động trơn tru trên port tùy chỉnh.
Bây giờ là lúc kiểm tra xem 2 thay đổi bảo mật của chúng ta có thực sự hoạt động hay không. Hãy mở một tab Terminal mới trên máy tính của bạn.
Test đăng nhập bằng user mới
Hãy thử kết nối vào VPS bằng user vsisadmin và port 55222.
ssh -p 55222 [email protected]
ssh: Lệnh khởi tạo kết nối.-p 55222: Cờ-p(viết thường) dùng để chỉ định port. Nếu không có cờ này, máy tính sẽ tự động tìm port 22 và bị tường lửa chặn lại.[email protected]: Cú phápuser@IP_VPS. Hãy thay dải số IP bằng IP thực tế của bạn.- Kết quả mong đợi: Hệ thống sẽ hỏi mật khẩu của user
vsisadmin. Nhập đúng mật khẩu, bạn sẽ vào được bên trong VPS.
Test đăng nhập bằng root (Phải bị từ chối)
Tiếp theo, hãy thử đóng vai hacker và cố gắng đăng nhập bằng tài khoản root qua port mới.
ssh -p 55222 [email protected]
[email protected]'s password:
Permission denied, please try again.
- Dù bạn có nhập đúng 100% mật khẩu của root, hệ thống vẫn sẽ trả về lỗi
Permission denied. - Điều này chứng tỏ cấu hình
PermitRootLogin nođã hoạt động hoàn hảo. VPS của bạn giờ đây đã an toàn hơn 99% so với lúc mới mua.
Pitfalls & lỗi thường gặp
Trong quá trình thao tác, người mới (Beginner) rất dễ gặp phải một số lỗi dẫn đến việc mất kết nối với VPS. Dưới đây là các lỗi phổ biến nhất và cách khắc phục nhanh chóng.
1. Lỗi: Bị “Connection refused” hoặc “Timeout” sau khi đổi port
* Nguyên nhân: Bạn đã đổi port trong file /etc/ssh/sshd_config và restart SSH, nhưng lại quên chạy lệnh ufw allow [port_mới]. Tường lửa đã chặn bạn ở ngoài.
* Cách fix: Đăng nhập vào trang quản trị của nhà cung cấp VPS, tìm tính năng VNC Console hoặc Web Console. Đây là màn hình điều khiển trực tiếp không qua mạng SSH. Đăng nhập bằng root và gõ lệnh ufw allow 55222/tcp là xong.
2. Lỗi: User mới không thể chạy lệnh sudo
* Nguyên nhân: Khi tạo user, bạn quên chạy lệnh usermod -aG sudo [tên_user]. Khi gõ lệnh sudo apt update, hệ thống sẽ báo lỗi “user is not in the sudoers file”.
* Cách fix: Nếu bạn vẫn còn giữ tab Terminal cũ đăng nhập bằng root, hãy quay lại đó và chạy lệnh usermod. Nếu đã lỡ tắt, bạn lại phải dùng VNC Console để login bằng root và cấp quyền lại.
3. Lỗi: Dịch vụ SSH không khởi động lại được
* Nguyên nhân: Màn hình báo lỗi “Job for ssh.service failed because the control process exited with error code”. Lỗi này 100% do bạn gõ sai cú pháp trong file cấu hình (ví dụ: gõ nhầm Pỏt 55222 thay vì Port 55222).
* Cách fix: Chạy lệnh sudo sshd -t. Hệ thống sẽ chỉ chính xác bạn đang gõ sai ở dòng số mấy. Mở lại file bằng Nano, sửa lại cho đúng và restart lại dịch vụ.
4. Lỗi: Cảnh báo “WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”
* Nguyên nhân: Khi bạn đổi port hoặc cài lại hệ điều hành VPS, khóa nhận diện (fingerprint) của máy chủ bị thay đổi. Máy tính cá nhân của bạn nghi ngờ đây là một cuộc tấn công giả mạo (Man-in-the-middle).
* Cách fix: Chạy lệnh xóa khóa cũ trên máy tính cá nhân của bạn: ssh-keygen -R [IP_CUA_VPS]:[Port_mới]. Sau đó kết nối lại bình thường.
Key takeaways
Để tóm tắt lại toàn bộ quá trình bảo mật SSH cơ bản, bạn chỉ cần nhớ 5 nguyên tắc cốt lõi sau:
- Tạo user sudo trước: Luôn tạo một tài khoản người dùng bình thường và cấp quyền
sudotrước khi đụng đến tài khoản root. - Đổi port SSH: Chuyển từ port 22 sang một port ngẫu nhiên (1024 – 65535) để lẩn tránh các công cụ quét tự động của botnet.
- Tắt Root Login: Chuyển
PermitRootLoginthànhnođể chặn đứng hoàn toàn các cuộc tấn công Brute-force vào tài khoản quản trị cao nhất. - Kiểm tra cú pháp: Luôn sử dụng lệnh
sshd -tđể rà soát lỗi chính tả trước khi khởi động lại dịch vụ SSH. - Mở tường lửa: Đừng quên “đục lỗ” trên UFW cho port mới, nếu không bạn sẽ tự khóa chính mình khỏi máy chủ.
FAQ
Đổi port SSH có làm chậm tốc độ mạng của VPS không?
Hoàn toàn không. Việc đổi port chỉ giống như bạn chuyển cửa ra vào từ mặt tiền ra phía sau nhà. Nó không ảnh hưởng đến băng thông, tốc độ truyền tải dữ liệu hay hiệu suất xử lý của VPS.
Làm sao để biết VPS của tôi đang bị scan port 22?
Bạn có thể đọc file nhật ký xác thực của hệ thống bằng lệnh sudo cat /var/log/auth.log | grep "Failed password". Nếu thấy hàng dài các dòng log báo sai mật khẩu từ các IP lạ, đó chính là botnet đang scan VPS của bạn.
Có cần khởi động lại (Reboot) cả VPS sau khi đổi port không?
Không cần thiết. Bạn chỉ cần khởi động lại riêng dịch vụ SSH bằng lệnh sudo systemctl restart ssh là cấu hình mới đã được áp dụng ngay lập tức. Khởi động lại cả VPS sẽ làm gián đoạn các dịch vụ web đang chạy.
Tôi lỡ tắt root login mà chưa tạo user sudo, phải làm sao?
Bạn không thể truy cập qua SSH được nữa. Cách duy nhất là đăng nhập vào trang quản trị của nhà cung cấp VPS, mở tính năng VNC Console. Tại đây bạn đăng nhập bằng root, tạo user sudo mới hoặc tạm thời bật lại PermitRootLogin yes.
Ngoài đổi port, còn cách nào bảo mật SSH tốt hơn không?
Có. Đổi port và tắt root login là bước cơ bản (giảm 99% tấn công rác). Để đạt bảo mật tuyệt đối (1% còn lại), bạn nên thiết lập đăng nhập bằng SSH Key (khóa công khai/bí mật) và vô hiệu hóa hoàn toàn việc đăng nhập bằng mật khẩu (PasswordAuthentication no).
Cần VPS chạy bảo mật SSH?
Bạn đang tìm kiếm một máy chủ ảo mạnh mẽ, ổn định và toàn quyền quản trị (Full Root Access) để thực hành các kỹ năng bảo mật Linux?
Hãy tham khảo ngay các gói Cloud VPS tốc độ cao tại vsis.net/vps. Dễ dàng triển khai chỉ trong 60 giây, hỗ trợ đầy đủ các hệ điều hành Ubuntu/CentOS/Debian mới nhất!



