Ломаем и защищаем WordPress своими руками. Перебор или «брутфорс» пароля. – Отключение режима отладки

Ломаем и защищаем WordPress своими руками. Перебор или «брутфорс» пароля. – Отключение режима отладки

01.06.2019

Если вы постоянно обновляете свой WordPress, вы уже участвуете в повышении безопасности своего сайта. Но этого мало. О безопасности WordPress нужно начинать думать, с момента ее установки. Кстати, для безопасности обновлять систему лучше автоматически, используя обновление из панели администратора.

Безопасность WordPress на этапе установки

При установке вы меняете файл wp-config.php , не забудьте установить ключи безопасности.

На странице установщика, с вводом данных администратора сайта, обязательно поменяйте имя администратора, с admin, на любое другое имя. Также генерируйте сложный пароль для авторизации администратора. Ограничений по количеству знаков в пароли нет. Используйте в пароле буквы, цифры, знаки препинания. Чем сложнее пароль, тем лучше. Попробуйте генератор паролей: http://randstuff.ru/password/

Эти меры безопасности, лежат на поверхности, и ими не стоит ограничиваться, если радеете за безопасность своего веб-приложения.

Повышаем безопасность WordPress в его каталоге.

Права CHMOD

Права CHMOD это права доступа к файлам и каталогам вашего сайта. По умолчанию, после установки системы, устанавливаются права CHMOD на файлы 644, на каталоги 755.

Никогда не оставляйте права CHMOD 666 и 777. Тем самым вы сами откроете доступ к каталогам и файлам своего сайта.

Включите SFTP вместо FTP

Работая с сайтом WordPress вам не обойтись без соединения с каталогом сайта по FTP. Об уязвимости FTP соединений знают уже 23 года. Одни безопаснее, другие опаснее для взлома.

  • Не используйте анонимное соединение по FTP, оно небезопасно. Для соединения аккаунт FTP клиента должен иметь имя, и пароль доступа. Создается FTP аккаунт в административной панели сервера (хостинга).
  • Для безопасности, лучше использовать не FTP, а SFTP соединение для передачи данных на сервер сайта.

Начните использовать безопасный протокол передачи файлов (SFTP) вместо FTP при доступе к сайту. Подключение по SFTP простое, и хорошие веб-провайдеры должны включать его по умолчанию. Все, что вам нужно сделать, это попросить в support своей хостинг компании, номер порта для шифрованного соединения SFTP, а затем измените настройки в вашем FTP приложении (на фото программа FileZilla). Скорее всего, это порт: 22.

Можно не обращаться к провайдеру, а попробовать соединиться по SFTP самостоятельно. FTP приложение, будет использовать для шифрованного соединения порт не 21, а 22. Если на хостинге SFTP соединение разрешено, то после вашего разрешения, вы соединитесь по SFTP со своим сервером.

Сделайте безопасным файл wp-config.php

Содержит слишком много «секретной» информации, чтобы оставлять его без защиты. Об установке ключей безопасности и переименовании префикса «wp_» таблиц базы данных, я уже сказал. Все эти изменения отразятся в файле wp-config.php .

Теперь спрячем файл wp-config.php .

Вариант 1. Система WordPress, с версии 2.6, если не находит файл wp-config.php в корневом каталоге сайта, автоматически ищет его в каталоге высшего уровня. Если находит его там, то без проблем открывает сайт и его административную часть.

Поэтому, если вы пользователь на сервере сайта, с допуском к каталогу высшего уровня, то смело перемещайте Файл wp-config.php в каталог выше корневой папки сайта. Если у вас такого допуска нет, то при попытке переместить этот файл по FTP, у вас получится неудавшаяся передача файлов.

Приведу пример.

  • Корневая папка сайта тут: /domains/domen.ru/public_html;
  • Каталог высшего уровня тут: /domains/domen.ru/.
  • Права пользователя выставляются в панели хостинга (сервера), при создании FTP аккаунта, фото:

Перетягиваете wp-config из корневого каталога в папку домена .

Вариант 2. Если у вас нет доступа к каталогу высшего уровня, защитите файл wp-cofig в файле.htaccess . Этот файл вы должны были создать после установки WP, из файла htaccess.txt .

Вставьте в верх файла.htaccess такие строчки:

Следите, чтобы файл wp-config.php и.htaccess были в одной папке.

Вариант3. Если на сервере есть SSL шифрование данных, то можно добавить в файл wp-config.php следующую строку:
define("FORCE_SSL_ADMIN", true);e>
Она включит шифрование для админки WP.

Маскируем другие папки WordPress

В каталоге WordPress две основные папки, которые интересны взломщикам: wp-content/themes/ и wp-content/plugins/.

Попробуйте открыть в браузере эти папки, то есть введите в адресную строку:

  • Ваш-домен/ wp-content/plugins/ , затем;
  • Ваш-домен/wp-content/themes/.

