Skip to main content

Боротьба з брутфорсом на wordpress



Досить давно на різних сайтах і форумах статті та теми, в яких говорилося про численні брутфорс-атаках на wordpress-сайти. Нещодавно довелося зіткнутися з цією заразою. :)

У даній статті хотілося б розповісти про свій досвід боротьби з підбором пароля на сайтах, які працюють на WordPress. Відразу зазначу, що всі мої сайти працюють на nginx + php-fpm .



Як інструкція в основу була взята одна стаття. Однак, описаний рецепт довелося трохи модифікувати під специфіку своїх атакуючих. :)

Налаштування



Насамперед необхідно встановити fail2ban. Це не повинно викликати труднощів.

  aptitude install fail2ban 

Після чого в кінець конфігураційного файлу /etc/fail2ban/jail.conf додаємо наступне:

  [Nginx-wp-auth]
 enabled = true
 filter = nginx-wp-auth
 action = iptables-multiport [name = wp-auth, port = "http, https"]
 logpath = /var/log/nginx/*.access.log
 maxretry = 3
 bantime = 3600 

В даному випадку action блокуватиме доступ для порушників тільки за вказаними протоколами і позначати їх як wp-auth. У logpath вказуємо шлях до логам.



Будуть аналізуватися всі логи, типу example.com.access.log. Для балок сайтів на вордпресс можна задати особливі імена, наприклад, wordpress-example.com.access.log, щоб аналізувалися тільки ці лог-файли.

Максимальне число спроб авторизації для одного айпі - три. Час блокування - годину. Жоден із цих параметрів можна підбирати в індивідуальному порядку.

Наступним кроком буде створення фільтра.

  touch /etc/fail2ban/filter.d/nginx-wp-auth.conf 

Під час цієї дії у мене виникли складності: приклад з оригінальної статті не працював. І його довелося змінити. :)

  [Definition]
 failregex = <HOST>. * / wp-login.php HTTP / 1.1 "200
      <HOST>. * / Wp-login.php / HTTP / 1.1 "302
      <HOST>. * / Wp-login.php HTTP / 1.0 "200
 ignoreregex =

У першому параметри записані всі збіги, які слід шукати в лог-файлах. Тут потрібно проаналізувати запити атакуючих в логах вашого сервера і додати всі підозрілі, пов'язані з wp-login.php.

Другий параметр призначений для винятків з першого рядка. Він не буде потрібно і залишається порожнім.

тестування

Після створення фільтра перевірте його роботу за допомогою команди:

  fail2ban-regex / var / log / nginx / example.com .access.log /etc/fail2ban/filter.d/nginx-wp-auth.conf 

Виявлені збіги будуть відображені в результатах тесту. Наприклад, так:

  Running tests
 =============

 Use regex file: /etc/fail2ban/filter.d/nginx-wp-auth.conf
 Use log file: /var/log/nginx/***.ru.access.log


 Results
 =======

 Failregex
 | - Regular expressions:
 |  [1]. * / Wp-login.php HTTP / 1.1 "200
 |  [2]. * / Wp-login.php / HTTP / 1.1 "302
 |  [3]. * / Wp-login.php HTTP / 1.0 "200
 |
 `- Number of matches:
    [1] 1 match (es)
    [2] 0 match (es)
    [3] 0 match (es)

 Ignoreregex
 | - Regular expressions:
 |
 `- Number of matches:

 Summary
 =======

 Addresses found:
 [1]
     192.99.186.30 (Fri Jul 04 7:29:20 2014 року)
 [2]
 [3]

 Date template hits:
 0 hit (s): MONTH Day Hour: Minute: Second
 0 hit (s): WEEKDAY MONTH Day Hour: Minute: Second Year
 0 hit (s): WEEKDAY MONTH Day Hour: Minute: Second
 0 hit (s): Year / Month / Day Hour: Minute: Second
 0 hit (s): Day / Month / Year Hour: Minute: Second
 0 hit (s): Day / Month / Year Hour: Minute: Second
 58 hit (s): Day / MONTH / Year: Hour: Minute: Second
 0 hit (s): Month / Day / Year: Hour: Minute: Second
 0 hit (s): Year-Month-Day Hour: Minute: Second
 0 hit (s): Year.Month.Day Hour: Minute: Second
 0 hit (s): Day-MONTH-Year Hour: Minute: Second [.Millisecond]
 0 hit (s): Day-Month-Year Hour: Minute: Second
 0 hit (s): TAI64N
 0 hit (s): Epoch
 0 hit (s): ISO 8601
 0 hit (s): Hour: Minute: Second
 0 hit (s): <Month / Day / Year @ Hour: Minute: Second>

 Success, the total number of match is 1 

Перевірка журналу блокувань

Fail2ban буде записувати всі вироблені блокування. При необхідності можна перевіряти лог-файл /var/log/fail2ban.log на їх наявність.

  grep WARNING /var/log/fail2ban.log 


Як ви оціните статтю?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (Поки оцінок немає)
Завантаження ...

Додати коментар

Ваш e-mail не буде опублікований.