Bảo mật SSH VPS Linux bằng Fail2Ban và FirewallD

Bảo mật SSH VPS Linux là bước quan trọng giúp ngăn chặn hacker truy cập trái phép và bảo vệ toàn bộ dữ liệu máy chủ. SSH chính là “cánh cửa” quản trị hệ thống, nên nếu không bảo vệ đúng cách, VPS của bạn rất dễ bị tấn công. Khi bảo mật SSH tốt, […]

Enode

22/Oct/2025

Bảo mật SSH VPS Linux là bước quan trọng giúp ngăn chặn hacker truy cập trái phép và bảo vệ toàn bộ dữ liệu máy chủ. SSH chính là “cánh cửa” quản trị hệ thống, nên nếu không bảo vệ đúng cách, VPS của bạn rất dễ bị tấn công. Khi bảo mật SSH tốt, VPS sẽ hoạt động ổn định, tránh được nguy cơ bị chiếm quyền hoặc cài mã độc. Đây là nền tảng cần thiết để vận hành website, ứng dụng hay dịch vụ trực tuyến an toàn và chuyên nghiệp. Hãy cùng Enode tìm hiểu cách bảo mật SSH cho VPS Linux qua bài viết dưới đây.

Bảo mật SSH VPS Linux

Bảo mật SSH VPS Linux

Giới thiệu về bảo mật SSH trên VPS Linux

SSH (Secure Shell) là giao thức giúp bạn đăng nhập và quản lý máy chủ từ xa một cách an toàn thông qua kết nối mã hóa.
Tuy nhiên, SSH cũng là mục tiêu tấn công phổ biến nhất trên VPS Linux, đặc biệt là các cuộc tấn công brute force (thử mật khẩu hàng nghìn lần để đoán đúng).

Nếu không có biện pháp bảo vệ, kẻ tấn công có thể:

  • Đoán được mật khẩu root hoặc user quản trị.
  • Chiếm quyền điều khiển VPS, xóa dữ liệu, cài mã độc hoặc spam mail.

Vì vậy, việc bảo mật SSH VPS Linux bằng Fail2Ban và FirewallD là giải pháp cực kỳ cần thiết giúp ngăn chặn các hành vi truy cập trái phép, bảo vệ tài nguyên và dữ liệu quan trọng của bạn.

Fail2Ban và FirewallD là gì?

Fail2Ban là gì?

Fail2Ban là một công cụ mã nguồn mở giúp bảo vệ máy chủ khỏi các cuộc tấn công đăng nhập sai nhiều lần.

Cơ chế hoạt động của Fail2Ban:

  • Giám sát các tệp log hệ thống (như /var/log/secure hoặc /var/log/auth.log).
  • Khi phát hiện địa chỉ IP đăng nhập sai quá số lần quy định, nó tự động chặn IP đó bằng firewall (hoặc iptables) trong khoảng thời gian nhất định.

Ưu điểm:

  • Ngăn chặn brute force SSH hiệu quả.
  • Linh hoạt, có thể áp dụng cho nhiều dịch vụ khác như FTP, Apache, Nginx, Postfix, v.v.
  • Cấu hình đơn giản, hoạt động ổn định trên hầu hết các bản Linux (CentOS, Ubuntu, Debian…).

FirewallD là gì?

FirewallD là hệ thống quản lý tường lửa mặc định trên các bản Linux mới (như CentOS 7+, RHEL, Fedora).

FirewallD cho phép dịch vụ hoặc cổng nào được phép truy cập vào VPS

FirewallD cho phép dịch vụ hoặc cổng nào được phép truy cập vào VPS

Nó giúp:

  • Quản lý các quy tắc tường lửa theo vùng (zone).
  • Cho phép hoặc chặn cổng (port), dịch vụ, IP cụ thể.
  • Kết hợp tốt với Fail2Ban để tự động chặn IP tấn công SSH.

Tóm lại: Fail2Ban phát hiện hành vi tấn công – FirewallD thực hiện chặn IP.

Vì sao nên kết hợp Fail2Ban và FirewallD để bảo mật SSH VPS Linux

Một số quản trị viên chỉ dùng firewall (ví dụ: chỉ mở port cần thiết). Tuy nhiên, điều đó chưa đủ để ngăn brute force SSH.

Fail2Ban và FirewallD khi kết hợp sẽ mang lại 2 lớp bảo vệ mạnh mẽ:

Tính năng FirewallD Fail2Ban
Chức năng chính Kiểm soát kết nối mạng, port Giám sát log và phát hiện tấn công
Hoạt động Cấp thấp (kernel level) Cấp ứng dụng
Cách chặn IP Thủ công hoặc tự động từ Fail2Ban Tự động gửi lệnh đến FirewallD
Lợi ích Giới hạn truy cập hệ thống Phát hiện và phản ứng linh hoạt

Khi cả hai công cụ hoạt động song song:

  • Fail2Ban phát hiện IP xấu → gửi lệnh đến FirewallD → FirewallD chặn ngay.
  • Hạn chế tối đa việc kẻ tấn công thử mật khẩu SSH liên tục.
  • VPS luôn trong tình trạng bảo vệ chủ động.

Có thể bạn quan tâm: Chống DDoS cho VPS Linux: Tăng bảo mật và hiệu suất

Hướng dẫn cài đặt và cấu hình Fail2Ban trên VPS Linux

Cài đặt Fail2Ban

Tùy vào bản Linux bạn đang dùng:

Trên CentOS / RHEL:

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

Trên Ubuntu / Debian:

sudo apt update
sudo apt install fail2ban -y

Kiểm tra dịch vụ:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo systemctl status fail2ban

Cấu hình cơ bản Fail2Ban cho SSH

Tệp cấu hình chính nằm tại: /etc/fail2ban/jail.conf
Tuy nhiên, không nên chỉnh trực tiếp, mà nên sao chép sang file riêng để dễ quản lý: sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Mở file /etc/fail2ban/jail.local và chỉnh các giá trị:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 5
bantime = 3600
findtime = 600
backend = systemd

Giải thích:

  • enabled = true → bật bảo vệ SSH.
  • maxretry = 5 → nếu đăng nhập sai 5 lần trong 10 phút (findtime) → IP bị chặn 1 giờ (bantime).
  • Bạn có thể tăng bantime lên 86400 (24h) nếu muốn mạnh tay hơn.

Kiểm tra danh sách IP bị chặn

Sau khi Fail2Ban hoạt động: sudo fail2ban-client status sshd

Lệnh trên sẽ hiển thị danh sách IP đang bị block.

Nếu muốn gỡ IP nào đó:

sudo fail2ban-client set sshd unbanip <địa_chỉ_IP>

Cấu hình FirewallD để bảo mật SSH

Cài đặt và khởi động FirewallD

FirewallD thường được cài sẵn trên CentOS 7+, nếu chưa có:

sudo yum install firewalld -y
sudo systemctl enable firewalld
sudo systemctl start firewalld

Kiểm tra trạng thái:

sudo firewall-cmd –state

Giới hạn truy cập SSH bằng FirewallD

Mặc định SSH dùng port 22, bạn có thể thay đổi sang port khác (ví dụ 2222) để tránh bị quét.

Mở port mới và tắt port cũ:

sudo firewall-cmd –permanent –add-port=2222/tcp
sudo firewall-cmd –permanent –remove-service=ssh
sudo firewall-cmd –reload

Cập nhật trong file SSH config:

sudo nano /etc/ssh/sshd_config

Tìm và sửa:

Port 2222

Sau đó khởi động lại SSH:

sudo systemctl restart sshd

Kết hợp Fail2Ban với FirewallD

Fail2Ban tương tác với FirewallD thông qua hành động (action) mặc định.
Kiểm tra file cấu hình tại:

/etc/fail2ban/action.d/firewalld.conf

Đảm bảo bạn bật đúng action:

action = firewalld

Khi đó, mỗi IP bị Fail2Ban phát hiện tấn công sẽ được FirewallD chặn ngay lập tức.

Tăng cường bảo mật SSH nâng cao

Ngoài Fail2Ban và FirewallD, bạn nên kết hợp thêm các biện pháp sau:

Tắt đăng nhập root qua SSH

sudo nano /etc/ssh/sshd_config

Sửa:

PermitRootLogin no

Bật xác thực bằng SSH Key

Thay vì mật khẩu, bạn dùng SSH Key (cặp public/private key) – gần như không thể bị brute force.
Sinh key trên máy cá nhân:

ssh-keygen

Copy key lên VPS:

ssh-copy-id user@ip_vps

Giới hạn IP được phép SSH

Giới hạn IP được phép SSH

Giới hạn IP được phép SSH

Ví dụ, chỉ cho phép IP của bạn truy cập:

sudo firewall-cmd –permanent –add-rich-rule=‘rule family=”ipv4″ source address=”1.2.3.4″ service name=”ssh” accept’
sudo firewall-cmd –reload

Cảnh báo đăng nhập SSH qua email

Fail2Ban có thể cấu hình gửi thông báo khi có IP bị cấm, giúp bạn theo dõi tình trạng tấn công.

Kiểm tra và theo dõi hệ thống bảo mật

Sau khi thiết lập xong, bạn nên thường xuyên kiểm tra:

Trạng thái Fail2Ban:

sudo fail2ban-client status

Danh sách zone FirewallD:

sudo firewall-cmd –list-all

File log đăng nhập:

sudo tail -f /var/log/secure

→ Nếu thấy IP lạ bị chặn tự động → hệ thống đã hoạt động đúng.

Lợi ích của việc bảo mật SSH bằng Fail2Ban và FirewallD

  • Ngăn chặn tấn công brute force hiệu quả.
  • Giảm tải hệ thống, không phải xử lý hàng nghìn request SSH giả.
  • Tăng tuổi thọ VPS, hạn chế rủi ro bảo mật.
  • Tự động hóa bảo vệ, không cần can thiệp thủ công.
  • Dễ triển khai, linh hoạt, tương thích với hầu hết hệ điều hành Linux.

Bảo mật SSH là bước bắt buộc khi bạn quản trị VPS Linux. Fail2Ban và FirewallD chính là bộ đôi hoàn hảo giúp bạn phát hiện sớm hành vi xâm nhập, tự động chặn IP tấn công, giữ cho hệ thống luôn an toàn, ổn định. Hãy bảo mật SSH VPS Linux bằng Fail2Ban và FirewallD đúng cách để VPS Linux của bạn luôn vững vàng trước mọi cuộc tấn công SSH.

Trải nghiệm vận hành một VPS đã giúp tôi hiểu rõ hơn về hệ thống máy chủ, tăng khả năng kiểm soát hiệu suất và bảo mật website – điều mà hosting thông thường khó đáp ứng.

Liên hệ