Если вы видите белый лист или 404 ошибку, то ваши папки защищены.

Если вы видите список каталогов и файлов, то папки открыты для всех.

Чтобы их замаскировать создайте пустой файл Index.html и положите его по FTP в эти папки. Это замаскирует эти папки, но не спрячет от продвинутых взломщиков.

Защитить их можно строкой: Options -Indexes , добавленную в конец файла.htaccess . После добавления строки, сделайте контрольную проверку. Вы должны попасть на 404 страницы.

Важно! Все защиты в файле.htaccess , имеют место, если вы не используете плагины безопасности на своем WordPress, а пытаетесь защититься самостоятельно.

Другая защита безопасности WordPress

Удалите пользователя с именем admin. Если под этим именем писались статьи, то сделайте следующее:

  • Входите на вкладку: Пользователи;
  • Создаете нового администратора;
  • Удаляете администратора: admin. При удалении admin, перенаправляете все публикации admin на нового администратора.

  • Уберите с сайта виджет «Мета» с прямой регистрацией пользователей. Замените «Мета» на подписку по email;
  • Для параноиков: отмените регистрацию пользователей вообще. Вкладка→Настройки→Общие→Членство (очистить чекбокс).

WordPress - пожалуй, самая популярная и вместе с тем одна из самых часто взламываемых платформ. Почему-то существует мнение, что если ваш сайт особо никому не интересен, то и взламывать его не будут - зачем? На самом деле угроза взлома есть буквально у каждого сайта (и не только на WordPress), поэтому важно заботиться о защите своей странички. Что можно предпринять - а точнее, какие плагины установить - об этом я и расскажу в этой статье.

Эти советы будут полезны не только в работе с WordPress, но и с любой другой CMS. Они базовые, но, как показывает практика, все равно есть люди, которые о них не знают. Зачем это все делать? Чтобы усложнить жизнь злоумышленнику. Используя данные, которые устанавливаются по умолчанию, хакер может относительно легко взломать ваш сайт, а также вашу базу данных. Поэтому нужно сделать следующее.

1. Измените имя пользователя с admin на другое.

Чтобы это сделать, вам нужно сначала создать нового пользователя в качестве администратора. Сделать это можно вот тут:

После создания пользователя зайдите под его аккаунтом и в списке «Все пользователи» удалите аккаунт “admin”. При этом новый логин постарайтесь сделать каким-нибудь относительно сложным, ну хотя бы состоящим из нескольких слов: vasyapupkin99. Можете свой никнейм использовать, например.

Про пароль писать не буду - лучше воспользоваться тем, который сгенерирует вам Wordpress на стадии создания аккаунта, а не придумывать какой-то свой (который, скорее всего, будет легче).

2. Изменить префикс базы данных с wp на другой.

Существует два пути сделать это: либо самостоятельно правя таблицы в phpMyAdmin (или даже просто в файловом менеджере), либо через плагин. Кратко расскажу об обоих вариантах.

Изменение через phpMyAdmin

Сразу скажу, что это действие требует внимания к деталям и некоторого опыта работы в phpMyAdmin.

Первым делом создайте бэкап базы данных - он поможет вам восстановить информацию, если что-то пошло не так (или вы где-то что-то не то отредактировали).

Теперь зайдите в файловый менеджер и найдите файл wp-config.php, в нем строку $ table_prefix = "wp_";

“wp” надо изменить на что-то другое, менее связанное с WordPress и базами данных. Можно менять даже на произвольный набор букв и цифр (но вам его нужно запомнить или записать).

Внимание. Лучше всего производить это изменение на только что установленном WordPress. На уже запущенных сайтах информации больше - больше данных придется менять.

После этого зайдите в phpMyAdmin (на хостинге Timeweb это можно сделать прямо через панель управления) и найдите базу данных для нужного сайта. Все таблицы этой базы данных нужно переименовать, вместо “wp_” подставляя то, что вы уже написали выше.

Как переименовать: выбираете таблицу в левом столбце, нажимаете вкладку «Операции», далее смотрите блок «Параметры таблицы» и строку «Переименовать таблицу в». После внесения изменений не забудьте нажать «Вперед».

После этого ищите в списке таблицу “…_options”. Выбрав ее, нажмите «Обзор» - в содержимом примерно на второй странице в столбце “meta_key” вы увидите wp_user_roles - измените префикс “wp” на тот, который вы сейчас собираетесь использовать. Сохраните изменение.

Следующая таблица для изменения - “…_usermeta” - аналогичным образом посмотрите ее содержимое и измените все старые префиксы на новые.

Если после редактирования у вас что-то стало работать не так или вообще перестало работать, проверяйте, все ли изменения вы внесли. В крайнем случае используйте бэкап.

Изменение через плагин

Этот плагин не нуждается в представлении, поэтому сразу перейду к тому, что необходимо сделать.

