Bảo vệ máy chủ Linux bằng công cụ Fail2Ban

//

Bảo vệ máy chủ Linux bằng công cụ Fail2Ban

Fail2Ban là gì?

Fail2ban là ứng dụng theo dõi các file log, phát hiện và ngăn chặn kết nối từ những địa chỉ IP có những dấu hiệu tấn công dò mật khẩu như đăng nhập SSH, sử dụng iptables để block địa chỉ IP trong một thời gian nhất định.

Lưu ý: ếu bạn đang sử dụng firewall CSF thì không nên sử dụng Fail2Ban vì sẽ xung đột hoạt động sử dụng ‘iptables’.

Sử dụng Fail2Ban chống dò mật khẩu truy cập SSH

Sử dụng Fail2Ban chống dò mật khẩu truy cập SSH

Thông thường hê điều hành mã nguồn mở chúng ta đều làm việc qua dòng lệnh, và để làm việc từ xa chúng ta sẽ sử dụng dịch vụ SSH để truy cập server.

Việc sử dụng SSH này luôn bị dò mật khẩu và để hạn chếviệc dò mật khẩu này chúng ta phải giới hạn số lần đăng nhập sai sau bao nhiêu lần

Bài này mình sẽ hướng dẫn các bạn chống dò mật khẩu SSH bằng Fail2ban, ngoài ra các bạn cũng có thể dùng nó để chống dò mật khẩu webserver Apache, Nginx hay nhiều tính năng khác.

Cài đặt Fail2ban

Đầu tiên chúng ta cần cài đặt công cụ Fail2ban, chạy lệnh sau để cài đặt

với centos

sudo yum -y install epel-release

sudo yum -y install fail2ban

với ubuntu

sudo apt install fail2ban

lưu ý: update hệ điều hành trước khi cài đặt

Mặc định Fail2ban sẽ cho phép đăng nhập sai 6 lần trong 10 phút, sau đó nó sẽ khóa địa chỉ IP trong vòng 10 phút. Tuy nhiên, bạn có thể thay đổi chính sách này theo ý muốn.

Cấu hình Fail2ban bảo vệ SSH

Các thộc tính chính của Fail2ban

  • Filter: Chứa mã regex lọc ra các mẫu cụ thể cần nhận dạng trong log file.
  • Action: định nghĩa lệnh Fail2ban thực hiện.
  • Jail: bao gồm một filter và một hoặc một vài actions, ví dụ quy định các chính sách như số lần đăng nhập lỗi, thời gian ban IP…

File cấu hình mặc định của fail2ban: /etc/fail2ban/jail.conf

lưu ý chúng ta sẽ không sửa trực tiếp trên file này, mà chúng ta sẽ tạo một file quy tắc mới với tên jail.local

Ở đây mình sẽ copy file/etc/fail2ban/jail.conf thành /etc/fail2ban/jail.local

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Xong chúng ta sẽ thêm nội dung sau vào:

[sshd]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/secure
maxretry = 3
bantime = 300

Trong đó:

  • [sshd] dịch vụ cần áp dụng quy tắc ở đây là SSH
  • enabled  = true  là kích hoạt, muốn tắt thì để false
  • filter   = sshd: trỏ tới file cấu hình /etc/fail2ban/filter.d/sshd.conf
  • action   = iptables[name=SSH, port=ssh, protocol=tcp]: Fail2ban sẽ ban địa chỉ IP nếu nó match filter trong tập tin /etc/fail2ban/action.d/iptables.conf
  • logpath  = /var/log/: nơi lưu trữ log
  • maxretry = 3: số lần đăng nhập sai
  • bantime = 300: thời gian block tính bằng giây

khởi động lại fail2ban để áp dụng quy tắc

service fail2ban restart

Khởi động fail2ban cùng hệ thống

Với ubuntu:

update-rc.d fail2ban defaults

Với Centos:

chkconfig --level 23 fail2ban on        #Centos 6

systemctl enable fail2ban               #CenOS 7

Sử dụng câu lệnh “iptables -L” để kiểm tra xem iptables đã được update chưa. Nếu có Chain có tên F2b-ssh là đã thành công

fail2ban

Kiểm tra hoạt động fail2ban

fail2ban-client status sshd

Kiểm tra hoạt động fail2ban

Vậy là xong chúng ta có thể hạn chế việc dò mật khẩu truy cập server qua SSH. Ngoài ra fail2ban còn hỗ trợ rất nhều tính khác bảo mật khác, các bạn có thể tìm hiểu thêm tại đây: https://www.fail2ban.org

Leave a Comment