Cài Đặt Fail2ban: 5 Bước Bảo Vệ Server Chống Brute Force

Thảo luận trong 'Tin Tức Công Nghệ' bắt đầu bởi Nguyễn Hy Long, 19/11/25 lúc 15:31.

  1. Nguyễn Hy Long

    Nguyễn Hy Long New Member
    1/6

    Server của bạn đang đối mặt với hàng trăm lượt dò mật khẩu mỗi ngày? Hướng dẫn Cài đặt Fail2ban toàn tập này sẽ chỉ bạn cách tự động chặn mọi cuộc tấn công Brute Force, giúp server an toàn và giảm tải hiệu quả. Hãy cùng thiết lập ngay lớp phòng thủ vững chắc này.

    Fail2ban là gì? Tại sao bạn cần "vệ sĩ" này cho server của mình?
    Fail2ban là một phần mềm mã nguồn mở có chức năng ngăn chặn xâm nhập bằng cách phân tích các file log của hệ thống. Công cụ này sẽ quét các log file (ví dụ: /var/log/auth.log hoặc /var/log/nginx/error.log) để tìm kiếm các mẫu hành vi đáng ngờ, chẳng hạn như quá nhiều lần đăng nhập thất bại liên tiếp.

    Khi phát hiện một địa chỉ IP có dấu hiệu tấn công, Fail2ban sẽ tự động cập nhật quy tắc tường lửa (như Iptables hoặc Firewalld) để chặn IP đó trong một khoảng thời gian nhất định.

    Bạn chắc chắn cần đến Fail2ban vì những lý do sau:

    • Chống tấn công Brute Force: Đây là lợi ích lớn nhất. Các bot tự động liên tục thử đăng nhập vào SSH, FTP, trang quản trị WordPress của bạn. Fail2ban sẽ chặn đứng những nỗ lực này ngay từ đầu.
    • Tăng cường bảo mật: Bằng cách chặn các IP độc hại, bạn giảm thiểu nguy cơ bị xâm nhập, đánh cắp dữ liệu hoặc bị cài cắm mã độc.
    • Giảm tải cho Server: Mỗi một lần đăng nhập thất bại đều tiêu tốn một lượng nhỏ tài nguyên CPU và RAM. Hàng ngàn lần thử sẽ gây ra gánh nặng không cần thiết. Fail2ban giúp giải phóng tài nguyên này để phục vụ những người dùng hợp lệ.
    • Tự động hóa hoàn toàn: Thay vì phải theo dõi log và chặn IP thủ công, bạn chỉ cần cài đặt một lần và Fail2ban sẽ làm việc 24/7 như một người vệ sĩ mẫn cán.
    Cơ chế hoạt động của Fail2ban: Đơn giản nhưng hiệu quả
    Hiểu cách Fail2ban hoạt động giúp bạn tự tin hơn khi sử dụng. Cơ chế của công cụ này bao gồm ba bước chính, vận hành một cách tuần tự và liên tục:

    1. Theo dõi (Monitor): Fail2ban liên tục "đọc" các file log mà bạn chỉ định. Mỗi dịch vụ (SSH, Nginx, Postfix,...) đều có một file log riêng để ghi lại mọi hoạt động.
    2. Đối chiếu (Match): Trong mỗi file cấu hình của Fail2ban có một bộ "lọc" (filter). Bộ lọc này chứa các mẫu (pattern) định sẵn về lỗi đăng nhập hoặc hành vi đáng ngờ. Khi một dòng log mới được ghi lại, Fail2ban sẽ đối chiếu dòng đó với các mẫu trong bộ lọc.
    3. Hành động (Action): Nếu một địa chỉ IP tạo ra số lượng log khớp với mẫu lỗi vượt quá ngưỡng cho phép (ví dụ: 5 lần trong 10 phút), Fail2ban sẽ kích hoạt một "hành động". Hành động phổ biến nhất là thêm một quy tắc vào tường lửa hệ thống (Iptables/Firewalld) để chặn (DROP hoặc REJECT) mọi kết nối từ IP đó.
    Chu trình này lặp đi lặp lại, đảm bảo hệ thống được bảo vệ liên tục trước các mối đe dọa mới.

    Hướng dẫn cài đặt Fail2ban chi tiết trên các hệ điều hành phổ biến
    Quá trình cài đặt khá đơn giản và không tốn nhiều thời gian. Hãy đảm bảo bạn đang đăng nhập vào server với quyền root hoặc sudo.

    Bước 1: Cập nhật hệ thống
    Trước khi cài đặt bất kỳ phần mềm nào, việc cập nhật danh sách gói của hệ thống luôn là một thói quen tốt.

    Đối với Ubuntu / Debian:

    sudo apt update && sudo apt upgrade -y
    Đối với CentOS / RHEL:

    sudo yum update -y
    Bước 2: Cài đặt Fail2ban trên Ubuntu / Debian
    Fail2ban có sẵn trong kho lưu trữ mặc định của Ubuntu và Debian. Bạn chỉ cần chạy lệnh sau:

    sudo apt install fail2ban -y
    Sau khi cài đặt xong, dịch vụ Fail2ban sẽ tự động khởi chạy. Bạn có thể kiểm tra trạng thái của dịch vụ bằng lệnh:

    sudo systemctl status fail2ban
    Nếu bạn thấy dòng active (running) màu xanh, điều đó có nghĩa là Fail2ban đã được cài đặt và đang hoạt động.

    Bước 3: Cài đặt Fail2ban trên CentOS / RHEL
    Trên CentOS, Fail2ban thường nằm trong kho lưu trữ EPEL (Extra Packages for Enterprise Linux). Nếu bạn chưa có EPEL, hãy cài đặt trước:

    sudo yum install epel-release -y
    Sau đó, tiến hành cài đặt Fail2ban:

    sudo yum install fail2ban -y
    Tương tự như Ubuntu, bạn cần khởi động và cho phép dịch vụ Fail2ban chạy cùng hệ thống:

    sudo systemctl start fail2ban
    sudo systemctl enable fail2ban
    Kiểm tra lại trạng thái để chắc chắn mọi thứ đều ổn:

    sudo systemctl status fail2ban
    Cấu hình Fail2ban: "Dạy" cho vệ sĩ của bạn cách làm việc
    Đây là phần quan trọng nhất trong toàn bộ quá trình Cài đặt Fail2ban. Cấu hình mặc định đã khá tốt, nhưng việc tùy chỉnh sẽ giúp Fail2ban hoạt động hiệu quả và phù hợp hơn với nhu cầu của bạn.

    Nguyên tắc vàng: Không sửa file jail.conf, hãy tạo jail.local
    File cấu hình chính của Fail2ban là /etc/fail2ban/jail.conf. Tuy nhiên, bạn không bao giờ nên chỉnh sửa trực tiếp file này. Lý do là vì khi Fail2ban được cập nhật, file jail.conf có thể bị ghi đè và mọi thay đổi của bạn sẽ mất hết.

    Thay vào đó, chúng ta sẽ tạo một bản sao của file này với tên jail.local. Fail2ban được lập trình để đọc file .local sau file .conf và các thiết lập trong file .local sẽ ghi đè lên các thiết lập tương ứng trong file .conf.

    Hãy tạo file jail.local bằng lệnh sau:

    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    Bây giờ, mọi tùy chỉnh chúng ta sẽ thực hiện trên file jail.local.

    sudo nano /etc/fail2ban/jail.local
    Cấu hình các thông số cơ bản trong [DEFAULT]
    Trong file jail.local, hãy tìm đến phần [DEFAULT]. Đây là nơi chứa các thiết lập mặc định sẽ được áp dụng cho tất cả các "jail" (nhà tù - quy tắc bảo vệ) bên dưới, trừ khi jail đó có thiết lập riêng.

    • ignoreip: Danh sách các địa chỉ IP sẽ không bao giờ bị chặn. Bạn nên thêm địa chỉ IP nhà riêng, IP văn phòng của mình vào đây để tránh vô tình tự khóa mình. Các IP được phân tách bằng dấu cách.
      ignoreip = 127.0.0.1/8 ::1 192.168.1.100
    • bantime: Thời gian một IP sẽ bị chặn (tính bằng giây). Giá trị 10m tương đương 10 phút, 1h là 1 giờ, 1d là 1 ngày.
      bantime = 1h
    • findtime: Khoảng thời gian để đếm số lần thử lại. Nếu một IP thực hiện maxretry lần thử trong khoảng findtime này, nó sẽ bị chặn.
      findtime = 10m
    • maxretry: Số lần thử lại tối đa được phép trong khoảng findtime.
      maxretry = 5
    Với cấu hình trên, nếu một IP đăng nhập sai 5 lần trong vòng 10 phút, nó sẽ bị chặn trong 1 giờ.

    Kích hoạt và tùy chỉnh "Jail" cho các dịch vụ phổ biến
    Kéo xuống dưới trong file jail.local, bạn sẽ thấy rất nhiều jail được định nghĩa sẵn cho các dịch vụ khác nhau như [sshd], [nginx-http-auth],... Mặc định, hầu hết chúng đều bị vô hiệu hóa. Để kích hoạt một jail, bạn chỉ cần thêm dòng enabled = true vào bên dưới tên của jail đó.

    Cấu hình Jail bảo vệ SSH [sshd]
    Đây là jail quan trọng nhất cần được kích hoạt. Tấn công SSH là loại hình phổ biến nhất.

    Tìm đến phần [sshd] và thêm vào như sau:

    [sshd]
    enabled = true
    port = ssh
    # Bạn có thể thêm các thông số riêng nếu muốn
    # maxretry = 3
    # bantime = 1d
    Nếu bạn đã thay đổi port SSH mặc định (port 22), hãy sửa dòng port = ssh thành port = YOUR_SSH_PORT.

    Cấu hình Jail chống tấn công Nginx
    Nginx cũng là mục tiêu của nhiều cuộc tấn công, từ việc dò tìm các trang không tồn tại để tìm lỗ hổng cho đến tấn công brute force vào trang đăng nhập được bảo vệ bằng mật khẩu.

    • Chặn các truy cập vào trang không tồn tại (404):
      [nginx-botsearch]
      enabled = true
    • Chặn các nỗ lực brute force vào trang yêu cầu xác thực HTTP:
      [nginx-http-auth]
      enabled = true
    Cấu hình Jail bảo vệ form đăng nhập WordPress
    Nếu bạn đang sử dụng WordPress, bảo vệ trang wp-login.php là việc tối quan trọng. Fail2ban không có sẵn jail cho WordPress, nhưng chúng ta có thể tự tạo rất dễ dàng.

    Đầu tiên, tạo file filter cho WordPress:

    sudo nano /etc/fail2ban/filter.d/wordpress-hard.conf
    Dán nội dung sau vào file:

    [Definition]
    failregex = ^<HOST>.*"POST /wp-login.php HTTP/.*" 200
    ignoreregex =
    Lưu và đóng file.

    Tiếp theo, mở lại file jail.local và thêm jail mới cho WordPress vào cuối file:

    [wordpress-hard]
    enabled = true
    port = http,https
    filter = wordpress-hard
    logpath = /var/log/nginx/access.log # Sửa lại đường dẫn log Nginx/Apache của bạn
    maxretry = 3
    bantime = 1d
    Sau khi hoàn tất mọi cấu hình, hãy khởi động lại Fail2ban để áp dụng thay đổi:

    sudo systemctl restart fail2ban
    Các lệnh quản lý Fail2ban bạn phải biết
    Sau khi cài đặt và cấu hình, bạn cần biết một số lệnh cơ bản để tương tác và quản lý Fail2ban thông qua công cụ fail2ban-client.

    • Kiểm tra trạng thái chung:
      sudo fail2ban-client status
      Lệnh này sẽ hiển thị danh sách các jail đang được kích hoạt.

    • Kiểm tra trạng thái một jail cụ thể (ví dụ sshd):
      sudo fail2ban-client status sshd
      Lệnh này sẽ cung cấp thông tin chi tiết: tổng số lần thất bại và danh sách các IP đang bị chặn trong jail sshd.

    • Bỏ chặn (unban) một địa chỉ IP:
      Nếu bạn vô tình chặn nhầm một IP hợp lệ, bạn có thể bỏ chặn bằng lệnh sau:

      sudo fail2ban-client set sshd unbanip YOUR_IP_ADDRESS
      Thay sshd bằng tên jail tương ứng và YOUR_IP_ADDRESS bằng địa chỉ IP cần bỏ chặn.
     

Dịch Cài Win Và Cài Đặt Phần Mềm Máy Tính Online

Danh sách các Website diễn đàn rao vặt

: vps

Chia sẻ trang này