Недавно заглянул на один из сайтов из папки «Избранное» и, вместо привычного дизайна, увидел сайт вот таким:

Экран взломанного сайт

Увы, печально. Возможно, этот сайт взломан злоумышленниками и попал под фильтр. Возможна за рассылку спама. Или сайт заражен вирусом.

Ниже изложу ряд простых приемов, улучшающих безопасность сайта на WordPress дабы избежать такой ситуации.

Оглавление

1. Общий подход как защитить блог на WordPress

Для меня понятие «безопасность сайта» – это синоним слова «предсказуемость».

Обеспечить безопасность сайта — это обеспечить предсказуемое функционирование сайта в сети Интернет.

На функционирование сайта может влиять ряд факторов:

  • надежность хостинга
  • устойчивость к взлому сайта и использования его для целей злоумышленников

На надежность хостинга можно повлиять только косвенным путем – выбирать компанию-хостера «кошельком» по каким-то доступным и понятным вам критериям. Я выбрал хостинг, который автоматически делает архивы сайтов за 10 последних дней.

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

Например, с помощью плагинов. Один из них — Duplicator. Он поможет скопировать небольшой WordPress-сайт в один архив и быстро «развернуть» этот сайт или у себя, или на другом хостинге.

С надежностью хостинга понятно. Теперь о защите от взлома. Исхожу из принципа: ни один способ не гарантирует 100% защиту блога от взлома. Ибо если какая-либо защита придумана людьми, – то найдутся люди, которые знают, как ее обойти. Вопрос только во времени (их квалификации) и цене вопроса (их намерении).

Как на меня, то стратегия защиты от взлома – максимально усложнить взлом сайта путем внедрения различных «ухищрений». Исхожу из того, что злоумышленник, столкнувшись с проблемами при взломе сайта и потратив на него некое время безрезультатно, с большей степенью вероятности перейдет к взлому другого, менее защищенного сайта.

Предполагаю что утверждение выше справедливо почти всегда. Кроме случая, если на сайте лежит «супер-пупер» ценная информация для взломщика, как то номера и коды банковскых карточек олигархов или список разведчиков-резидентов. А коль такой информации на блоге нет – то «танки клопов не давят» и сайт для «профи» неинтересен. А «любителей» вы «отпугнете» разными «ухищрениями».

Правда, может быть крайний случай, когда некий «любитель» захочет лично кому-то что-то «доказать» или «насолить» выбрав в качестве мишени ваш сайт. Ибо «понты дороже денег». Но это уже другая история.

2.Ограничение нежелательного доступа с служебным файлам

Если вы ограничите нежелательный доступ к служебным папкам на сайте — вы избавите себя от львиной доли проблем безопасности сайта.

Доступ к папкам и файлам сайта возможен как по протоколу http (через веб-браузер), так и по протоколу ftp (через программу ftp-клиент ( FileZilla например).

Для ограничения доступа по http есть простой, однако надежный способ — это обеспечить доступ к папке wp-admin только по паролю с помощью файлов .htaccess и .htpasswd

Файл .htpasswd должен находиться за пределами корневой директории сайта WordPress, а лучше расположить его в директории выше корневой.

Для создания файла и генерации пароля можно воспользоваться сервисом Htpasswd Generator.

Файл .htaccess должен находиться в директории wp-admin и содержать следующие инструкции:

AuthName "Здесь будет текст, который  выводится в окне авторизации"   
AuthType Basic   
AuthUserFile Здесь Полный Путь/.htpasswd   
require user Здесь имя пользователя, кому разрешен доступ

AuthName – текст содержащийся в данной директиве, выводится в окне ввода пароля. Он должен быть написан в одну строку и заключен в двойные кавычки.

AuthType — типы аутентификации: Basic или Digest. Рекомендуется использовать Basic.

AuthUserFile — полный путь к файлу с логинами и паролями, для аутентификации пользователей. Пароли содержаться в шифрованном виде. Рекомендуется хранить данный файл в папке, к которой нет доступа для пользователей, и это необходимо, чтобы предотвратить кражу паролей.

require user – директива предписывает, что к URL получают доступ только, пользователи, успешно прошедшие аутентификацию.

Минус такого подхода — для доступа к консоли сайта придется вводить еще один пароль:

ограничение доступа к сайту вордпресс

Для ограничения доступа по ftp простой и надежный способ: ограничить доступ только с определенных IP-адресов. В этом случае IP-адреса должны статическими. Статический IP можно получить у провайдера.

Там же на хостинге, вероятно, есть инструментарий для разрешения доступа по ftp только для определенных адресов. Если же нет — то ограничить доступ можно файлом .htaccess, рзместив его в директории wp-admin сайта на WordPress.

Файл .htaccess для директории wp-admin в таком случае должен содержать следующие правила:

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Example Access Control"
AuthType Basic
order deny,allow
deny from all
allow from a.b.c.d. #Ваш статический IP

И напоследок: рекомендую «перебросить» конфигурационный файл wp-config.php в папку выше.
В этом случае WordPress автоматически проверит директорию выше если не найдет файл wp-config.php в корневой директории.

Правда минус такого подхода — за счет этой операции чуть-чуть увеличиться время загрузки сайта. Но вам выбирать между скоростью и безопасностью.


Если есть какие-то замечания, советы или приемы — поделись в комментариях.
Удачи!
Александр Коваль

Рубрики: Безопасность сайта на WP

Об авторе:

Александр Коваль

Александр Коваль

Предприниматель. IT-специалист. Создаю интернет-магазины, лендинги и другие сайты. Помогаю поддерживать их работу. Расширяю функционал и возможности сайтов на WordPress. Пишите если нужна помощь с сайтом или разработка "с нуля"

Share via
Send this to a friend