Đăng nhập

Setup SSH an toàn cho VPS CentOS: đổi cổng, tắt root, bật SSH key, Fail2Ban

Công thức thực chiến mình dùng để cứng hóa SSH trên VPS CentOS: đổi port 22 → 2222, tắt root login, bật SSH key, cài Fail2Ban chặn brute force, dọn firewall gọn gàng. Có checklist, lệnh sẵn chạy, và tip chống “tự khóa mình”.
Setup SSH an toàn cho VPS CentOS: đổi cổng, tắt root, bật SSH key, Fail2Ban

Vì sao mình cứng hóa SSH (và bạn cũng nên vậy)?

Thú thật, mình từng để mặc định và log bị spam ác liệt. CPU có lúc nhảy như DJ. Từ ngày mình harden SSH, log sạch, tâm trí an yên. Bài này là công thức “mì ăn liền” mình dùng cho VPS CentOS: nhanh, gọn, an toàn, ít drama.


Checklist 60 giây trước khi làm

  • Đang có 1 phiên SSH mở sẵn để lỡ tay còn rollback được

  • Tài khoản có sudo hoặc root

  • Xác định IP máy chủ hoặc domain

  • Dùng firewalld hay iptables cũng được, miễn rõ một đường


Bộ đồ nghề


1) Chặn nhanh dải IP đang “gõ cửa” ầm ầm

Thấy log nhả ra 218.92.0.0/24? Chặn thẳng tay.

Với firewalld:

firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='218.92.0.0/24' reject"
firewall-cmd --reload

Với iptables:

iptables -A INPUT -s 218.92.0.0/24 -j DROP
service iptables save || true

Gợi ý: Nếu cùng một nhà mạng spam nhiều dải, có thể nới subnet. Nhưng đừng lạm dụng nếu team bạn dùng IP vùng đó.


2) Cài Fail2Ban trên CentOS 7 và bật ngay jail sshd

Fail2Ban là “bảo vệ cửa” biết đọc log. Sai nhiều là cấm.

Cài đặt:

yum install -y epel-release
yum install -y fail2ban

Tạo file cấu hình local:

nano /etc/fail2ban/jail.local

Đặt cấu hình gọn gàng, vừa phải:

[sshd]
enabled = true
port = ssh
logpath = /var/log/secure
maxretry = 5
findtime = 10m
bantime = 1h

Khởi động và bật cùng hệ thống:

systemctl enable --now fail2ban
systemctl status fail2ban --no-pager

Mẹo test: cố tình nhập sai 5 lần trong 10 phút rồi fail2ban-client status sshd xem có ban chưa.


3) Đổi cổng SSH 22 → 2222 để bot bớt “dòm ngó”

Chỉnh cấu hình:

nano /etc/ssh/sshd_config

Thêm hoặc sửa:

Port 2222

Mở cổng mới trên firewall:

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

Restart SSH và thử kết nối:

systemctl restart sshd
ssh -p 2222 username@your_server_ip

4) Tắt đăng nhập root qua SSH cho bớt rủi ro

Dùng user thường + sudo, vẫn quyền lực mà bớt nguy cơ.

nano /etc/ssh/sshd_config

Đảm bảo có:

PermitRootLogin no

Rồi restart:

systemctl restart sshd

5) Xài SSH key, nói không với password

Key chuẩn thì brute force có mỏi tay cũng bó tay.

Tạo key trên máy cá nhân:

ssh-keygen -t ed25519 -C "your_email@example.com"

Chép public key lên VPS:

ssh-copy-id -p 2222 -i ~/.ssh/id_ed25519.pub username@your_server_ip

Tắt password login trong SSHD:

nano /etc/ssh/sshd_config

Bật/tắt như sau:

PubkeyAuthentication yes
PasswordAuthentication no

Cuối cùng restart dịch vụ:

systemctl restart sshd

Thử login lại bằng key để chắc ăn.


6) Theo dõi “nhịp tim” hệ thống

Xem log bảo mật realtime:

tail -f /var/log/secure

Xem tình trạng jail sshd:

fail2ban-client status sshd

7) Gỡ port 22 khi 2222 đã chạy mượt

Làm chậm mà chắc, tránh tự khóa mình ngoài cửa.

Sửa SSHD:

nano /etc/ssh/sshd_config

Giữ lại 2222, comment 22:

#Port 22
Port 2222

Gỡ cổng 22 khỏi firewall:

firewall-cmd --permanent --remove-port=22/tcp
firewall-cmd --reload

Restart và thử login:

systemctl restart sshd
ssh -p 2222 username@your_server_ip

Drama thường gặp và cách “dập lửa” nhanh

  • Quên mở firewall cho cổng mới: thêm --add-port=PORT/tcp rồi --reload

  • SSH restart lỗi vì config: chạy sshd -t để kiểm tra syntax trước

  • Tự khóa chính mình: luôn giữ 1 phiên SSH mở để rollback

  • Fail2Ban “im lặng”: soát lại logpath, maxretry, findtime, log có đúng /var/log/secure chưa


Tài liệu đáng tin để đào sâu

Bài trước

Kết nối GitHub Secrets với VPS để CI/CD an toàn trong 10 phút

Bài tiếp theo

Setup SSH GitHub cho Shared Hosting để clone dự án an toàn, nhanh gọn

Để lại bình luận của bạn

Email của bạn sẽ không được công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận bản tin

Đăng ký bản tin email để nhận những bài viết mới nhất trực tiếp trong hộp thư của bạn.
Cảm hứng mỗi ngày, nói không với spam ✨