Thứ năm, 14/06/2012 | 00:00 GMT+7

Cách bảo vệ SSH bằng fail2ban trên CentOS 6


Giới thiệu về Fail2Ban

Các server không tồn tại biệt lập và những server chỉ có cấu hình SSH cơ bản nhất có thể dễ bị tấn công brute force. fail2ban cung cấp một cách tự động bảo vệ server khỏi các dấu hiệu độc hại. Chương trình hoạt động bằng cách quét qua các file log và phản ứng với các hành động vi phạm như các lần đăng nhập không thành công lặp lại.

Bước một — Cài đặt Fail2Ban

Vì fail2ban không có sẵn từ CentOS, ta nên bắt đầu bằng cách download repository EPEL:

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Theo dõi bằng cách cài đặt fail2ban:

yum install fail2ban

Bước hai — Sao chép file cấu hình

Tệp cấu hình fail2ban mặc định có vị trí tại /etc/fail2ban/jail.conf. Tuy nhiên, công việc cấu hình sẽ không được thực hiện trong file đó và thay vào đó ta nên tạo một bản sao local của nó.

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

Sau khi file được sao chép, bạn có thể thực hiện tất cả các thay đổi của bạn trong file jail.local mới. Nhiều dịch vụ có thể cần được bảo vệ đã có trong file . Mỗi phần đều nằm trong phần riêng của nó, được cấu hình và tắt.

Bước ba — Cấu hình mặc định trong Jail.Local

Mở file cấu hình fail2ban mới:

vi /etc/fail2ban/jail.local

Phần đầu tiên của mặc định bao gồm các luật cơ bản mà fail2ban sẽ tuân theo. Nếu bạn muốn cài đặt bảo vệ nhiều sắc thái hơn cho server riêng ảo của bạn , bạn có thể tùy chỉnh các chi tiết trong từng phần.

Bạn có thể xem phần mặc định bên dưới.

[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  = 3600

# 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

Viết địa chỉ IP cá nhân của bạn vào dòng bỏ qua. Bạn có thể tách từng địa chỉ bằng một khoảng trắng. Bỏ quaIP cho phép bạn liệt kê các địa chỉ IP nhất định và đảm bảo chúng không bị khóa khỏi VPS của bạn. Bao gồm địa chỉ của bạn sẽ đảm bảo bạn không vô tình cấm mình khỏi server riêng ảo của bạn .

Bước tiếp theo là quyết định một bantime, số giây mà một server sẽ bị chặn từ server nếu họ được xác định là vi phạm bất kỳ các luật . Điều này đặc biệt hữu ích trong trường hợp bot, một khi bị cấm, sẽ đơn giản chuyển sang mục tiêu tiếp theo. Giá trị mặc định được đặt trong 10 phút — bạn có thể tăng thời gian này lên một giờ (hoặc cao hơn) nếu muốn.

Maxretry là số lần đăng nhập không chính xác mà server lưu trữ có thể có trước khi họ bị cấm trong repository ảng thời gian cấm.

Findtime đề cập đến khoảng thời gian mà server lưu trữ phải đăng nhập. Cài đặt mặc định là 10 phút; điều này nghĩa là nếu server cố gắng và không đăng nhập được nhiều hơn số lần tối đa trong 10 phút được chỉ định, họ sẽ bị cấm.

Bước 4 (Tùy chọn) —Cấu hình phần ssh-iptables trong Jail.Local

Phần chi tiết SSH chỉ nằm ở phía dưới một chút trong cấu hình, và nó đã được cài đặt và bật. Mặc dù bạn không bắt buộc phải thực hiện bất kỳ thay đổi nào trong phần này, bạn có thể tìm thấy chi tiết về từng dòng bên dưới.

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath  = /var/log/secure
maxretry = 5

Enabled chỉ đơn giản là đề cập đến thực tế là bảo vệ SSH đang bật. Bạn có thể tắt nó bằng từ "false".

Bộ lọc , được đặt theo mặc định thành sshd, tham chiếu đến file cấu hình chứa các luật fail2banuses để tìm các kết quả phù hợp. Tên là version rút gọn của phần mở rộng file . Ví dụ: sshd đề cập đến /etc/fail2ban/filter.d/sshd.conf.

Hành động mô tả các bước mà fail2ban sẽ thực hiện để cấm địa chỉ IP phù hợp. Cũng giống như mục nhập bộ lọc, mỗi hành động tham chiếu đến một file trong folder action.d. Hành động cấm mặc định, "iptables" có thể được tìm thấy tại /etc/fail2ban/action.d/iptables.conf.

Trong chi tiết "iptables", bạn có thể tùy chỉnh thêm fail2ban. Ví dụ: nếu bạn đang sử dụng một cổng không chuẩn, bạn có thể thay đổi số cổng trong dấu ngoặc để khớp, làm cho dòng trông giống như sau:

 eg. iptables[name=SSH, port=30000, protocol=tcp]

Bạn cũng có thể thay đổi giao thức từ TCP sang UDP trong dòng này, tùy thuộc vào giao thức bạn muốn fail2ban giám sát.

Nếu bạn có một server thư được cài đặt trên server riêng ảo của bạn , Fail2Ban có thể gửi email cho bạn khi nó cấm địa chỉ IP. Trong trường hợp mặc định, sendmail-whois đề cập đến các hành động tại /etc/fail2ban/action.d/sendmail-whois.conf.

đường dẫn log đề cập đến vị trí log mà fail2ban sẽ theo dõi.

Dòng thử lại tối đa trong phần SSH có cùng định nghĩa với tùy chọn mặc định. Tuy nhiên, nếu bạn đã bật nhiều dịch vụ và muốn có các giá trị cụ thể cho từng dịch vụ, bạn có thể đặt số lượng thử lại tối đa mới cho SSH tại đây.

Bước năm — Khởi động lại Fail2Ban

Sau khi thực hiện bất kỳ thay đổi nào đối với cấu hình fail2ban, hãy luôn đảm bảo khởi động lại Fail2Ban:

sudo service fail2ban restart

Bạn có thể xem các luật mà fail2ban có hiệu lực trong bảng IP:

iptables -L
Bởi Etel Sverdlov

Tags:

Các tin liên quan

Cách cài đặt Postfix trên CentOS 6
2012-05-25
Cách cài đặt Ruby on Rails trên CentOS 6
2012-05-25