Cách đổi port mặc định (22) để tăng cường bảo mật cho VPS

Tại sao VPS của bạn có hàng nghìn lần <code>Failed password</code> dù bạn chẳng làm gì?

Đây là các bot tự động trên Internet liên tục quét những địa chỉ IP đang mở port 22 và thử đăng nhập bằng các tài khoản, mật khẩu phổ biến.

Vì vậy, đổi port SSH mặc định 22 sang một port khác là cách đơn giản để giảm đáng kể lượng truy cập dò quét và các log nhiễu trên VPS. Tuy nhiên, thao tác này cần thực hiện đúng thứ tự. Chỉ cần restart SSH trước khi mở port mới trên firewall, hoặc đóng phiên SSH hiện tại quá sớm, bạn hoàn toàn có thể tự khóa mình khỏi VPS.

Trong bài viết này, chúng ta sẽ đi từng bước để đổi port SSH trên VPS Linux an toàn, từ chỉnh file cấu hình, mở firewall, restart SSH cho đến kiểm tra lại kết nối trước khi đóng phiên cũ nhé!

Vì sao nên đổi Port SSH mặc định (22)?

Các bot quét mạng thường không tấn công có chủ đích vào một server cụ thể. Chúng sử dụng công cụ để quét toàn bộ các dải IP public, tìm những server đang mở port 22, tức port SSH mặc định trên các hệ điều hành Linux, sau đó thử hàng loạt cặp username/password phổ biến như root/123456, admin/admin… theo kiểu brute-force.

VPS của bạn vì thế chỉ là một trong hàng triệu IP có thể bị quét ngẫu nhiên mỗi ngày.

Đổi port SSH sang một số khác không phải là một “bức tường thép” có thể bảo vệ VPS tuyệt đối. Tuy nhiên, cách này giúp VPS của bạn không còn nằm trong danh sách “port 22 đang mở” mà phần lớn bot dò quét theo mặc định. Nhờ đó, lượng log nhiễu có thể giảm đáng kể và bạn cũng dễ nhận ra một lần đăng nhập bất thường thực sự hơn, thay vì phải lọc qua hàng nghìn dòng log mỗi ngày.

Nếu muốn biết VPS hiện tại đã từng bị quét hoặc dò mật khẩu đến mức nào, bạn có thể tham khảo hướng dẫn Cách kiểm tra lịch sử VPS bị scan pass hoặc bị hack. Bài viết này cũng đề cập đến việc đổi port và đổi username mặc định như hai biện pháp giúp giảm rủi ro rõ rệt.

Trước khi bắt đầu đổi port, có một điểm bạn cần nhớ. Sau khi đổi xong, mọi lệnh SSH về sau đều phải chỉ định rõ port mới bằng cờ -p. Mặc định, lệnh ssh luôn thử kết nối đến port 22.

Quên chỉ định port mới là một trong những lý do phổ biến khiến người mới đổi port gặp lỗi “Connection refused” hoặc “Connection timed out” ngay ở lần đăng nhập tiếp theo. VPS không nhất thiết bị lỗi, mà đơn giản là bạn đã quên thêm -p <port> khi kết nối.

Cách đổi Port SSH trên VPS Linux

Việc đổi port 22 cho VPS Linux gồm 4 bước. Không chỉ nội dung từng bước mà thứ tự thực hiện cũng rất quan trọng. Đặc biệt, nếu đảo bước 2 và bước 3, bạn có thể tự khóa mình khỏi VPS. Chi tiết như sau.

Bước 1 – Sửa file cấu hình SSH

Mở file /etc/ssh/sshd_config bằng một trình soạn thảo bất kỳ như nano hoặc vi.

Tìm dòng Port 22. Nếu dòng này có dấu # ở đầu thì có nghĩa là dòng đang được comment và SSH vẫn sử dụng giá trị mặc định là 22.

Xóa dấu # nếu có, sau đó đổi số 22 thành port bạn muốn sử dụng.

