Вступление
WordPress - это очень надежная система управления контентом (CMS), бесплатная и с открытым исходным кодом. Поскольку каждый может комментировать, создавать учетные записи и публиковать сообщения в WordPress, многие злоумышленники создали сети ботов и серверов, которые скомпрометировали и спамили сайты WordPress с помощью атак методом перебора. Инструмент Fail2ban полезен для предотвращения несанкционированного доступа как к вашему Droplet, так и к вашему сайту WordPress. Он отмечает подозрительные или повторяющиеся сбои входа в систему и заблаговременно блокирует эти IP-адреса, изменяя правила брандмауэра для своей капли.
В этом руководстве мы будем использовать версию 0.9.3 Fail2ban на сервере Ubuntu 14.04 LAMP и интегрировать ее с WordPress с помощью плагина журнала спама.
Предпосылки
Чтобы завершить это руководство, вам нужно
-
Одна капля Ubuntu 14.04 с использованиемthe one-click WordPress instance илиyour own WordPress Droplet
-
Пользователь без полномочий root, настроенный с привилегиями sudo для административных задач. Вы можете узнать, как это сделать, следуя нашимUbuntu 14.04 initial server setup guide.
-
Установите и настройте Fail2ban, следуя этомуHow To Install and Use Fail2ban on Ubuntu 14.04 tutorial.
-
Следуйте инструкциям поHow To Configure Secure Updates and Installations in WordPress on Ubuntu
[[step-1 -–- install-the-wordpress-fail2ban-plugin]] == Шаг 1. Установка плагина WordPress Fail2ban
Сначала войдите на свой сайт WordPress, посетивhttps://your_server_ip/wp-admin
в своем браузере и используя учетные данные администратора, созданные при установке WordPress. После входа в систему вы увидите следующий экран, на котором находится ваша панель управления WordPress.
Посмотрите на левую боковую панель и найдите словоPlugins, которое появится примерно посередине боковой панели. После нажатияPlugins вы увидите этот экран:
Вверху в правом разделе вы можете нажатьAdd New. Это позволяет вам добавлять новые плагины на ваш сайт WordPress, которые могут настраивать, защищать или расширять ваш сайт. В этом случае мы будем искать плагин Fail2ban. Следующий экран будет выглядеть так:
ВведитеFail2ban в поле поиска и нажмитеENTER
на клавиатуре. В результате должен появиться экран, на котором показано несколько подключаемых модулей, из которых нужно установитьWP 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 стал более надежным и защищенным от несанкционированных попыток входа в систему, спама в комментариях и вторжения на ваш сайт.