Базовая безопасность сайта на WordPress

Вот и добрались мои руки до написания статей – инструкций по WordPress. Сегодня рассмотрим вопрос настроек для обеспечения базовой безопасности сайта. Так как на своей практике могу сказать, что даже действия, которые рассматриваю в статье, мало кто выполняет. И очень часто получаю на обслуживание проекты с дырами в безопасности.

Итак, что рассмотрим:

  • Как изменить страницу входа WordPress на свой адрес
  • Закрытие стандартной wp-login.php на вход незалогиненым пользователям
  • Редиректы с wp-admin

Меняем страницу входа WordPress

Так как ежедневно даже на самый не популярный ресурс на WordPress пытаются войти около 20 – 30 левых человек, то иметь в качестве страницы входа для управления сайтом стандартный адрес по типу example.ru/wp-login.php очень и очень не безопасно.

Из свежих историй, получив сайт на оптимизацию безопасности, я целых два дня не мог на него войти, по причине того, что стандартный адрес для входа был недоступен (сервер перегружен). А пароля от хостинга у клиента не было, так разработчик, который сделал сайт, благополучно скрылся в закат. Как вы уже поняли, необходимость изменить страницу входа WordPress на повестке сегодняшнего стоит актуально как никогда

1. Все операции с файлами (загрузка, скачивание, копирование, правка, удаление и т.д) осуществляются прямо на хостинге либо через файловый менеджер, что в панели управления хостингом, либо через FTP. У каждого хостинг провайдера файловый менеджер различный. Но его функционала вам хватит за глаза. На картинке ниже представлено положение файлового менеджера в сервисе Beget

2. У CMS WordPress есть файл wp-login.php его вы можете увидеть в корневом каталоге вашего домена

3. Скачайте данный файл себе на компьютер или скопируйте его внутри папки на сервере. Определитесь с новым названием адреса по которому будет открываться админка WordPress. Например, в качестве нового адреса будет example.ru/noviiadmin.php

4. Откройте скаченный (на компьютере) или скопированный (на хостинге) файл wp-login.php и нажмите CTRL+F

На компьютере у вас должна стоять программа Notepad++, в ней будет удобнее работать, на сервере обычно текстовый редактор и так умеет искать и заменять строки.

В качестве пункта что найти, напишите: wp-login. В качестве пункта на что заменить: noviiadmin

Нажмите кнопку “Заменить все”. От версии к версии, количество замененных элементов разное, но на момент написания статьи – 14 совпадений.

5. После этого сохраните изменения и переименуйте файл. Как вы уже догадались файл будет иметь имя + расширение noviiadmin.php

6. Теперь загрузите файл noviiadmin.php на хостинг в корневую папку домена где лежит оригинальный файл wp-login.php (если вы редактируете все на сервере, то загружать ничего не надо)

Сейчас если вы сделали все правильно, то уже можете войти в админку по двум URL адресам:

  • example.ru/wp-login.php
  • example.ru/noviiadmin.php

Блокировка входа в админ панель WordPress через wp-login.php

Ранее мы добавили новую точку входа, теперь же мы должны заблокировать возможность входа через стандартный url.

1. Для этого в файловом менеджере хостинга, в корне директории вашего домена, найдите файл .htaccess

Учтите, что данный файл присутствует только в серверах на базе Apache и его аналогах. Либо комбинации Nginx + Apache

2. Откройте его прямо на хостинге и в самом конце пропишите код ниже. Затем сохраните файл

<Files wp-login.php>
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule ^(.*)$ - [R=403,L]
</Files>

Теперь при попытке войти по адресу example.ru/wp-login.php у сторонних людей будет выводиться что-то похожее на это

Настройка редиректа с wp-admin и прочее

Базовая настройка почти закончена, осталось внести последние штрихи. Чтобы безопасность не была дырявой, добавим еще редирект. Все операции будем проводить уже в файле functions.php дочерней темы. Учтите, что даже если вы сами создаете тему, то все равно лучше создать child (дочернюю) тему для базовой. Чтобы избежать проблем при обновлении и доработке.

1. В каталоге дочерней темы откройте файл functions.php и пропишите код

add_action( 'init', 'blockusers_init' );
 function blockusers_init() {
	 if ( is_admin() && ! current_user_can( 'administrator' ) && ! current_user_can( 'editor' ) && ! current_user_can( 'shop_staff' )&& ! current_user_can( 'shop_manager' )&&
		 ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
		 wp_redirect( home_url() );
		 exit;
	 }
}

Этот код позволит входить в панель администрирования сайта на WordPress только определенным пользователям, которые имеют конкретную роль. Например current_user_can( ‘editor’ ) – означает, что пользователь с ролью редактор может войти.

Данный код можно настраивать под себя. Возможно сделать вход только для администратора. Однако все пользователи, которые не имеют указанной роли для входа, будут попадать на главную страницу.

2. Пропишите еще один код

add_action('wp_logout','logout_page');
function logout_page() {  
    $login_page  = home_url( 'wp-admin' );  
    wp_redirect( $login_page . "?loggedout=true" );  
    exit;  
}

Так как мы вносили корректировки в процесс входа в панель управления сайтом, то данный код позволит корректно разлогиниться.

На этом все базовые настройки завершены и вы можете вздохнуть с облегчением. Теперь безопасность вашего сайта стала немного выше.

Дополнительно

В рамках данной статьи не рассматриваю еще один важный инструмент безопасности, который должен быть настроен. Это интеграция сайта с сервисом Cloudflare. Она позволит фильтровать трафик, контролировать адреса входа, защищать от DoS атак, ускорять загрузку сайта за счет CDN и многое другое.

Еще материалы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *