Bất kỳ service nào tiếp xúc với Internet đều có nguy cơ bị phần mềm độc hại tấn công. Ví dụ: nếu bạn đang chạy một service trên một public internet, những kẻ tấn công có thể sử dụng brute-force để đăng nhập vào tài khoản của bạn.

Fail2ban là một công cụ giúp bảo vệ máy Linux của bạn khỏi các cuộc tấn công brute-force và các cuộc tấn công tự động khác bằng cách theo dõi nhật ký dịch vụ để tìm hoạt động độc hại. Nó sử dụng các biểu thức chính quy (regex) để quét các tệp log. Tất cả các mục nhập phù hợp với các mẫu đều được tính và khi số lượng truy cập trái phép của chúng đạt đến ngưỡng xác định trước nhất định, Fail2ban sẽ cấm IP vi phạm bằng cách sử dụng tường lửa hệ thống trong một khoảng thời gian cụ thể. Khi hết thời gian cấm, địa chỉ IP sẽ bị xóa khỏi danh sách cấm.

Bài viết này mô tả cách cài đặt và cấu hình Fail2ban trên Ubuntu 20.04.

Cài đặt Fail2ban trên Ubuntu

Gói Fail2ban có trong kho lưu trữ Ubuntu 20.04 mặc định. Để cài đặt nó, hãy nhập lệnh sau với tư cách là user root hoặc người dùng có đặc quyền sudo :

sudo apt update
sudo apt install fail2ban -y

Sau khi cài đặt hoàn tất, Fail2ban sẽ tự động bắt đầu. Bạn có thể kiểm tra trạng thái của nó bằng cách kiểm tra trạng thái của service:

sudo systemctl status fail2ban

Output sẽ như thế này:

● fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-08-19 06:16:29 UTC; 27s ago
       Docs: man:fail2ban(1)
   Main PID: 1251 (f2b/server)
      Tasks: 5 (limit: 1079)
     Memory: 13.8M
     CGroup: /system.slice/fail2ban.service
             └─1251 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Đó là nó. Tại thời điểm này, bạn có Fail2Ban đang chạy trên server Ubuntu của mình.

Cấu hình Fail2ban

Cài đặt Fail2ban mặc định đi kèm với hai tệp cấu hình /etc/fail2ban/jail.conf và /etc/fail2ban/jail.d/defaults-debian.conf. Bạn không nên sửa đổi các tệp này vì chúng có thể bị ghi đè khi package được cập nhật.

