Как защитить WordPress с помощью Fail2Ban в Ubuntu 14.04

Вступление

WordPress - это очень надежная система управления контентом (CMS), бесплатная и с открытым исходным кодом. Поскольку каждый может комментировать, создавать учетные записи и публиковать сообщения в WordPress, многие злоумышленники создали сети ботов и серверов, которые скомпрометировали и спамили сайты WordPress с помощью атак методом перебора. Инструмент Fail2ban полезен для предотвращения несанкционированного доступа как к вашему Droplet, так и к вашему сайту WordPress. Он отмечает подозрительные или повторяющиеся сбои входа в систему и заблаговременно блокирует эти IP-адреса, изменяя правила брандмауэра для своей капли.

В этом руководстве мы будем использовать версию 0.9.3 Fail2ban на сервере Ubuntu 14.04 LAMP и интегрировать ее с WordPress с помощью плагина журнала спама.

Предпосылки

Чтобы завершить это руководство, вам нужно

[[step-1 -–- install-the-wordpress-fail2ban-plugin]] == Шаг 1. Установка плагина WordPress Fail2ban

Сначала войдите на свой сайт WordPress, посетивhttps://your_server_ip/wp-admin в своем браузере и используя учетные данные администратора, созданные при установке WordPress. После входа в систему вы увидите следующий экран, на котором находится ваша панель управления WordPress.

Dashboard screen

Посмотрите на левую боковую панель и найдите словоPlugins, которое появится примерно посередине боковой панели. После нажатияPlugins вы увидите этот экран:

Plugin

Вверху в правом разделе вы можете нажатьAdd New. Это позволяет вам добавлять новые плагины на ваш сайт WordPress, которые могут настраивать, защищать или расширять ваш сайт. В этом случае мы будем искать плагин Fail2ban. Следующий экран будет выглядеть так:

Add New Search

ВведитеFail2ban в поле поиска и нажмитеENTER на клавиатуре. В результате должен появиться экран, на котором показано несколько подключаемых модулей, из которых нужно установитьWP fail2ban.

Fail2ban

ЩелкнитеInstall Now, чтобы начать установку, где вы увидите два приглашения:Activate Plugin иReturn to Plugin Installer. ВыберитеActivate Plugin, и ваш браузер вернет вас к списку установленных плагинов с новым плагиномWP fail2ban в списке. В это время вы можете нажатьView details, чтобы увидеть дополнительную информацию о вашем новом плагине. Также есть FAQ, который поможет вам понять, как включить такие функции, как блокировка определенных пользователей, которые могут использоваться для спама на вашем сайте WordPress с содержанием или комментариями.

[[step-2 -—- apply-the-wordpress-filter-to-fail2ban]] == Шаг 2 - Применение фильтра WordPress к Fail2ban

Этот плагин WordPress включает в себя новый пользовательский фильтр Fail2ban. На этом этапе мы установим этот фильтр, чтобы Fail2ban мог правильно анализировать и использовать журналы аутентификации, отправляемые в системный журнал.

Сначала переместите фильтр из каталога плагинов WordPress в соответствующее расположение фильтра Fail2ban. Мы будем использовать «жесткий» фильтр WordPress для лучшей защиты:

sudo cp /var/www/html/wp-content/plugins/wp-fail2ban/filters.d/wordpress-hard.conf /etc/fail2ban/filter.d/

Установив новый фильтрwordpress-hard.conf, вы можете указать Fail2ban на соответствующий журнал аутентификации, отредактировав файл/etc/fail2ban/jail.local. Тюрьма в Fail2ban относится к ряду правил и действий, которые предоставляют фильтры для IP-адресов.

Откройте файлjail.local с помощью nano или вашего любимого текстового редактора.

sudo nano /etc/fail2ban/jail.local

Как только файл откроется, прокрутите его до конца и добавьте следующие строки в конец. Эти строки включают плагин, устанавливают фильтр на фильтрwordpress-hard.conf, который мы ранее скопировали в каталогfilters.d, устанавливают соответствующее место регистрации для попыток доступа и указывают, что этот трафик будет поступать наfilters.d (t2) s иhttps порты.

