Для тестирования плагина WordPress “Wp Fail2ban” была выбрана ОС CentOS7.
Вначале нужно подготовить сервер под требования CMS WordPress. Установим LAMPF(Linux Apache Mysql PHP FTP).
Заходим по SSH на сервер.
Добавим репозиторий EPEL:
yum install epel-release
Устанавливаем WEB-сервер:
yum install httpd
Создаем конфигурационный файл WEB-сервера, через который подключим домен ukrnames.idua.org:
cat > /etc/httpd/conf.d/vhost.conf << EOF NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin maxim@ukrnames.com ServerName ukrnames.idua.org ServerAlias www.ukrnames.idua.org DocumentRoot /var/www/ukrnames.idua.org/public_html/ ErrorLog /var/www/ukrnames.idua.org/logs/error.log CustomLog /var/www/ukrnames.idua.org/logs/access.log combined </VirtualHost> EOF
После добавления конфиг-файла создадим директории, которые указаны в нем:
mkdir /var/www/ukrnames.idua.org/ mkdir /var/www/ukrnames.idua.org/logs/ mkdir /var/www/ukrnames.idua.org/public_html/
Разрешим фаерволу пропускать соединения по HTTP и HTTPS:
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload
Перезапустим WEB-сервер, чтобы применились изменения:
systemctl restart httpd
Добавим WEB-сервер в автозагрузку:
systemctl enable httpd
Установим сервер баз данных и добавим в автозагрузку:
yum install mariadb-server mariadb systemctl start mariadb systemctl enable mariadb.service
Выполним начальную конфигурацию сервера баз данных:
mysql_secure_installation
Установим PHP:
yum install php php-mysql
Устанавливаем Fail2ban и добавляем его в автозагрузку:
yum install fail2ban systemctl start fail2ban systemctl enable fail2ban
Устанавливаем сервер FTP и добавляем его в автозагрузку:
yum install proftpd systemctl start proftpd systemctl enable proftpd
Добавляем пользователя FTP и SFTP:
useradd -d /var/www/ukrnames.idua.org/ -M -s /bin/bash ukrnames
Задаем пользователю пароль:
passwd ukrnames
Переходим в корневую директорию сайта и устанавливаем WordPress:
cd /var/www/ukrnames.idua.org/public_html/ wget https://ru.wordpress.org/wordpress-4.3.1-ru_RU.tar.gz tar -xf wordpress-4.3.1-ru_RU.tar.gz rm -f wordpress-4.3.1-ru_RU.tar.gz mv wordpress/* ./ rm -rf wordpress/
Меняем пользователей файлов на пользователя FTP, т. к. далее нам потребуется данные FTP для установки плагина:
chown -R ukrnames:ukrnames *
Создаем базу данных и пользователя для WordPress:
mysql -p create database wpdatabase ; CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON wpdatabase.* TO 'wpuser'@'localhost'; FLUSH PRIVILEGES; exit
Переходим в браузере по ссылке http://ukrnames.idua.org/ и начинаем установку WP. Вводим информацию для подключения к базе данных. Следуем инструкциям WordPress.
После установки WP, заходим в админ панель http://ukrnames.idua.org/wp-admin
Устанавливаем плагин WP Fail2ban:
При установке плагина будет запрос на ввод данных о пользователе FTP, которого мы создали ранее:
Нажимаем «Активировать плагин»
Переходим на документацию по установке плагина https://ru.wordpress.org/plugins/wp-fail2ban/installation/
Заходим обратно в консоль. Добавляем в конец файл сайта wp-config.php строки:
define('WP_FAIL2BAN_BLOCK_USER_ENUMERATION',true); define('WP_FAIL2BAN_BLOCKED_USERS','^admin$'); define('WP_FAIL2BAN_AUTH_LOG',LOG_AUTHPRIV);
Копируем в фильтры Fail2ban конфигурационный файл проверки неудачных входов в админ-панель сайта.
cp /var/www/ukrnames.idua.org/public_html/wp-content/plugins/wp-fail2ban/wordpress.conf /etc/fail2ban/filter.d/
Добавляем сам фильтр Worpress:
cat > /etc/fail2ban/jail.local << EOF [wordpress] enabled = true filter = wordpress logpath = /var/log/secure maxretry = 3 bantime = 30 EOF
Перезагружаем Fail2ban, чтобы применились настройки:
systemctl restart fail2ban
Проверим работает ли данный фильтр:
:# fail2ban-client status wordpress Status for the jail: wordpress |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/secure `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
Попробуем зайти более 5 раз в админ панель с неверным логином и паролем и проверим работает ли блокировка:
fail2ban-client status wordpress Status for the jail: wordpress |- Filter | |- Currently failed: 2 | |- Total failed: 19 | `- File list: /var/log/secure `- Actions |- Currently banned: 2 |- Total banned: 2 `- Banned IP list: 91.231.87.1 176.9.136.47
Все работает. Админ-панель нашего сайта защищена от bruteforce-атак.