Установка LAMPF на СentOS7 с добавлением тестового сайта ukrnames.idua.org с CMS WordPress и защита админ-панели

Для тестирования плагина 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.

wp1

После установки WP, заходим в админ панель http://ukrnames.idua.org/wp-admin
Устанавливаем плагин WP Fail2ban:

wp2

При установке плагина будет запрос на ввод данных о пользователе FTP, которого мы создали ранее:

wp3

Нажимаем «Активировать плагин»
Переходим на документацию по установке плагина 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-атак.