После того, как вы установили и активировали плагин, зайдите в раздел «Защита Базы данных». Там вы увидите строку «Сгенерировать новый префикс таблиц БД» - напишите тот префикс, который хотите поставить (или поставьте галочку около «Отметьте, чтобы плагин сам сгенерировал префикс длиной в 6 случайных символов»), и нажмите «Изменить префикс таблиц». После этого ниже вы увидите отчет от ходе изменения префикса. Чтобы убедиться в том, что ожидаемый результат достигнут, зайдите в phpMyAdmin.

Еще раз напомню, что делать это нужно на новом сайте без статей, так как если на сайте уже есть много информации, плагин может сработать некорректно.

All In One WP Security & Firewall

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

В разделе «Настройки» плагина перейдите во вкладку “WP version info” и поставьте галочку рядом с «Удаление мета-данных WP Generator». Так как хакеры зачастую основываются на информации, которую содержат мета-данные, то будет нелишним убрать эту информацию из кода страницы.

Кстати, если вы все еще не поменяли имя администратора (следуя совету выше), то сделать это можно и через этот плагин - во вкладке «Администраторы». Просто напишите новое имя пользователя и еще раз авторизуйтесь в панели (пароль остается прежним).

Здесь же вы можете видеть вкладку «CAPTCHA при регистрации» - тоже активируйте этот пункт.

Теперь переходим в раздел «Файрволл» - здесь ставим галочку в блоках «Основные функции брандмауэра». Остальное можете включить/оставить выключенным по своему желанию.

Раздел «Защита от брутфорс-атак»: вам нужно включить опцию переименования страницы логина и написать желаемый адрес в графе ниже. Тут важно понять - этот адрес будет использоваться для входа в админку, жизненно важно его запомнить !

С этим плагином мы закончили, переходим к следующему.

AntiVirus

Этот плагин сканирует файлы сайта на предмет вредоносного кода. Пользоваться им достаточно просто - после установки зайдите в его настройки и нажмите “Scan the theme templates now”, после этого все файлы вашей темы будут проверены.

Тут же вы можете настроить и ежедневную проверку с отчетом на email.

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

Как и другие активные плагины, AntiVirus нагружает сервер (а значит, ваш сайт работает медленнее), поэтому лучше пользоваться им время от времени, чем постоянно держать в активном состоянии.

Wordfence Security

Этот плагин по функционалу схож с предыдущим, ими можно пользоваться параллельно, хуже не будет. Точно так же установите, активируйте, перейдите во вкладку “Scan” и нажмите на большую синюю кнопку “Start a Wordfence Scan”. Кое-какие возможности доступны только для оплаченных (премиум) аккаунтов, но базовый функционал тоже неплох. Если с вашим сайтом все хорошо, то вы увидите зеленую надпись “Congratulations! No security problems were detected by Wordfence”.

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

Sucuri Security

Вообще Sucuri - это компания, которая специализируется на защите веб-сайтов, поэтому они предоставляют защиту для любого сайта (не только на WordPress). Плагин от этой серьезной компании с внушительной репутацией обладает широким функционалом, представляющим полный цикл защиты сайта, включая предупреждение взлома и атаки на ваш сайт. Можно пользоваться бесплатной версией, а можно купить платную за 16,66$ в месяц - сумма немаленькая, но за такой диапазон защитных инструментов вполне обоснованная.

Для того, чтобы пользоваться бесплатной версией, после установки вам будет необходимо сгенерировать бесплатный ключ (в синем блоке сверху нужно будет нажать кнопку “Generate API Key”, проверить, что введенные данные корректны, и отослать заявку.

iThemes Security

Если Sucuri Security можно назвать лучшим платным плагином защиты, то iThemes Security часто называют лучшим бесплатным плагином, который стоит установить для безопасности вашего сайта. Тем более что сейчас у него более 800 тысяч установок!

Про функционал много писать не буду - как и все другие плагины, iThemes Security направлен на защиту вашего сайта от большинства вещей, которые могут ему угрожать, и в то же время на проверку существующего состояния сайта. Кстати, раньше плагин назывался Better WP Security - возможно, кто-то помнит его по этому названию.

Если в целом говорить об его функциях, то можно выделить следующие стороны этого плагина:

  • скрытие и удаление потенциально уязвимых элементов (об этом было написано в начале статьи - смена логина администратора, префикса базы данных и так далее);
  • защита сайта от атак (сканирование на наличие уязвимостей, защита от брутфорса, шифрование админки и так далее);
  • мониторинг сайта (на наличие внезапных изменений, блокировок и так далее);
  • восстановление (резервное копирование на случай непредвиденной ситуации).

Теперь перейдем к самому использованию этого плагина.

Настройка iThemes Security

Начну с того, что у него есть и PRO (то есть более расширенная) платная версия, поэтому в бесплатной версии доступны не все возможности этого плагина (но их все равно много).

После установки активируйте плагин и переходите в раздел «Настройки». В синем блоке сверху вы сможете включить защиту от взлома методом полного перебора (Network Brute Force Protection) - для этого нужно запросить API ключ, который автоматически будет добавлен в настройки (но также отправлен вам на почту).

Нажмите “Security Check ” (самый верхний левый блок или в меню под «Настройки») и нажмите “Secure site”. После этого вы увидите список включенных модулей.

Следующий блок - «Основные настройки » (справа от “Security Check”). Так как плагин почти полностью переведен, каждый пункт имеет свою расшифровку - советую пробежаться по ним всем и посмотреть, что из этого наиболее актуально для вас (даже если не будете пользоваться, будете хотя бы знать, где что находится).

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

Блок «Заблокированные пользователи » - тут все понятно, помещайте сюда всех, кого нужно заблокировать.

Local Brute Force Protection ” - это блок защищает от взлома путем перебора паролей. У вас он уже включен, настройки можно оставить по умолчанию.

«Резервные копии базы данных » - настройка резервного копирования, в бесплатной версии речь идет только про базы данных.

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

File Permissions ” - блок показывает права доступа к файлам.

Network Brute Force Protection ” - сетевая защита от брутфорса заключается в том, что если хакер пытался взломать чей-то другой сайт, доступ к вашему сайту у него будет также заблокирован, даже если он еще не начал атаку на ваш сайт.

SSL ” - вы можете настроить использование SSL в этом плагине, то если у вас сайт на хостинге Timeweb, я советую использовать настройки в панели управления сайтом.

Strong Password Enforcement ” - если ваш сайт предполагает регистрацию других пользователей (форум, блог…), тогда это настройка будет полезной, пользователям придется выбирать только сложные пароли для своих аккаунтов. В остальных случаях ее можно не использовать.

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

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

О разделах все. В платной версии их больше, но и этих вполне хватает для того, чтобы защитить сайт от многих популярных видов взлома.

Заключение

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

Безопасность в WordPress является очень важной темой при создании вашего интернет проекта. В этой статье мы рассмотрим основы безопасности при использовании WordPress, самые частые методы и причины взлома, меры и средства защиты вашего сайта от злоумышленников.

Начнём с самого явного и простого.

Слабый пароль

Самой распространённой причиной взлома, является использование слабого пароля. Это относится не только к сайтам на WordPress, но и к почтовым аккаунтам, Twitter и Facebook профилям и прочее. Речь идёт о паролях вида 123456, «qwerty» и т.д.

При создании или смены пароля в WordPress, есть индикатор надёжности, который поможет выбрать вам более надёжный пароль:

  • Не используйте словарные слова
  • Не используйте один и тот же пароль дважды
  • Используйте буквы нижнего и верхнего регистра
  • Используйте буквы в перемешку с цифрами
  • Добавьте символы

Так же стоит серьёзно отнестись к привилегиям ваших пользователей. Если вам нужно добавить пользователя на ваш сайт, который будет писать новые статьи, то не рекомендуется давать этому пользователю права редактора, и уж тем более права администратора.

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

Логин пользователя так же играет немаловажную роль, так что избегайте использование «admin» или «administrator» в качестве имени пользователя администратора, в этом случае злоумышленнику будет сложнее подобрать комбинацию.

Перебор или «брутфорс» пароля

Брутфорс (bruteforce) — это полный перебор всевозможных комбинаций. Подобрать можно пароль любой сложности — вопрос всего лишь во времени, и чем сложнее пароль, тем дольше займёт его полный переобор. Для защиты от перебора рекомендуется время от времени менять пароль.

Средства защиты админ-панели

Существует множество способов защитить панель администратора WordPress от злоумышленников. Самые эффективные и распространённые методы:

  • Блокировка директории wp-admin по IP-адресу
  • Серверная
  • Плагин — ограничивает количество неверных попыток при входе
  • Плагин Google Authenticator — дополнительный фактор аутентификации с помощью мобильного приложения
  • Плагин Captcha для входа в административную часть сайта

Уязвимый плагин WordPress

На сегодняшний день, в директории WordPress.org насчитывается почти 25,000 различных плагинов. Среди них есть и уязвимые плагины, которые могут обеспечить злоумышленнику полный доступ к вашему сайту. Заранее знать безопасен ли тот или иной плагин невозможно, а проверка на уязвимость может занять от нескольких часов, до нескольких недель.

Здесь в основном вопрос в доверии и репутации разработчика плагина. Вероятность уязвимости в популярном плагине известного разработчика гораздо меньше, чем в совершенно новом сомнительном плагине. При выборе плагина, обратите внимание на количество скачиваний, частоту обновлений, форумы поддержки и другие плагины того же автора, и если есть какие-либо сомнения, лучше поискать аналог.

Если вы обнаружили уязвимость в том или ином плагине, то первым делом стоит обратиться лично к разработчику, по электронной почте, через Skype и т.д. Если разработчик плагина не откликнулся, то стоит сообщить об этом по адресу [email protected], чтобы плагин исключили из директории WordPress.org.

Уязвимая тема для WordPress

В отличии от плагинов, все темы перед публикацией в директории WordPress.org проходят тщательную проверку, поэтому вероятность обнаружить уязвимую тему в директории небольшая. Если все же вы обнаружили небезопасную тему, то в первую очередь обратитесь к разработчику темы, а затем по адресу [email protected] для снятия её из директории.

Так же напоминаем, что темы для WordPress стоит скачивать только с . Большинство проблем возникает как раз с темами, скачанными со сторонних и сомнительных ресурсов.

Устаревшая версия плагина или темы

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

Это относится больше к крупным и популярным продуктам, как недавний пример с известным плагином кэширования W3 Total Cache , который при определённой конфигурации обеспечивал злоумышленнику полный доступ к базе данных сайта ( на англ.). Спустя несколько дней, было выпущено обновление к плагину.

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

Устаревшая версия WordPress

В самом ядре WordPress тоже иногда встречаются уязвимости, поэтому работать со старой версией небезопасно. Так же как и с темами и плагинами, стоит в день выхода обновления, особенно если речь идёт о «техническом релизе».

Если вы обнаружили уязвимость в WordPress, то обязательно напишите на [email protected] подробное описание проблемы, но не распространяйте информацию публично.

Неправильная конфигурация хостинга

Хосинг-провайдер играет огромную роль в защите вашего сайта, особенно когда речь идёт о компонентах, над которыми вы не имеете никакого контроля, например устаревшая и уязвимая версия PHP, или уязвимый модуль для веб-сервера Apache. Чаще всего это случается с дешёвыми хостинг-провайдерами, у которых «всё включено и безлимитно» за 5 копеек в год. Помните: стоит денег!

Что делать если сайт взломали

Если злоумышленники добрались до вашего сайта, то вам придётся нелегко, главное в этом случае не паниковать. Злоумышленники часто оставляют за собой след (или открытую дверь) в виде посторонних плагинов, изменённого кода в ядре и т.д. Ниже приведены несколько советов по устранению следов злоумышленника:

  • Изменить все пароли доступа к хостинг-площадке, включая пароль к базе данных
  • Установить WordPress с нуля, скачав самую свежую версию
  • Изменить все секретные ключи в wp-config.php
  • Экспортировать всю старую базу данных и тщательно её почистить
  • Изменить в экспорте все пароли для всех пользователей
  • Импортировать содержимое в новый установленный WordPress
  • Просмотреть директорию загрузок на лишние файлы
  • Импортировать директорию загрузок
  • Тщательно просмотреть каждый плагин и установить самые свежие версии из директории WordPress.org
  • Тщательно просмотреть используемую тему и установить самую свежую версию

Средства подобные Google Webmaster Tools и Exploit Scanner так же помогут найти и устранить признаки взлома вашего сайта. После восстановления работоспособности, следует попытаться понять, как именно злоумышленник пробрался на ваш сайт. С этим вам чаще всего поможет хороший хостинг-провайдер, предоставив журнал доступа.

Здесь приведены несколько дополнительных советов и инструментов для повышения безопасности вашего сайта, как для новичков, так и для более опытных пользователей и программистов:

  • Не забывайте о полном резервном копировании
  • По возможности для административной панели
  • Используйте защищённые SFTP или SSH вместо FTP для работы с хостингом
  • Удаляйте темы и плагины, которыми не пользуетесь
  • Используйте префикс отличный от стандартного для базы данных
  • Запретите редактирование файлов через wp-config.php
  • Запретите исполнение.php файлов в директории wp-content

Сторонние платные сервисы подобные Sucuri и VaultPress так же помогут защитить сайт на WordPress от злоумышленников.

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

Перед прочтением данной статьи вы должны четко понимать, что 100% гарантии безопасности вашего сайта (не зависимо от CMS) не может дать никто. Дело лишь за тем, сколько стоит информация на сайте. И если она стоит миллионы, для защиты сайта понадобится опытная команда программистов, а если несколько тысяч долларов, то следующие советы помогут здорово улучшить безопасность вашего Wordpress-сайта.

Внимание! Посмотрите основные правила безопасности , которые предназначены для большинства сайтов и не зависят от того, на каком движке они сделаны. Тем более в этой статье они не повторяются, т.к. в ней мы сосредоточились на особенностях Вордпресса.

Как защитить Wordpress от взлома?

1. Обновляйте движок

Постоянно проверяйте обновления вашего Wordpress, т.к. разработчики с помощью патчей устраняют уязвимости системы. Вот простой пример - хакер находит уязвимость в движке, и взламывает его. Учитывая, что этот движок стоит на тысячах сайтов, то используя этот способ можно почти в автоматическом режиме взломать и остальные сайты. Сюда также можно добавить темы и плагины. Поэтому не ленитесь и обновляйте все, что можно обновить.

2. Не используйте подозрительные плагины

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

3. Используйте надежный хостинг

Если смотреть на безопасность сайта в целом, то ее можно обозначить как связку CMS и ПО, которое установлено на сервере Вашего хостинг-провайдера. Да-да-да, именно это ПО тоже имеет дыры и его нужно постоянно обновлять. К сожалению не все хостеры делают это. Также, при DDOS-атаках на сайты, которые находятся на том же сервере, что и Ваш сайт, у плохого хостера будет долгое время недоступен и Ваш ресурс тоже. В общем выбирайте качественную хостинг-компанию, с хорошими отзывами и большим количеством клиентов. На нашем сайте есть рейтинги, которые составлены под конкретные задачи сайта, найти их можно в .

4. Установите надежные логин и пароль

Не используйте логин admin, т.к. это помогает хакеру подобрать пароль к Вашей админке. Также следите за тем, чтобы пароль был сложным. И самое главное - не храните логин\пароль в браузере и следите за тем, чтобы на вашем компьютере не было вирусов (они следят за всем, что вводится с клавиатуры и крадут).

5. Ограничьте количество попыток входа

Если хакер осуществляет попытку взломать сайт путем подбора логина и пароля, то теоретически когда-нибудь он это сделает. Помешать этому можно путем ограничения попыток неверного ввода с одного IP-адреса. Для этого используют плагины Limit Login Attempts и Login LockDown .

6. Используйте надежные темы

Перед установкой темы обязательно посмотрите кто ее сделал, старайтесь чтобы это была известная и опытная команда. Также следует запретить редактирование файлов вашей темы из админ-панели. Это поможет в том случае, хакер получит доступ к админке. Чтобы это сделать в файле wp-config.php добавляем следующее:

define("DISALLOW_FILE_EDIT", true);

7. Измените ключи шифрования

Следует поменять ключи шифрования, т.к. стандартные могут быть известны взломщикам. Для этого переходим на специальный сервис на официальном сайте Wordpress и в свой wp-config.php вставляем значения указанных там переменных. Или же придумайте сами, любые сочетания букв.

8. Установите компоненты защиты

Используйте следующие компоненты, которые помогут улучшить безопасность сайта на Wordpress:

  • Better WP Security - один из самых популярных плагинов по безопасности с мощным функционалом
  • WP Security Scan - проверяет множество параметров безопасности вашего сайта
  • WP Antivirus - постоянно сканирует файлы сайта на наличие взлома, и при обнаружении присылает сообщение на имейл
  • WP File Monitor - аналогичен предыдущему плагину
  • Securi Scanner - сканер сайта на наличие взлома и уязвимостей.

9. Измените префикс базы данных

Когда хакер хочет сделать SQL-инъекцию, то он уже знает, что в стандартном варианте Wordpress использует префикс wp_, поэтому желательно его изменить. Сделать это можно или с помощью плагина (легкий путь, но не всегда плагины корректно работают) или через PhpMyAdmin (чуть сложнее сделать, поэтому мы создали универсальную инструкцию).

10. Перенесите wp-config.php

Следует вынести этот файл за пределы папки public_html (или ее аналога, в которой установлен Wordpress), например поднять на один уровень вверх. О том как это сделать можно прочитать .

11. Заблокируйте админ-панель для чужих

Сделайте так, чтобы пользоваться вашей админ-панелью могли только вы. Для этого блокируется доступ к папке wp-admin для всех, у кого IP-адрес отличается от вашего. Чтобы так сделать нужно добавить в эту папку файл.htaccess и добавить в него:

order deny,allow
allow from xxx.xx.xxx.xx
deny from all

где "xxx.xx.xxx.xx" - это IP-адрес, с которого можно зайти в админ-панель.

12. Установите нужные права на папки

В классическом варианте нужно установить на все папки - 755, на все файлы - 644. Иногда на папку wp-content ставят права 777, но лучше - 755 (хотя это как правило запрещает добавлять контент для сторонних пользователей).

Если у вы считаете, что в этой статье упущена какая-либо рекомендация, то напишите о ней в комментарии и мы с удовольствием ее добавим.

Сегодня на нулледе прочитал довольно не плохую статью про улучшения безопасности сайта на WordPress. По скольку на нулледе текст виден только зарегистрированным пользователям с определенным количеством постов, выложу статью у себя на блоге, для общественного пользования 😉 В общем всем также предлагаю ознакомиться и внести свои предложения и исправления (если конечно они будут).

1. Перед инсталляцией;
2. После инсталляции;
3. Периодические проверки и обновления.

1. Перед инсталляцией

1.1. Удаляем все ненужные файлы:
readme.html, license.txt, hello.php, ненужные темы и плагины.

1.2. Правильно отредактируем wp-config.php файл:

define("DB_NAME", "wpdb"); // Вместо "wpdb" нужно придумать сильное имя, например, wp433Fd6HW
define("DB_USER", "wpuser"); // Например, UserFB56SKl
define("DB_PASSWORD", "strongpassword"); // Тут должен быть сильный пароль, например, ‘FE876!8e#fh#9fDfds9f’
define("DB_HOST", "localhost"); // В 99% случаях это значение не нужно менять
define("DB_CHARSET", "utf8"); define("DB_COLLATE", "");

Меняем секретный ключ с дефолтного:

define("AUTH_KEY", "izmenite eto na unikalnuyu frazu");
define("SECURE_AUTH_KEY", "izmenite eto na unikalnuyu frazu");
define("LOGGED_IN_KEY", "izmenite eto na unikalnuyu frazu");
define("NONCE_KEY", "izmenite eto na unikalnuyu frazu");

на сгенерированный, с помощью сервиса

define("AUTH_KEY", "M.uFL(RBw5UkRw%P&+>E*jJZBikz3-OV7sO*-_g*{9z,PnM,T&LPAE");
define("NONCE_KEY", "d2A~8NBb%2?+6`z}?nWoD0`f]-.gUOC);

Делаем таблицы более защищенными:

$table_prefix = "wp_4i32aK_"; // Используйте только буквы, числа и символы подчерка, чтобы сделать свой table_prefix уникальным. По крайней мере, это защитит Вас от части public эксплоитов.

1.3. Создаём пользователя и базу данных для блога в консоле MySQL:
Сначала, заходим под root’ом и создаем базу данных для блога:

$ mysql -u root
mysql> CREATE database wpdb;

$ mysql -u root
mysql> CREATE database wp433Fd6HW;
Query OK, 1 row affected (0.00 sec)

Затем создаём пользователя: этот аккаунт будет иметь доступ только в базе данных WordPress. Также мы можем быть уверены, что пользователь используется только с локального сервера, а не удаленно.

mysql>
-> ON wpdb.*
-> TO "wpuser"@"localhost"
-> IDENTIFIED BY "strongpassword"; Query OK, 0 rows affected (0.01 sec)

В нашем примере это будет выглядеть так:

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON wp433Fd6HW.*
-> TO "UserFB56SKl"@"localhost"
-> IDENTIFIED BY "FE876!8e#fh#9fDfds9f";
Query OK, 0 rows affected (0.01 sec)

1.4. Уберите блок meta из кода Вашей темы
В стандартной теме кусок кода, отвечающего за вывод блока meta:

  • Meta





    • Valid XHTML

    • XFN

    • ">WordPress



  • 2. После инсталляции

    2.1. Меняем пароль Администратора по умолчанию
    Поменяйте сгенерированный на этапе установки пароль Администратора

    2.2. Удаляем версию WordPress

    remove_action ("wp_head", "wp_generator");

    В файле header.php в папке с Вашей темой удаляем строку:

    " />

    Для WordPress версии 2.8.4 находим имплементацию функции get_the_generator($type) и изменяем ее:

    function get_the_generator($type) {
    $gen = "";
    return apply_filters("get_the_generator_{$type}", $gen, $type);
    }

    2.3. Пустой index.php
    Поместите в папки wp-includes/, wp-content/, /plugins/ пустой файл index.php

    2.4. Меняем имя пользователя Admin на нечто более неочевидное
    Изменяем имя через MySQL консоль:

    wp $ mysql -u UserFB56SKl –p
    mysql> use wp;
    UPDATE wp_users SET user_login="adm" where user_login="admin";

    В нашем примере это будет выглядеть так:

    wp $ mysql -u wpuser –p
    mysql> use wp433Fd6HW;
    UPDATE wp_4i32aK_users SET user_login="adm234Df" where user_login="admin";
    Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0

    Или, если не хотите копаться с запросами, можно сделать следующее:

    1. Cоздайте новый аккаунт. Имя пользователя должно быть уникальным;
    2. Назначьте новому пользователю роль Администратора;
    3. Перелогинтесть как новый Администратор;
    4. Удалите учетку старого Администратора.

    2.5. Создаём новые роли пользователей
    Для этого необходимо сначала установить на Ваш блог плагин . Этот плагин даст Вам возможность скрупулезно и точечно устанавливать права пользователей. После активации плагина Вам, для начала нужно создать пользователя для себя. Удалите все права пользователя и затем внимательно выберите только те права, которые понадобятся Вам для ежедневной активности (писать посты, модерировать комментарии и тд). Удостоверьтесь, что только админский аккаунт имеет привилегии для активации / дезактивации плагинов, загрузки файлов, управлении опциями, переключении тем, импорт и тд.
    Если в Вашем блог будет многопользовательским, то необходимо подумать о том, какие права действительно нужны пользователям и создать на основе этого свои собственные роли.
    При создании ролей будьте осторожны, раздавая пользователям такие права как: аплоад файлов, доступ к редактированию исходного кода плагинов, активации плагинов, редактировании файлов / постов / страниц, импорт, нефильтрованный HTML, так как эти роли дают пользователям большие полномочия.

    2.6. Ограничиваем доступ к папкам wp-content и wp-includes
    С помощь файла.htaccess и специальных правил, мы запретим всё, кроме запросов на картинки, CSS и JavaScript. Файлы.htaccess необходимо положить с соответствующие директории.

    Order Allow, Deny
    Deny from all

    Allow from all

    Вы также можете добавить специфические PHP файлы для определенных шаблонов и плагинов.

    2.7. Прячем директорию wp-content
    Начиная с версии WordPress 2.6, появилась возможность переместить директорию wp-content.
    Меняем в wp-settings.php строчки:

    define("WP_CONTENT_DIR",$_SERVER["DOCUMENT_ROOT"]."/blog/wp-content");
    define("WP_CONTENT_URL","http://domain.ru/blog/wp-content");

    И, чтобы не было проблем с плагинами:

    define("WP_PLUGIN_DIR",$_SERVER["DOCUMENT_ROOT"]."/blog/wp-content/plugins");
    define("WP_PLUGIN_URL","http://domain.ru/blog/wp-conten/plugins");

    2.8. Ограничиваем доступ к папке wp-admin
    Если у Вас статический IP
    Этот шаг легко осуществим для однопользовательского блога, но может принести настоящую головную боль для многопользовательского варианта. Этот трюк подходит только, если у Вас статический IP. Файл.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-admin и попробуйте зайти в эту папку через прокси. Если всё работает правильно, в доступе будет отказано. После этого попробуйте зайти со своего IP.

    Ограничиваем доступ по паролю
    Более предпочтительным может оказаться доступ к папке wp-admin по паролю. А это означает, что Вы можете заходить в админскую панель, откуда угодно. Также это вариант, если у Вас динамический IP.
    Файл.htaccess для директории wp-admin должен содержать следующие правила:

    #Файл.htpasswd находиться за пределами root директории Вашего блога

    ErrorDocument 401 default
    AuthUserFile /srv/www/user1/.htpasswd
    AuthType Basic
    AuthName "WordPress Dashboard"

    require user adminuser #Создайте секъюрный username


    require valid-user

    Сгенерируйте пароль командой:

    $ htpasswd -cm .htpasswd adminuser

    Или для генерации пароля воспользуйтесь сервисом . Вот пример для user: admin , password: test

    admin:$apr1$t3qLL...$uUmj9Wm/WbJk7YNza6ncM/

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

    2.9. Файл wp-config.php
    Вариант первый: для защиты Ваших данных необходимо перебросить на папку выше, WordPress автоматически проверит директорию выше если не найдет у себя в корне wp-config.php.
    Если по каким-то причинам Вы не можете проделать того, что описано выше, то существует еще один вариант. А именно – защитить Ваш wp-config.php с помощью.htaccess:

    # protect wpconfig.php

    Order deny,allow
    deny from all

    2.10. Устанавливаем правильные права на файлы и папки
    Основное правило:

    1. Для файлов - 644
    2. Для папок - 755

    Из шелла эти операции можно проделать с помощью:

    cd
    find (your path) -type d -exec chmod 755 ‘{}’ \
    find (your path) -type f -exec chmod 644 ‘{}’ \

    2.11. SSL для админов
    Если Ваш сервер поддерживает SSL, то лучше сделать доступ в админку защищенной. Для этого в файле wp-config.php уберите комментарии в строчке:

    define(’FORCE_SSL_ADMIN’, true);

    2.12. Удалите вывод логов WordPress
    В файле functions.php в папке с Вашей темой добавляем строку:

    add_filter("login_errors",create_function("$a", "return null;"));

    2.13. Запрещаем индексации с помощью Robots.txt
    Проверить правильность можно по адресу

    2.14. Плагины для Вашей безопасности
    Login LockDown - Устанавливаем количество ложных логинов
    Для этого есть два решения в виде плагинов and . После того, как плагин активирован, он записывает все попытки залогиниться. Плагин позволяет запретить посетителю логиниться определенное время, после того как посетитель несколько раз неправильно ввёл пароль.

    Belavir – Следим за изменениями в ключевых php файлах

    WPIDS – Определяем признаки внедрения

    WordPress Online Security Scanner – Сканируем блог на уязвимости

    Akismit – Противоборство СПИДу СПАМу

    SpamBam – Определяем валидный ли браузер пользует клиент

    3. Периодические проверки и обновления

    3.1. Следите за обновлением WordPress
    3.2. Следите за обновлением плагинов
    3.3. Следите за обновлениями безопасности

    3.4. Проверяйте код темы и плагинов, которые Вы хотите добавить, на «дырявость»
    3.5. Боритесь со спамом
    3.6. Регулярно делайте полный backup базы данных Вашего блога
    3.7. Читайте девелоперские блоги
    Небольшой список:



    © 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows