Тази статия е част от серията Ръководство за Apache Server:

  • Осигуряване на Apache на Ubuntu - Част 1
  • Осигуряване на Apache на Ubuntu - Част 2
  • Оптимизиране на ефективността на Apache - Част 1
  • Оптимизиране на ефективността на Apache - Част 2
  • Настройване на Apache на
  • Настройване на IP и Port-базирани Virtualhost в Apache
  • Как да настроите паролата за защита на уеб директорията в Apache
  • Настройване на Apache Server със SSL поддръжка на Ubuntu
  • Създаване на Fail2ban за защита на Apache от DDOS атака
  • Как да настроите Webdata с Apache на Ubuntu
  • Следете уеб сървъра на Apache, използвайки Mod_status
  • Как да защитите срещу DDoS с Mod_evasive на Apache Server

Apache е един от най-широко използваните и популярни уеб сървъри в света, така че е важно да защитите уебсайта си и потребителите от злоумишлени атаки. Fail2ban е софтуер за предотвратяване на проникване с отворен код, написан в Python. Fail2Ban непрекъснато анализира лог файловете на различни услуги (като Apache, ssh, postfix ...) и ако открие злонамерени атаки, тя създава правила за защитната стена да блокират IP адресите на хакерите за определен период от време. Fail2Ban също така информира системния администратор с имейл за своята дейност.

В тази статия ще ви обясня как да инсталирате fail2ban и да го конфигурирате, за да следите вашите Apache дневници за опити за неуспешно удостоверяване на зловреден код.

Изисквания

  • Ubuntu сървър 14.04 с инсталиран Apache
  • Apache е конфигуриран с удостоверяване с парола

Инсталиране на Fail2Ban

Първо се уверете, че сървърът на Apache работи и че е активирана удостоверяването с парола.

След това можете да инсталирате Fail2ban, като стартирате:

 sudo apt-get актуализация sudo apt-get инсталирате fail2ban 

Конфигурирайте fail2ban за Apache

Файлът fail2ban запазва своя конфигурационен файл "jail.conf" в директорията "/ etc / fail2ban /". Той съдържа набор от предварително дефинирани филтри за различни услуги и се препоръчва да не редактирате този файл. Трябва да активирате предварително дефинираните затвори в Apache, като създадете файл "/etc/fail2ban/jail.local":

За да създадете нов файл "jail.local", стартирайте:

 sudo nano /etc/fail2ban/jail.local 

Добавете следното съдържание:

 [apache] enabled = true порт = http, https филтър = apache-auth logpath = /var/log/apache2/*error.log maxretry = 3 findtime = 600 ignoreip = 192.168.1.227 [apache-noscript] http, https филтър = apache-noscript logpath = /var/log/apache2/*error.log maxretry = 3 намерение = 600 ignoreip = 192.168.1.227 [apache-overflows] enabled = true порт = http, https filter = logpath = /var/log/apache2/*error.log maxretry = 2 намерение = 600 ignoreip = 192.168.1.227 [apache-badbots] enabled = true порт = http, https филтър = apache-badbots logpath = / var / log / apache2 /*error.log maxretry = 2 намерение = 600 ignoreip = 192.168.1.227 

Запазете и затворете файла, след което рестартирайте fail2ban, за да влязат промените в сила.

 sudo /etc/init.d/fail2ban рестартиране 

Можете да проверите правилата, добавени от Fail2Ban в iptables, като използвате следната команда:

 sudo iptables -L 

Резултатът ще изглежда така:

Забележка : Можете да намерите подробностите за всеки затвор, описани по-долу:

  • [apache] : този затвор се използва за блокиране на неуспешни опити за влизане.
  • [apache-noscript] : тази затвора се използва за блокиране на отдалечени клиенти, които търсят скриптове на уебсайта, за да изпълнят.
  • [apache-overflows] : тази затвора се използва за блокиране на клиенти, които се опитват да поискат подозрителни URL адреси.
  • [apache-noscript] : тази затвора се използва за блокиране на отдалечени клиенти, които търсят скриптове на уебсайт, за да изпълнят.
  • [apache-badbots] : този затвор се използва за блокиране на злонамерени заявки за bot.

Забележка : Можете да намерите подробностите за всяко правило, описано по-долу.

  • enabled : тази опция означава, че Apache защита е включена.
  • port : тази опция определя услугите, които не са мониторинг fail2ban.
  • filter : тази опция се отнася до конфигурационния файл, намиращ се в директорията /etc/fail2ban/filter.d/ .
  • logpath : тази опция определя местоположението на лог файл.
  • bantime : тази опция определя броя на секундите, които отдалечен хост ще бъде блокиран от сървъра.
  • maxretry : тази опция определя броя на неуспешните опити за влизане, преди отдалечен хост да бъде блокиран за продължителността на забраната.
  • ignoreip : тази опция ви позволява да правите бели списъци на определени IP адреси от блокиране.

Проверете състоянието на забрана на Fail2ban

След като бъдат активирани затворите, можете да проверите fail2ban с помощта на командата fail2ban-client :

 sudo fail2ban-client статус 

Можете да видите списък с всички затвори, които сте активирали.

За да видите състоянието на конкретен затвор като apache, apache-badbots, изпълнявайте следните команди:

 sudo fail2ban-client статус apache 

Изходът изглежда така:

Можете също да зададете ръчно банкови или небанкови IP адреси.

Например, за да забраните IP адрес (192.168.1.20) с затвор в Apache:

 sudo fail2ban-клиентът задал apache banip 192.168.1.20 

За да премахнете IP адрес (192.168.1.21) с затвор в Apache:

 sudo fail2ban-клиент настроен на apache unbanip 192.168.1.21 

Тестване на Fail2Ban

Важно е да тествате вашия fail2ban дали той работи както се очаква или не. Сега на отдалечена машина, отворете уеб браузъра си и въведете URL адреса на вашия домейн (или IP адреса на вашия сървър). Когато Apache подкани за удостоверяване, дайте неколкократно некоректно потребителско име и парола. След като сте достигнали ограничението, трябва да бъдете блокирани и да не можете да получите достъп до сайта.

Проверете състоянието с командата fail2ban-client :

 sudo fail2ban-client статус apache 

Ще видите, че вашият IP адрес е блокиран от сайта.

заключение

Сега имате достатъчно знания, за да конфигурирате fail2ban. Използването на fail2ban е добър и лесен начин да се спре наводнението (атаки с груба сила). Това също е добър начин да ограничите броя на грешните заявки, които получавате на уеб сървъра си в Apache.