[wordpress-hard]

enabled = true
filter = wordpress-hard
logpath = /var/log/auth.log
maxretry = 3
port = http,https

Сохраните и закройте файл.

Затем вы можете перезапустить Fail2ban, чтобы убедиться, что новый фильтр теперь на месте, запустив эту команду в вашем терминале:

sudo service fail2ban restart

[[step-3 -–- ignoring-login-sessions-from-your-computer]] == Шаг 3 - Игнорирование попыток входа с вашего компьютера

Чтобы предотвратить блокирование вас или других известных пользователей из-за случайных сбоев аутентификации, мы рекомендуем игнорировать общедоступный IP-адрес вашего локального компьютера.

Если вы используете ОС на базе Linux, используйте эту команду:

curl ipecho.net/plain ; echo

В противном случае посетитеhttp://checkip.dyndns.org, чтобы определить общедоступный IP-адрес вашего компьютера. Если есть другие пользователи вашего сайта WordPress в других местах, вы также можете найти их адреса.

Снова откройтеjail.local для редактирования:

sudo nano /etc/fail2ban/jail.local

В следующей строке будут перечислены все пропущенные IP-адреса, начиная с IP-адреса локального сервера (localhost), с пробелом, разделяющим значения друг друга для известных хостов, которым вы хотели бы иметь доступ к WordPress. Добавьте это в раздел DEFAULT под оператором ignoreip, который вы добавили во время настройки плагина WordPress.

ignoreip = 127.0.0.1/8 your_computer_ip

Сохраните и выйдите из редактора.

[[step-4 -–- testing-the-filter]] == Шаг 4 - Тестирование фильтра

Чтобы проверить, работает ли фильтр, вы можете выйти изwp-admin своего сайта WordPress и войти снова.

Вы можете использовать этот статус тюрьмы Fail2ban, чтобы фильтр не отметил ваш успешный вход в систему.

sudo fail2ban-client status wordpress-hard

Вы должны увидеть результаты, похожие на это:

Status for the jail: wordpress-hard
|- filter
|  |- File list:    /var/log/auth.log
|  |- Currently failed: 0
|  `- Total failed: 0
`- action
   |- Currently banned: 0
   |  `- IP list:
   `- Total banned: 0

Если вы просмотрите файлauth.log, вы увидите свой успешный вход в систему в нижней части файла, используяtail, который покажет последние 10 строк вывода:

sudo tail /var/log/auth.log

Успешная аутентификация будет выглядеть так:

Month Day Hour:Minute:Second your_server wordpress(your_server_ip)[PID]: Accepted password for admin from your_computer_ip

Если в журналах появляется неавторизованный пользователь или неудачная аутентификация, ваш новый плагин будет гарантировать, что этот IP-адрес заблокирован от доступа к вашему сайту, соответствующим образом изменив правила брандмауэра.

[[step-5 -–- rotating-your-log-files]] == Шаг 5. Поворот файлов журналов

Если вы обнаружите, что ваш сайт WordPress получает очень большое количество попыток несанкционированного входа, а ваш файл журнала быстро растет, вы можете заменить файл журнала на новый, отредактировав файл/etc/logrotate.conf.

sudo nano /etc/logrotate.conf

Добавьте эти строки, в которых указан максимальный размер файла, разрешения для журнала и количество недель. Например, вы можете установить 4 как количество недель, в течение которых файл будет существовать до обновления:

/var/log/auth.log {
    size 30k
    create 0600 root root
    rotate 4
}

Сохраните и закройте файл соответствующим образом.

Заключение

Выполнив действия, описанные в этом руководстве, вы установили и настроили плагин Fail2ban, исключили свой локальный IP-адрес и протестировали свою работу. Вы также настраиваете ротацию журналов, чтобы ваши файлы журналов не росли бесконечно. Теперь ваш экземпляр WordPress стал более надежным и защищенным от несанкционированных попыток входа в систему, спама в комментариях и вторжения на ваш сайт.

Related