По одному из текущих проектов заказчик поставил задачу максимально обезопасить сайт и комплексно подойти к вопросу защиты сайта от взлома, несанкционированного доступа и заражения. Появился хороший повод структурировать информацию по безопасности и собрать все рекомендации в цикле статей.
Вордпрес самая популярная система управления сайтом. По данным w3techs.com 28% всех сайтов работают на этом движке. В комплекте с популярностью и удобством разработки приходят проблемы безопасности.
Кому и зачем нужно Вас взламывать
Маленький личный блог, городской портал, интернет-магазин — никто не защищен от взлома. Если сайт не имеет очевидных поводов и выгоды для взлома, то он в безопасности — ошибочное мнение. Любой сайт в зоне риска и ваш в том числе. Заблаговременно принятые профилактические меры уберегут нервы, время, а кому то деньги и бизнес.
Сайт на вордпресс взламывают для:
- Сбор ваших личных данных и данных пользователей. Самым простой пример — сбор почтовых адресов для дальнейшей продажи или рассылки спама.
- Черная сео оптимизация. Размещение на сайте без ведома хозяина внешних ссылок. Заражение чаще всего происходит при использовании взломанных плагинов и тем.
- Нарушение работы сайта с целью получения выкупа за восстановления сайта в рабочее состояние. В зоне риска владельцы сайтов без резервных копий.
- Удовлетворение хакерских амбиций. Заражение вирусами без четкой цели ради спортивного интереса. Есть и такое.
- ДДОС атаки. Обычно их совершают по заказу конкурентов и недоброжелателей.
Логин администратора сайта
Первым делом замените логин администратора сайта если он «admin». Чаще всего это именно так. Злоумышленнику остается подобрать только пароль, логин ему уже известен.
В вордпрес нельзя через панель управления изменить логин уже существующей учетной записи. Есть 2 способа.
Способ 1. Создание нового пользователя в панели управления
Зайдите в панель управления сайтом под учетной записью администратора. В боковой панели управления найдите пункт «Пользователи». Увидим всех пользователей зарегистрированных на сайте. Далее выбираем «Добавить нового».
На открывшейся странице заполните данные нового пользователя. Не забудьте придумать новый сложный логин, не включающий в себя «admin» и пароль, желательно состоящий из цифр, букв, знаков.
Для генерации и безопасного хранения паролей рекомендую пользоваться специальными приложениями и сервисами. Последние 7 лет все пароли держу в бесплатной программе с открытым исходным кодом KeePass. Есть много расширений, плагинов и приложений под мобильные устройства. Синхронизирую базу данных на всех устройствах через облако.
Не забудьте выбрать роль нового пользователя «Администратор».
Кликаем на «Добавить нового пользователя»
Новый пользователь создан. Теперь нужно удалить старую учетную запись «admin». Для этого наводим курсором на логин пользователя «user» и кликаем «удалить»
Подтверждаем удаление.
Если под удаляемой учетной записью были ранее созданы статьи, то вордпрес спросит к кому их прикрепить. Выберите логин нового пользователя.
Способ 2. Внесения изменений в базу данных сайта
Это более технически сложный способ, чем предыдущий. Потребует минимальных навыков работы с phpMyAdmin. Менять логин будем через внесение изменений в базе данных.
Предварительно не забудьте сделать резервную копию базы. Всегда что-то может пойти не так.
В панели управления своего хостинга запустите приложение «phpMyAdmin» — менеджер баз данных. В phpMyAdmin слева увидите дерево таблиц. Найдите таблицу с приставкой «_user» и кликните по ней.
У Вас откроется страница с данными о всех пользователях сайта. Кликаем на иконку редактирования записи.
Теперь мы видим все данные пользователя «admin». Вносим правки в поля «user_login» и «user_nickname». Далее кликамем «Вперед». Логин изменен.
Регулярное обновление движка, плагинов и темы.
Не забывайте регулярно обновлять движек, все плагины и темы. Разработчики постоянно что-то дорабатывают, закрывают обнаруженные дыры в безопасности, совершенствуют алгоритмы.
После взлома и заражения сайтов из-за банальных логин и паролей следом идет взлом сайтов из-за несвоевременного обновления. Почти все сайты с проблемой в безопасности на моей практики были на очень старых версия вордпресс.
Банальный совет, но очень действенный.
Двухфакторная аутентификация
В дополнении к связки логин + пароль для получения доступа к учетной записи рекомендую подключить и настроить двухфакторную аутентификацию. Способ активно используется в банковских структурах и на крупных сайтах: гугл, вконтакты, интернет-банкинг.
Для доступа к информации не достаточно знать связку логин и пароль, а требуется еще 1 дополнительный «ключ». Этим ключом могут быть:
- Биометрические данные: отпечатки пальцев, сетчатка глаза. Часто используется для доступа в помещение, разблокировка телефона и тд.
- Комбинации цифр для подтверждения личности которые могут прийти на телефон в виде смс или сгенерированные через приложение привязанное к вашему телефону.
Для добавления двухфакторной аутентификации на вордпресс установим плагин «MiniOrange»
Установка и настройка MiniOrange
В панели управления вордпрес заходим в раздел «Плагины» — «Добавить новый». ищем и устанавливаем плагин «Google Authenticator – Two Factor Authentication».
После активации раздел с настройками плагина появится в меню панели управления. Заходим на страницу настроек плагина и регистрируем аккаунта в miniOrange.
После заполнения и отправки регистрационной формы откроется страница с полем для ввода секретного кода. Секретный код автоматически отправится вам на почту указанную при регистрации.
Если письмо не приходит, проверьте «Спам».
После ввода секретного кода в соответствующее поле вас перекинет на предупреждение об условиях использования сервиса и ограничениях доступных на бесплатной подписки.
Кликаем на «I understand». Регистрация завершена. Переходим к настройки.
На странице плагина заходим во вкладку «Setup Two-Factor». Нам предлагают заполнить 3 поля с ответами на секретные вопросы для получения доступа к сайту, если вдруг другие способы будут невозможны. Заполняем и кликаем на «Save».
После попадаем на ту самую главную страницу с перечнем всех возможных вариантов двухфакторной аутентификации. Часть из них доступно бесплатно, часть только на платной подписки, например доступ по смс. На мой взгляд самыми удобным из бесплатных являются:
- Email Verification (код с подтверждением высылается на почту)
- Soft Token / QR Code Authentication (генерация одноразовоого пин-кода или qr-кода через официальное приложение miniOrange)
- Google Authenticator (верификация с помощью официального приложения гугл)
Все эти способы работают только при наличии телефона или интернета. Если телефон разрядится или закончится оплата интернета, то можно будет войти в панель управления альтернативными способами. Для этого рекомендую настроить и привязать несколько альтернативных способы аутентификации:
- OTP Over SMS (Доступ по смс. В бесплатной версии предоставляется 10 смс. Будет полезно, если не будет под рукой интернета)
- Security Questions (Секретные вопросы. Пригодиться если не будет ни интернета ни телефона под рукой).
Все способы аутентификации очень легко и быстро настраиваются. Для тестирования выберу аутентификацию по смс.
Сначала нас встречает обычное окно ввода логина и пароля.
После клика на кнопку «Войти» откроется страница с полем для ввода кода из смс. Смс пришло через 5 сек. После ввода кода я успешно вошел в панель управления. Магия.
Премиум версия плагина стоит не дорого. Всего 15$ в год на 5 пользователей.
Если по какой-то причине у вас не получается зайти в панель управления, то вы всегда можете отключить плагин двойной аутентификации через удаление папки с плагином по ftp или файловый менеджер вашего хостинга.
Установка и настройка капчи
Капча — тест для определения кем является пользователь: человек или компьютер. Капчу можно встретить на многих сайтах. По личным ощущениям это самый популярный метод защиты, который используется повсеместно. Это те самые раздражающие картинки. Нужно угадать, что на них изображено, что бы совершить действие: отправить сообщение через форму на сайте, зарегистрироваться или войти в личный кабинет.
Плагин «Captcha by BestWebSoft» поможет установить и настроить капчу при входе в панель управления сайтом.
Captcha by BestWebSoft
В панели управления вордпрес заходим в раздел «Плагины» — «Добавить новый». ищем и устанавливаем плагин «Google Authenticator – Two Factor Authentication».
После установки и активации плагина появится новый раздел в меню панели управления. Заходим туда.
Выбираем вкладку «Настройки». Для работы плагина нужно получится у гугла api ключ. Идем его получать по ссылке «Получить API ключ».
На странице гугл регистрируем новую форму. Заполняем поля «Название», «Тип reCaptcha», «Домен» и принимаем все пользовательские соглашения. Кликамем на «Регистрация».
Попадаем на страницу где видим заветные ключи.
Ключи нужно скопировать и перенести в настройки плагина в соответствующие поля.
Этого достаточно для начала работы плагины. Если попробовать выйти из учетной записи и снова зайти, то увидим форму с капчей.
На странице настроек плагина можно выбрать где будет видна капча: форма логина, форма регистрации, форма восстановления пароля и форма комментариев. Рекомендую включить везде.
Управление видимостью капчи в комментариях для разных групп пользователей. Можно скрыть капчу от администраторов сайта.
Далее идет выбор версии капчи. Рекомендую выбрать вторую.
Плагин так же имеет платную версию с расширенными возможностями. Для наших целей бесплатной заглаза.
Защита от спама
На первый взгляд спама не является проблемой безопасности сайта. Спам в комментариях на сайте обычно исходит от ботов. Их цель повысить значимость сайтов в глазах поисковиков через размещения ссылок на свои ресурсы.
Помимо неуместных комментариев с отсылкой на свой ресурс боты могут распространять ссылки на вредоностные сайты или увеличивать нагрузгу на хостинг своими набегами. А это уже можно отнести к угрозе безопасности.
Вордпрес не имеет встроенной защиты от спама, но предлагает предустановленный плагин «Akismet».
Настройка Akismet
Обычно Akismet уже установлен по-умолчанию. В разделе «Плагины» его нужно активировать и зайти на страницу настроек «Настройки» — «Akismet».
Akismet сразу предлагает получить api-ключ. кликамм на кнопку «Получить API-ключ» и переходим на страницу регистрации аккаунта на сайте Akismet.
На сайте Akismet кликаем на кнопку «Get an akismet api key».
После необходимо зарегистрироваться на сайте или войти под своей учетной записью, если она уже есть. Выбираем базовый, бесплатный тариф.
После выбора тарифа вам предложат заполнить данные своей банковской карты для добровольного пожертвования. Нужно сдвинуть шкалу с суммой пожертвования до 0. Тогда форма для ввода банковской карты пропадет и появится кнопка «Continue».
После в всплывающем окне выбираем «Activate this site»
Регистрация прошла успешно. Мы находимся в личном кабинете сайта Aksimet. На этой же странице видим свой уникальный API-ключ.
Копируем его и вставляем в поле «API-ключ» на странице настроек плагина. После успешной активации вас перекинет на страницу с настройками. Рекомендую оставить все как есть.
Удаление версии вордпрес
По-умолчанию вордпрес не прячет версию движка. Зная версию злоумышленники могут легко подобрать уязвимость и взломать сайт. Рекомендую сразу после установки движка прятать версию.
Достаточно открыть код любой страницы сайта на вордпрес в браузере, что бы увидеть версию движка.
Для удаления версии будет нужно внести запись в фаил function.php в корне активной темы. Отредактировать фаил можно через текстовый редактор. Для этого нужен доступ к ftp сайта или через панель управления. Рассмотрим второй вариант.
В панели управления зайдите в раздел «Внешний вид» — «Редактор».
Увидите редактор кода и справа список файлов темы. Выберите фаил function.php (Функции темы).
Фаил function.php откроется в редакторе кода. В конце файла нужно добавить код:
function wpversion_remove_version() {
return '';
}
add_filter('the_generator', 'wpversion_remove_version');
и кликнуть на «Обновить». Предварительно желательно сделать резервную копию файла или сайта.
Отключаем WordPress API
Вордпрес предоставляет для разработчиков широкие возможности для работы с системой и разработки плагинов. Через REST API программист может записывать и считывать информацию в вордпресс через приложения. Через REST API можно обойти аутентификацию, в том числе двойную. Если вы не разработчик, то лучше отключить доступ к WP API.
Плагин «Disable REST API» решает данную проблему. Установите и активируйте плагин.
Сразу после установки плагин работает и выполняет свои функции.
Отключаем XML-RPC
XML-RPC — это WP API, который позволяет удаленно управлять контентом и создавать/удалять посты, страницы, медиафайлы, пользователей.
Данная возможность может сыграть против вас. Если не планируете администрировать сайт удаленно, например, через приложения для телефона, то лучше XML-RPC отключить.
Установите плагин «Disable XML-RPC». Этого достаточно для решении проблемы с XML-RPC.
Так же можно отключить XML-RPC через фаил function.php. Нужно добавить в него фильтр:
add_filter('xmlrpc_enabled', '__return_false');
В этом случае установка плагина не потребуется.
Заключение
Если прочитали статью до конца и выполнили базовые рекомендации, то уже существенно обезопасили свой сайт. Это первая часть большого цикла статей по настройки безопасности вордпресс. Дальше затронем темы специализированных плагинов по комплексной безопасности сайта, настойка безопасности со стороны хостинга, резервное копирование сайта и бд. Разберемся в разграничения ролей и тд.
Резюмируем:
- Не используйте логин «admin» и простые пароли
- Регулярно обновляйте движок и плагины
- Настройте двухфакторную аутентификацию
- Используйте капчу как дополнительную преграду для доступа к панели управления
- Настройте защиту от спама
- Уберите информацию о версии движка
- Отключите WP API и XML-RPC
Авторизуясь, вы даете согласие на обработку персональных данных.