Cách sử dụng Fail2ban để bảo mật máy chủ CentOS

30/12/2020

Mục lục

  1. Giới thiệu
  2. Cài đặt và cấu hình
  3. Giám sát cấu hình firewall và nhật ký Fail2ban
  4. Giám sát SSH login
  5. Kết luận

1. Giới thiệu

Fail2Ban là một dịch vụ quét các tệp nhật ký trong thời gian thực và tìm kiếm các nỗ lực đăng nhập mạnh mẽ. Nếu nó tìm thấy nhiều lần đăng nhập thất bại từ một IP duy nhất, nó sẽ chặn người xem bằng cách sửa đổi iptables hoặc firewalld quy tắc. Fail2Ban được sử dụng để bảo mật dịch vụ SSH nhưng chúng tôi có thể bảo mật nhiều dịch vụ bằng Fail2Ban.

2. Cài đặt và cấu hình

Cài đặt Fail2ban

  • Trước khi cài đặt bất kỳ gói nào trên hệ thống của bạn, bạn nên cập nhật hệ thống và kho lưu trữ, ta thực hiện lệnh sau:
 yum -y update
  • Bạn sẽ cần cài đặt kho lưu trữ EPEL trong hệ thống của mình, vì gói Fail2Ban không có sẵn trên kho lưu trữ YUM mặc định.
yum -y install epel-release
  • Cài đặt Fail2Ban bằng lệnh sau.
yum -y install fail2ban
  • Sau khi cài đặt, bạn có thể start Fail2Ban bằng câu lệnh:
systemctl start fail2ban
  • Để bật Fail2Ban tự động khởi động khi khởi động, hãy chạy lệnh sau.
systemctl enable fail2ban
  • Để kiểm tra trạng thái dịch vụ Fail2Ban, bạn có thể chạy lệnh sau.
systemctl status fail2ban

Cấu hình

Cấu hình Fail2ban

Sau khi cài đặt xong, bạn mở file cấu hình của Fail2Ban lên sẽ thấy một số thông số như sau:

vi /etc/fail2ban/jail.conf
[DEFAULT]  # "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not # ban a host which matches an address in this list. Several addresses can be # defined using space separator. ignoreip = 127.0.0.1  # "bantime" is the number of seconds that a host is banned. bantime = 600  # A host is banned if it has generated "maxretry" during the last "findtime" # seconds. findtime = 600  # "maxretry" is the number of failures before a host get banned. maxretry = 3

Trong đó:

  • ignoreip: không block những địa chỉ này, thường địa chỉ IP ở VN là địa chỉ động, nên chúng ta không sử dụng được option này.
  • bantime: khoảng thời gian (giây) block IP
  • findtime: khoảng thời gian (giây) một IP phải login thành công
  • maxretry: số lần login false tối đa

Cấu hình Fail2ban cho SSH

Tạo file cấu hình

vi /etc/fail2ban/jail.local
[sshd] enabled  = true filter   = sshd action   = iptables[name=SSH, port=ssh, protocol=tcp] logpath  = /var/log/secure maxretry = 5 bantime = 3600

Trong đó:

  • enabled: kích hoạt bảo vệ
  • filter: giữ mặc định để sử dụng file cấu hình /etc/fail2ban/filter.d/sshd.conf
  • action: fail2ban sẽ ban địa chỉ IP nếu match filter /etc/fail2ban/action.d/iptables.conf
  • logpath: đường dẫn file log fail2ban
  • maxretry: số lần login false tối đa
  • bantime: thời gian ban IP 3600 giây = 1 giờ, bạn có thể chỉnh nếu muốn.

Kiểm tra rulues của fail2ban trên IPtables

iptables -L

Kết quả:

Chain INPUT (policy ACCEPT) target     prot opt source               destination          f2b-SSH    tcp  --  anywhere             anywhere             tcp dpt:ssh  Chain FORWARD (policy ACCEPT) target     prot opt source               destination           Chain OUTPUT (policy ACCEPT) target     prot opt source               destination           Chain f2b-SSH (1 references) target     prot opt source               destination          RETURN     all  --  anywhere             anywhere   

3. Giám sát cấu hình firewall và nhật ký Fail2ban

Đầu tiên cần kiểm tra trạng thái của dịch vụ bằng câu lệnh sau:

systemctl status fail2ban

Nếu có lỗi, bạn có thể khắc phục sự cố bằng cách kiểm tra nhật ký cho đơn vị fail2ban kể từ lần khởi động cuối cùng:

sudo journalctl -b -u fail2ban

Theo dõi nhật ký của Fail2ban để biết bản ghi các hành động gần đây:

sudo tail -F /var/log/fail2ban.log

4. Giám sát SSH login

Bạn có thể sử dụng lệnh sau để biết được VPS/Server đã từng bị tấn công SSH chưa:

cat /var/log/secure | grep 'Failed password' | sort | uniq -c

Kết quả thường sẽ là như bên dưới, đã từng có rất nhiều đợt tấn công:

Để xem IP đã bị banned bởi Fail2Ban bạn sử dụng lệnh:

fail2ban-client status sshd

Output trả về sẽ có dạng như thế này:

Để xóa IP khỏi danh sách banned, bạn sử dụng lệnh sau :

fail2ban-client set sshd unbanip IPADDRESS

5. Kết luận

Như vậy bạn đã có thể cài đặt và cấu hình Fail2ban để bảo vệ SSH khỏi các cuộc tấn công Brute Force vào hệ thống VPS/Cloud Server rồi. Chúc các bạn thành công!

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Mẹo #3 : Cập nhật WordPress không cần FTP

Đôi khi, khi bạn cập nhật WordPress, các plugin hoặc theme. Một cửa sổ có thể xuất hiện và yêu...
30/12/2020

[Cobbler] Tổng quan về cobbler

Ở bài viết trước đã giới thiệu về PXE cung cấp cho các bạn sự hiểu biết cơ bản về...
30/12/2020

BigBlueButton + Moodle : Sự kết hợp hoàn hảo cho các đơn vị đào tạo trực tuyến.

Đào tạo trực tuyến – E Learning đang là giải pháp bắt buộc đối với các đơn vị đào...
30/12/2020