Bảo mật cho VPS luôn là vấn đề được hầu hết người dùng quan tâm để tránh mất dữ liệu. Nếu bạn quan tâm đến việc bảo vệ VPS của mình trước những đợt tấn công brute force attack dò mật khẩu thì bài viết này là dành cho bạn! Tino Group sẽ cùng bạn tìm hiểu về Fail2ban là gì cũng như hướng dẫn bạn cách sử dụng Fail2ban để bảo vệ VPS hoàn toàn miễn phí!
Tìm hiểu về Fail2ban
Fail2ban là gì? Vì sao nên sử dụng Fail2ban?
Fail2ban làm một ứng dụng được viết bằng ngôn ngữ Python hỗ trợ phân tích, theo dõi log của hệ thống nhằm phát hiện và ngăn chặn các cuộc tấn công vào server của bạn.
Ứng dụng Fail2ban tập trung phát triển để bảo vệ SSH và ngăn chặn các cuộc tấn công vào SSH như brute force attack là chính. Tuy nhiên, bạn có thể thiết lập các rule, các tham số để sử dụng trên bất cứ dịch vụ nào có hỗ trợ log file.
Bạn nên sử dụng Fail2ban nhằm tránh những cuộc tấn công brute force attack vào VPS của bạn vì Fail2ban hoàn toàn miễn phí và dễ dàng cài đặt. Ngoài ra, Fail2ban còn có thể hỗ trợ giảm thiểu các cuộc tấn công DDos cũng như Fail2ban rất nhiều tính năng khác sẽ được liệt kê trong phần tiếp theo.
Fail2ban có những tính năng gì?
- Có nền tảng là kiến trúc máy chủ – máy khách
- Hỗ trợ đa luồng
- Có thể hỗ trợ phân tích các tệp nhật ký và tìm kiếm các mẫu
- Tạo lệnh cấm theo 1 khoản thời gian nhất định
- Có thể xử lý nhiều dịch vụ như SSHD, Apache và VSFTPD,…
- Hỗ trợ cho cơ sở dữ liệu
- Hỗ trợ các hành động – action dựa trên ngôn ngữ Python
- Hỗ trợ tạo bộ lọc tùy chỉnh theo thời gian
Hướng dẫn sử dụng Fail2ban
Cài đặt Fail2ban trên CentOS 7
Cài đặt EPEL bổ sung
Để đảm bảo hệ thống được cập nhật chính xác thời gian và các gói cài đặt khác cần thiết, bạn nên cài đặt EPEL – Gói bổ sung cho Enterprise Linux. Để cài đặt EPEL, bạn chạy lệnh sau đây trong SSH:
sudo yum -y install epel-release
Để cài đặt Fail2ban trên CentOS 7, bạn tiếp tục chạy lệnh sau đây:
sudo yum -y install fail2ban
Nếu bạn muốn nhận email thông báo khi server của bạn diễn ra các cuộc tấn công, bạn cài đặt Sendmail như sau:
sudo yum install sendmail
Để chắc chắn Fail2ban hoạt động tốt, bạn thực hiện khởi động lại Fail2ban và Sendmail bằng các lệnh sau đây. Lưu ý: chạy từng lệnh, không phải copy toàn bộ vào và chạy bạn nhé!
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
sudo systemctl start sendmail
sudo systemctl enable sendmail
Cấu hình Fail2ban
Nếu bạn không biết nhiều về cách cấu hình Fail2ban, bạn có thể sử dụng chế độ mặc định của Fail2ban được thiết lập sẵn và rất ổn. Bạn chạy lệnh sau đây để xem cấu hình mặc định của Fail2ban bằng Nano text:
nano /etc/fail2ban/jail.conf
Đây là cấu hình mặc định của Fail2ban:
[DEFAULT]
ignoreip = 127.0.0.1
bantime = 600
findtime = 600
maxretry = 3
Giải thích về cấu hình mặc định của Fail2ban:
- ignoreip: danh sách những địa chỉ IP không bị block, bạn có thể thấy, địa chỉ 127.0.0.1 sẽ mặc định không bị chặn.
- bantime: nếu bị block, địa chỉ IP đó sẽ bị block trong x giây.
- findtime: khoản thời gian (tính bằng giây) địa chỉ IP đó phải đăng nhập thành công. Nếu không, Fail2ban sẽ block IP dựa trên số lần đăng nhập thất bại.
- maxretry: số lần đăng nhập thất bại được cho phép
Cấu hình mặc định đã khá ổn. Nếu bạn muốn điều chỉnh, bạn chỉ cần thay đổi thông số lại là được nhé!
Cài đặt Fail2ban để bảo vệ SSH
Để có thể sử dụng Fail2ban vào việc bảo vệ SSH, bạn thực hiện các bước như sau:
Bước 1: sử dụng Nano text để tạo file jail.local.
nano /etc/fail2ban/jail.local
Bước 2: bạn nhập nội dung sau vào để tạo một bộ lọc bảo vệ nhé!
[sshd]
enabled = true
filter = sshd
action = iptables[cấu hình action của bạn]
# sendmail-whois[cấu hình sendmail của bạn]
logpath = /var/log/secure
maxretry = 5
bantime = 86.400
Trong đó, bạn cần lưu tâm và có thể điều chỉnh những thông số sau:
- enabled: true = kích hoạt chế độ bảo về SSH, bạn chuyển thành false nếu muốn tắt chế độ bảo vệ.
- filter: bạn sử dụng file cấu hình mặc định hoặc điều chỉnh nếu bạn muốn
- action: Fail2ban sẽ tiến hành block bất cứ địa chỉ IP nào nếu khớp với bộ lọc. Nếu trong phần cài đặt, bạn có cài đặt Sendmail để báo các cuộc tấn công, bạn sẽ cần cấu hình thư gửi đến có dạng ra sao: sendmail-whois – nội dung
- logpath: đường dẫn dùng để theo dõi
- maxretry: số lần nhập sai tối đa
- bantime: thời gian địa chỉ IP bị block được tính bằng giây. Bạn có thể tham khảo một số thời gian block thường dùng như: 1 phút = 60 giây; 1 giờ = 3600 giây hoặc 1 ngày = 86.400 giây.
Cài đặt Fail2ban để chống brute force attack WordPress
Nếu bạn đang sử dụng WordPress, bạn có thể sử dụng Fail2ban để chống lại các cuộc tấn công brute force attack bằng cách tạo 1 bộ lọc.
Tạo bộ lọc
Đầu tiên, bạn sẽ cần phải tạo một bộ lọc. Bạn có thể sử dụng nano text hoặc bất cứ dạng edittext nào mà bạn thường sử dụng để tạo wwp.conf. “Wwp” là quy ước cá nhân của tôi để sử dụng thay thế từ “WordPress” hoặc bạn có thể thay thế bằng từ “wordpress” đầy đủ để đặt tên.
nano /etc/fail2ban/filter.d/wwp.conf
Nhập nội dung sau vào file vừa tạo:
Definition]
failregex = ^<HOST> .* "POST .*wp-login.php
^<HOST> .* "POST .*xmlrpc.php
ignoreregex =
Tạo file hành động chặn
Bạn tạo file wwp.local bằng lệnh:
nano /etc/fail2ban/jail.d/wwp.local
Nhập nội dung sau vào:
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/*.log
/var/log/httpd/access_log
maxretry = 5
findtime = 3600
bantime = 86.400
Lưu ý: bạn sẽ cần thay đổi logpath sao cho chính xác với cấu hình server của bạn.
Kiểm tra Fail2ban đã hoạt động chưa
Kiểm tra danh sách IP bị block
Để kiểm tra danh sách các địa chỉ IP bị Fail2ban block, bạn có thể chạy lệnh như sau:
sudo fail2ban-client status sshd
Ví dụ về những danh sách IP bị block:
Cách mở block IP
Nếu Fail2ban khóa nhầm hoặc bạn vô tình gõ nhầm và bị Fail2ban block, bạn thực hiện mở lại địa chỉ IP của mình như sau:
sudo fail2ban-client set sshd unbanip nhập địa chỉ IP bị block trong danh sách
Vậy là bạn đã cũng Tino Group tìm hiểu những kiến thức cơ bản về Fail2ban cũng như cách để sử dụng Fail2ban. Tino Group hi vọng rằng những kiến thức này sẽ hỗ trợ bảo vệ VPS của bạn trước các cuộc tấn công DDoS, brute force attack và những cuộc tấn công khác trong tương lai.
Những câu hỏi thường gặp về Fail2ban
Vì sao CVS user sử dụng SSH lại bị chặn sau khi cài đặt Fail2ban?
Nếu bạn đang tích hợp CVS Eclipse với SSH, mỗi lần bạn truy cập vào CVS sẽ bị tính là 1 lần truy cập không thành công trước khi bạn đăng nhập một cách hợp lệ. Vì thế, đôi khi CVS user sẽ bị cấm không thể sử dụng được SSH.
Vì sao Fail2ban-client không thể truy cập vào server?
Đôi khi, bạn đang chạy 1 lệnh mà không có sudo. Vì vậy, bạn thử xem ví dụ minh hoạ dưới đây và kiểm tra lại câu lệnh của mình:
Câu lệnh chưa đúng:
- $ fail2ban-client status
- ERROR Unable to contact server. Is it running?
Câu lệnh đúng:
- $ sudo fail2ban-client status
- Status
- |- Number of jail: 1
- `- Jail list: ssh
Vì sao email trả kết quả "Here are/is more information about <ip>" và không có nội dung gì khác?
Nguyên nhân dẫn đến lỗi email trả về hộp thư của bạn chỉ có dòng chữ “Here are/is more information about <ip>” nhưng sau đó lại không có thông tin gì cả là do bạn đang sử dụng mail-whois*/sendmail-whois* nhưng bạn lại chưa cài đặt tệp thực thi WHOIS.
Làm sao để tìm hiểu thêm về Fail2ban?
Để tìm hiểu thêm các thông tin về cách cài đặt trên các hệ điều hành khác, các cách khắc phục sự cố cũng như những tính năng sẽ cập nhật trong tương lai, bạn hãy truy cập vào trang chủ của Fail2ban và tìm hiểu nhé!