Nên chọn một port ngẫu nhiên trong khoảng 1024-65535 và tránh những port quen thuộc khác như 3306, 8080, 8443… nếu chúng đang được sử dụng cho dịch vụ khác trên cùng VPS.

Bước 2 – Mở port mới trên firewall trước khi restart SSH

Đây là bước rất dễ bị bỏ qua và cũng là lỗi phổ biến nhất trong toàn bộ quá trình đổi port SSH.

Nếu bạn restart SSH ngay sau bước 1 mà chưa mở port mới trên firewall, service SSH sẽ chuyển sang lắng nghe ở port mới nhưng firewall vẫn chặn port đó. Kết quả là bạn không thể SSH vào VPS nữa, kể cả khi đã nhập đúng port.

Khi đó, bạn có thể phải nhờ nhà cung cấp hỗ trợ mở console VNC/KVM để truy cập và sửa lại cấu hình thủ công.

Vì vậy, hãy luôn mở port mới trên firewall trước, chưa vội restart SSH.

Dưới đây là lệnh mở port tương ứng với một số firewall phổ biến. Thay 2222 bằng port mà bạn đã chọn ở bước 1:

sudo ufw allow 2222/tcp

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

Nếu VPS đang được thuê từ các nhà cung cấp cloud như AWS, Google Cloud, Vultr, DigitalOcean…, ngoài firewall bên trong hệ điều hành còn có thêm một lớp Security Group/Firewall Rule được quản lý từ control panel của nhà cung cấp.

Khi đó, bạn cần mở port mới ở cả hai nơi. Chỉ cần thiếu một trong hai lớp, kết nối vẫn có thể bị chặn.

Nếu đang sử dụng CSF làm firewall chính, bạn có thể tham khảo thêm Cấu hình nâng cao cho CSF để bảo vệ VPS để biết cách khai báo port đúng trong CSF.

Bước 3 – Restart SSH service để áp dụng port mới

Sau khi đã mở port mới trên firewall, tiến hành restart SSH service để áp dụng cấu hình.

Trên CentOS/RHEL/AlmaLinux, sử dụng:

systemctl restart sshd

Trên Ubuntu/Debian, sử dụng:

systemctl restart ssh

Bước 4 – Xác nhận đăng nhập lại được trước khi đóng phiên cũ

Đây là bước quan trọng nhất. Không đóng cửa sổ terminal đang kết nối hiện tại ngay sau khi restart.

Hãy mở thêm một cửa sổ terminal mới và thử kết nối đến port mới bằng lệnh:

ssh -p 2222 user@ip_vps

Nếu đăng nhập thành công ở cửa sổ mới, lúc đó bạn mới có thể an toàn đóng phiên SSH cũ.

Nếu không kết nối được, phiên SSH cũ vẫn đang mở để bạn kiểm tra và sửa lại cấu hình. Nhờ vậy, bạn tránh được tình huống bị khóa hoàn toàn bên ngoài VPS.

Sau khi xác nhận port mới hoạt động ổn định trong vài ngày, bạn có thể đóng rule dành cho port 22 cũ trên firewall để dứt điểm.

Nếu đang quản lý nhiều VPS cùng lúc, việc lặp lại 4 bước trên thủ công cho từng máy, sau đó phải tự nhớ port riêng của từng VPS, khá dễ nhầm lẫn về sau.

Một cái tên đáng chú ý theo hướng quản lý SSH tập trung là OneDash, với tính năng SSH Security cho phép quản lý key và cấu hình SSH của nhiều server từ một dashboard thay vì phải sửa thủ công từng file sshd_config.

Điểm cần cân nhắc là nền tảng này còn khá mới nên chưa có nhiều đánh giá dài hạn từ cộng đồng. Vì vậy, nếu bạn chỉ có 1-2 VPS thì thực hiện thủ công theo 4 bước trên là đủ và chưa nhất thiết phải sử dụng thêm công cụ. Còn trong trường hợp bạn đang quản lý nhiều VPS thì cân nhắc dùng thử OneDash nhé!

Leave a Reply