Fail2ban đọc các tệp cấu hình theo thứ tự sau. Mỗi file .local sẽ ghi đè các cài đặt từ file .conf:

  • /etc/fail2ban/jail.conf
  • /etc/fail2ban/jail.d/*.conf
  • /etc/fail2ban/jail.local
  • /etc/fail2ban/jail.d/*.local

Đối với hầu hết người dùng, cách dễ nhất để định cấu hình Fail2ban là sao chép jail.conf vào jail.localvà sửa đổi tệp .local. Người dùng nâng cao hơn có thể tạo tệp .local cấu hình từ đầu. Các file .local không nhất thiết phải bao gồm tất cả các thiết lập từ tương ứng với file .conf, chỉ những bạn muốn ghi đè.

Tạo file .local cấu hình từ jail.conf mặc định :

sudo cp /etc/fail2ban/jail.{conf,local}

Để bắt đầu cấu hình máy chủ Fail2ban, hãy mở file jail.local với trình soạn thảo văn bản của bạn :

sudo nano /etc/fail2ban/jail.local

Tệp bao gồm các nhận xét mô tả chức năng của mỗi tùy chọn cấu hình. Trong ví dụ này, chúng ta sẽ thay đổi các cài đặt cơ bản.

Whitelist IP

Có thể thêm địa chỉ IP, dải IP hoặc máy chủ mà bạn muốn loại trừ khỏi lệnh cấm ignoreip . Tại đây, bạn nên thêm địa chỉ IP máy tính của mình và tất cả các máy khác mà bạn muốn đưa vào danh sách whitelist.

Bỏ comment dòng bắt đầu bằng ignoreip và thêm các địa chỉ IP của bạn được phân tách bằng dấu cách: /etc/fail2ban/jail.local

ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24

Cài đặt Ban

Các giá trị của bantimefindtimevà maxretry tùy chọn xác định thời gian cấm và điều kiện cấm.

bantimelà thời hạn mà IP bị cấm. Khi không có hậu tố nào được chỉ định, nó mặc định là giây. Theo mặc định, giá trị bantime được đặt thành 10 phút. Nói chung, hầu hết người dùng sẽ muốn đặt thời gian cấm dài hơn. Thay đổi giá trị theo ý muốn của bạn: /etc/fail2ban/jail.local

bantime  = 1d

Để cấm vĩnh viễn IP, hãy sử dụng một số âm.

findtimelà khoảng thời gian giữa số lần thất bại truy cập vào hệ thống trước khi lệnh cấm được thiết lập. Ví dụ: nếu Fail2ban được thiết lập để cấm một IP sau năm lần thất bại truy cập vào server ( maxretry, xem bên dưới), những lỗi đó phải xảy ra trong thời hạn findtime. /etc/fail2ban/jail.local

findtime  = 10m

maxretrylà số lần thất bại trước khi một IP bị cấm. Giá trị mặc định được đặt thành 5, điều này sẽ ổn đối với hầu hết người dùng. /etc/fail2ban/jail.local

maxretry = 5

Email Notifications

Fail2ban có thể gửi cảnh báo qua email khi một IP đã bị cấm. Để nhận email, bạn cần phải cài đặt SMTP trên máy chủ của mình và thay đổi hành động mặc định, hành động này chỉ cấm IP %(action_mw)s, như được hiển thị bên dưới: /etc/fail2ban/jail.local

action = %(action_mw)s

%(action_mw)scấm IP vi phạm và gửi email kèm theo báo cáo whois. Nếu bạn muốn đưa các log liên quan vào email, hãy đặt hành động thành %(action_mwl)s.

Bạn cũng có thể điều chỉnh địa chỉ email gửi và nhận:/etc/fail2ban/jail.local

destemail = admin@linuxize.com

sender = root@linuxize.com

Fail2ban Jails

Fail2ban sử dụng một khái niệm jail. Jail mô tả một dịch vụ và bao gồm các bộ lọc và hành động. Các mục nhật ký khớp với mẫu tìm kiếm được tính và khi đáp ứng điều kiện xác định trước, các hành động tương ứng sẽ được thực hiện.

Fail2ban cung cấp một số jail cho các dịch vụ khác nhau. Bạn cũng có thể tạo cấu hình tù của riêng mình.

Theo mặc định, chỉ Jail jail được kích hoạt. Để kích hoạt một jail, bạn cần thêm enabled = true sau tiêu đề jail. Ví dụ sau đây cho thấy cách kích hoạt proftpd jail: /etc/fail2ban/jail.local

[proftpd]

port     = ftp,ftp-data,ftps,ftps-data
logpath  = %(proftpd_log)s
backend  = %(proftpd_backend)s

Các cài đặt mà chúng ta đã thảo luận trong phần trước, có thể được đặt cho mỗi jail. Đây là một ví dụ: /etc/fail2ban/jail.local

[sshd]
enabled   = true
maxretry  = 3
findtime  = 1d
bantime   = 4w
ignoreip  = 127.0.0.1/8 23.34.45.56

Các bộ lọc nằm trong thư mục /etc/fail2ban/filter.d , được lưu trữ trong một tệp có cùng tên với jail. Nếu bạn có thiết lập tùy chỉnh và trải nghiệm với các biểu thức chính quy (regex), bạn có thể tinh chỉnh các bộ lọc.

Mỗi lần chỉnh sửa tệp cấu hình, bạn cần khởi động lại dịch vụ Fail2ban để các thay đổi có hiệu lực:

sudo systemctl restart fail2ban

Fail2ban Client

Fail2ban đi kèm với một công cụ dòng lệnh có tên fail2ban-clientmà bạn có thể sử dụng để tương tác với dịch vụ Fail2ban.

Để xem tất cả các tùy chọn có sẵn, hãy gọi lệnh với tùy chọn -h :

fail2ban-client -h

Công cụ này có thể được sử dụng để cấm / bỏ cấm địa chỉ IP, thay đổi cài đặt, khởi động lại dịch vụ và hơn thế nữa. Đây là vài ví dụ:

  • Kiểm tra trạng thái jail: $ sudo fail2ban-client status sshd
  • Bỏ cấm IP: $ sudo fail2ban-client set sshd unbanip 23.34.45.56
  • Cấm IP: $ sudo fail2ban-client set sshd banip 23.34.45.56

Phần kết luận

Tôi đã hướng dẫn bạn cách cài đặt và cấu hình Fail2ban trên Ubuntu 20.04.

Để biết thêm thông tin về chủ đề này, hãy truy cập tài liệu Fail2ban .

Nếu bạn có thắc mắc, đừng ngại để lại bình luận bên dưới.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments