Bài viết này là một phần của loạt hướng dẫn máy chủ Apache:

  • Bảo mật Apache trên Ubuntu - Phần 1
  • Bảo mật Apache trên Ubuntu - Phần 2
  • Tối ưu hóa hiệu suất Apache - Phần 1
  • Tối ưu hóa hiệu suất Apache - Phần 2
  • Thiết lập Virtualhost dựa trên tên Apache
  • Thiết lập IP và Virtualhost dựa trên cổng trong Apache
  • Làm thế nào để thiết lập mật khẩu bảo vệ thư mục Web trong Apache
  • Thiết lập máy chủ Apache với hỗ trợ SSL trên Ubuntu
  • Thiết lập Fail2ban để bảo vệ Apache khỏi tấn công DDOS
  • Làm thế nào để thiết lập Webdav với Apache trên Ubuntu
  • Giám sát máy chủ web Apache bằng Mod_status
  • Làm thế nào để bảo vệ chống lại DDoS với Mod_evasive trên máy chủ Apache

Apache là một trong những máy chủ web được sử dụng rộng rãi và phổ biến nhất trên thế giới, vì vậy điều quan trọng là bảo vệ trang web và người dùng của bạn khỏi các cuộc tấn công Brute-force. Fail2ban là một phần mềm phòng chống xâm nhập nguồn mở được viết bằng Python. Fail2Ban liên tục phân tích các tệp nhật ký của các dịch vụ khác nhau (như Apache, ssh, postfix…) và nếu phát hiện các cuộc tấn công nguy hiểm, thì nó tạo ra các quy tắc trên tường lửa để chặn các địa chỉ IP của hacker trong một khoảng thời gian nhất định. Fail2Ban cũng thông báo cho quản trị viên hệ thống một email về hoạt động của nó.

Trong bài viết này, tôi sẽ giải thích cách cài đặt fail2ban và cấu hình nó để theo dõi các nhật ký Apache của bạn để tìm các lỗi xác thực độc hại.

Yêu cầu

  • Máy chủ Ubuntu 14.04 có cài đặt Apache
  • Apache được cấu hình với xác thực mật khẩu

Cài đặt Fail2Ban

Trước tiên, hãy đảm bảo máy chủ Apache đang chạy và xác thực mật khẩu được bật.

Tiếp theo, bạn có thể cài đặt Fail2ban bằng cách chạy:

 sudo apt-get cập nhật sudo apt-get cài đặt fail2ban 

Định cấu hình fail2ban cho Apache

Các fail2ban giữ tập tin cấu hình của nó "jail.conf" trong thư mục "/ etc / fail2ban /". Nó chứa một bộ các bộ lọc được xác định trước cho các dịch vụ khác nhau và bạn không nên chỉnh sửa tệp này. Bạn cần phải kích hoạt Apache jails được xác định trước bằng cách tạo một tập tin "/etc/fail2ban/jail.local":

Để tạo tệp “jail.local” mới, hãy chạy:

 sudo nano /etc/fail2ban/jail.local 

Thêm nội dung sau:

 [apache] enabled = true port = http, https filter = apache-auth logpath = /var/log/apache2/*error.log maxretry = 3 findtime = 600 ignoreip = 192.168.1.227 [apache-noscript] enabled = true port = http, https filter = apache-noscript logpath = /var/log/apache2/*error.log maxretry = 3 findtime = 600 ignoreip = 192.168.1.227 [apache-overflows] enabled = true port = http, https filter = apache-overflows logpath = /var/log/apache2/*error.log maxretry = 2 findtime = 600 ignoreip = 192.168.1.227 [apache-badbots] enabled = true port = http, https filter = apache-badbots logpath = / var / log / apache2 /*error.log maxretry = 2 findtime = 600 ignoreip = 192.168.1.227 

Lưu và đóng tệp, sau đó khởi động lại fail2ban để các thay đổi có hiệu lực.

 sudo /etc/init.d/fail2ban khởi động lại 

Bạn có thể xác minh các quy tắc đã được thêm bởi Fail2Ban trong iptables bằng cách sử dụng lệnh sau:

 sudo iptables -L 

Đầu ra sẽ trông giống như sau:

Lưu ý : Bạn có thể tìm thấy chi tiết của từng nhà tù được mô tả bên dưới:

  • [apache] : nhà tù này được sử dụng để chặn các lần đăng nhập thất bại.
  • [apache-noscript] : nhà tù này được sử dụng để chặn các máy khách từ xa đang tìm kiếm các tập lệnh trên trang web để thực thi.
  • [apache-overflows] : nhà tù này được sử dụng để chặn các khách hàng đang cố yêu cầu các URL đáng ngờ.
  • [apache-noscript] : nhà tù này được sử dụng để chặn các máy khách từ xa đang tìm kiếm các tập lệnh trên trang web để thực thi.
  • [apache-badbots] : nhà tù này được sử dụng để chặn các yêu cầu bot độc hại.

Lưu ý : Bạn có thể tìm thấy chi tiết của từng quy tắc được mô tả bên dưới.

  • enabled : tùy chọn này có nghĩa là tính năng bảo vệ Apache được bật.
  • port : tùy chọn này chỉ định các dịch vụ mà fail2ban giám sát.
  • filter : tùy chọn này chỉ tập tin cấu hình nằm trong thư mục /etc/fail2ban/filter.d/ .
  • logpath : tùy chọn này chỉ định vị trí của tệp nhật ký.
  • bantime : tùy chọn này chỉ định số giây mà máy chủ từ xa sẽ bị chặn khỏi máy chủ.
  • maxretry : tùy chọn này chỉ định số lần đăng nhập thất bại trước khi một máy chủ từ xa bị chặn trong khoảng thời gian cấm.
  • ignoreip : tùy chọn này cho phép bạn liệt kê một số địa chỉ IP nhất định.

Kiểm tra trạng thái cấm của Fail2ban

Khi các jails được kích hoạt, bạn có thể kiểm tra fail2ban bằng cách sử dụng lệnh fail2ban-client :

 Trạng thái sudo fail2ban-client 

Bạn có thể xem danh sách tất cả các nhà tù bạn đã bật.

Để xem trạng thái của một nhà tù cụ thể như apache, apache-badbots bằng cách chạy các lệnh sau:

 sudo fail2ban-client apache trạng thái 

Đầu ra trông như thế này:

Bạn cũng có thể tự đặt lệnh cấm hoặc bỏ cấm địa chỉ IP.

Ví dụ, để cấm một địa chỉ IP (192.168.1.20) với một nhà tù apache:

 sudo fail2ban-client thiết lập apache banip 192.168.1.20 

Để bỏ cấm một địa chỉ IP (192.168.1.21) với một nhà tù apache:

 sudo fail2ban-client thiết lập apache unbanip 192.168.1.21 

Kiểm tra Fail2Ban

Điều quan trọng là kiểm tra fail2ban của bạn cho dù nó đang làm việc như mong đợi hay không. Bây giờ trên một máy từ xa, mở trình duyệt web của bạn và nhập URL của tên miền của bạn (hoặc địa chỉ IP của máy chủ của bạn). Khi Apache nhắc xác thực, hãy cung cấp tên người dùng và mật khẩu không chính xác nhiều lần. Sau khi bạn đạt đến giới hạn, bạn sẽ bị chặn và không thể truy cập trang web.

Kiểm tra trạng thái bằng lệnh fail2ban-client :

 sudo fail2ban-client apache trạng thái 

Bạn sẽ thấy địa chỉ IP của bạn bị chặn khỏi trang web.

Phần kết luận

Bây giờ, bạn có đủ kiến ​​thức để cấu hình fail2ban. Sử dụng fail2ban là một cách tốt và dễ dàng để ngăn chặn lũ lụt (tấn công Brute-force). Nó cũng là một cách hay để hạn chế số lượng yêu cầu xấu mà bạn nhận được trên máy chủ web Apache của bạn.