web:wordpress:wp_defence

WordPress - Защита сайта

Самая частая причина взлома (не только сайтов) - это простой словарный пароль, например “password” или “12345678”. Подобные пароли подбираются за считанные секунды. Ваш пароль должен быть надёжным и уникальным. Не используйте один и тот же пароль на разных сайтах или сервисах.

Надёжный пароль должен содержать не менее 16 букв нижнего и верхнего регистра, цифр, символов, пробелов. Не используйте простые словарные слова.

Надёжность пароля относится не только к вашему сайту WordPress, но и к вашей электронной почте, к вашему аккаунту на Facebook, Twitter и других социальных сетях, а так же к вашему компьютеру. Не храните пароли на листочках под клавиатурой или в записной книжке - используйте специальные приложения, которые для этого предназначены.

Стандартное имя пользователя в WordPress стоит так же поменять - не используйте имя пользователя “admin”, поскольку пароль именно к этому пользователю будут пытаться подобрать злоумышленники. Наконец, не забывайте о надёжности пароля к панели управления вашим хостинг-аккаунтом, пароля для FTP доступа к сайту, а так же пароля к базе данных MySQL.

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

Компьютерные вирусы могут передаваться через электронную почту, на дисках и USB носителях, и даже через смартфон, например при его синхронизации с компьютером. Никогда не открывайте подозрительные файлы.

Антивирусные программы помогут вам обнаружить вирусы на вашем компьютере и обезопасить вас при работе в сети. Популярные антивирусные программы: Nod32, Антивирус Касперского (который с 2016 года выпустил безплатную версию)

Устаревшие версии ядра, тем оформления и плагинов являются частой причиной взлома сайтов на WordPress. Помните, что в новых версиях разработчики часто устраняют уязвимости, найденные в старых версиях.

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

Обновления ядра WordPress бывают двух типов - основные (например 3.8) и технические (например 3.8.1, 3.8.2). Как правило технические обновления состоят из мелких исправлений, часто касаются безопасности, и крайне редко конфликтуют с активными плагиами или темой.

Технические релизы WordPress стоит применять как можно быстрее, желательно в день выхода обновления. Кстати, начиная с версии 3.7, WordPress автоматически обновляет ядро на технические релизы, если ваш хостинг-провайдер это позволяет.

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

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

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

Бесплатные плагины и особенно темы для WordPress стоит скачивать только из официальной директории WordPress.org, которая просматривается модераторами. При обнаружении уязвимых тем или плагинов в директории, обязательно сообщите о них на themes@ wordpress.org и plugins@wordpress.org соответственно. Такие инструменты как Theme Check и Plugin Check позволяют просканировать темы и плагины на некоторые известные уязвимости, а так же на соответствие стандартам WordPress.

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

Если вам необходимая более тонкая настройка ролей и привилегий в WordPress, воспользуйтесь плагином, например User Role Editor. Некоторые привилегии можно так же отключить на уровне конфигурационного файла wp-config.php, например можно запретить всем пользователям (включая администраторов и сетевых администраторов) публиковать нефильтрованный HTML с помощью:

define( 'DISALLOW_UNFILTERED_HTML', true );

Двухфакторная аутентификация это дополнительная защита поверх вашего пароля. С помощью таких плагинов и приложений как Google Authenticator или Authy, при входе в панель администрирования WordPress попросит вас ввести дополнительный код, который вы можете найти на вашем смартфоне. Этот код меняется каждую минуту.

Так же советуем воспользоваться двухфакторной аутентификацией на всех сервисах, которые её позволяют, например ваш аккаунт Google и почта Gmail, ваша учётная запись сети WordPress.com, ваш аккаунт на GitHub и т.д.

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

Перебор (или “брутфорс”) это когда программа перебирает большое количество возможных паролей к форме входа, либо по словарю (словарный перебор), либо по алгоритму (полный перебор). Защитить форму входа от перебора вы можете несколькими способами. Мы рекомендуем попробовать плагин Limit Login Attempts, который запретит пользователям несколько раз подряд выполнить попытку входа. К сожалению подобный плагин не спасает, когда брутфорс-атака происходит из сети ботов с разными IP-адресами.

Вы можете так же повесить “капчу” на форму входа WordPress, например с помощью плагина Captcha. Это доставит какое-то неудобство для настоящих пользователей, а для роботов это будет серьёзной помехой.

Не забывайте так же, что перебор можно осуществить не только на вашей форме входа WordPress, но и на форме входа к управлению вашим хостинг-аккаунтом, и на сервисы FTP/SSH. Узнайте у вашего хостинг- провайдера, какими средствами от перебора они защищены.

Следуя пословице «две головы лучше одной», существует способ вдвое усилить защиту административной зоны. Защита регулируется файлом .htaccess, который должен находится в папке «wp-admin» вместе с файлом .htpasswd, который хранит логин и пароль пользователя. После обращения к папке, вам нужно будет ввести логин и пароль, но разница в том, что в этом случае авторизация контролируется на стороне сервера, а не силами самого WordPress.

Для того чтобы просто и быстро сгенерировать файлы .htaccess и .htpasswd, воспользуйтесь этим сервисом.

Учтите, что некоторые файлы в директории wp-admin могут исполняться и анонимными пользователями, например файл admin-ajax.php часто используется в темах и плагинах, для работы с AJAX в WordPress. Защищать данный файл паролем не стоит.

В админ-панели WordPress есть встроенный редактор, который позволяет вам редактировать файлы вашей темы и плагинов. Хоть это и удобно для мелких правок, это не безопасно. Ведь любой, кто сможет получить доступ к вашей учётной записи, сможет исполнять любой PHP код на вашем сервере не получив при этом доступ к FTP или SSH. Вы можете запретить редактирование файлов в панели администрирования с помощью константы в конфигурационном файле WordPress wp-config.php:

define( 'DISALLOW_FILE_EDIT', true );

Данная директива запретит редактирование файлов, но не запретит администраторам устанавливать новые плагины и темы через панель администратора WordPress. К счастью существует ещё одна константа, которая запрещает любое редактирование файлов в файловой системе WordPress (кроме директории для загрузок wp-content/uploads):

define( 'DISALLOW_FILE_EDIT', true );

Учтите, что установив эту директиву вы больше не сможете устанавливать и обновлять темы и плагины через панель администратора. Вам придётся это делать вручную с помощью FTP или SSH.

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

[code]# protect wpconfig.php
<files wp-config.php>
Order deny,allow
deny from all
[/code]

Очень важно убедиться, что файл .htaccess находится в той же директории что и файл wp-config.php.

Конфигурационный файл WordPress wp-config.php содержит в себе некоторые настройки сайта и информацию для доступа к базе данных. Также там другие настройки, касающиеся безопасности (они представлены в списке ниже). Если таких значений в этом файле нет, или же имеются только установленные по умолчанию, вам необходимо, соответственно, добавить или изменить их:

  1. Ключи безопасности: начиная с версии 2.7, в WordPress есть четыре ключа безопасности, которые должны быть правильно установлены. WordPress спасает вас от необходимости выдумывать эти строки самому, автоматически генерируя правильные ключи с точки зрения безопасности. Вам просто нужно вставить ключи в соответствующие строки файла wp-config.php. Эти ключи являются обязательными для обеспечения безопасности вашего блога.
  2. Префикс таблицы заново установленного WordPress блога не должен быть стандартным «wp_» Чем больее сложным будет значение префикса, тем менее вероятна возможность несанкционированного доступа к таблицам вашей MySQL базы данных. Плохо: $table_prefix = 'wp_';. Намного лучше: $table_prefix = 'wp4FZ52Y_'; Не стоит бояться забыть это значение — вам необходимо ввести его только один раз, больше оно вам не понадобится.
  3. Если у вас на сервере доступно SSL шифрование, рекомендуется включить его для защиты административной зоны. Это можно сделать, добавив следующую команду в файл wp-config.php: define('FORCE_SSL_ADMIN', true);

Также вы можете регулировать другие системные настройки в конфигурационном файле. Четкий и исчерпывающий список доступных настроек доступен на странице Кодекса

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

Страница авторизации WordPress — это дверь в административную зону вашего блога, которая становится доступна после безошибочного прохождения верификации. У каждого пользователя существует бесконечное количество попыток авторизации, и каждый раз по умолчанию услужливый WordPress указывает, в чем именно была ошибка. То есть, если введенный логин окажется неверным — WordPress так и скажет. Это удобно для пользователя, но также и для хакера.

Несложно догадаться, как быстро сокращается вероятность подбора комбинации логина/пароля, когда система указывает что именно введено неверно. Простая строка кода, поможет решить эту проблему, достаточно добавить её в файл functions.php вашей темы:

[php]add_filter('login_errors',create_function('$a', «return null;»));[/php]

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

Google Webmaster Tools и Яндекс.Вебмастер сообщат вам, если на вашем сайте вдруг появится какие-либо посторонние ссылки или скрипты. С помощью этих инструментов вы можете так же просмотреть, как ваш сайт выглядит в глазах поисковика, ведь некоторые вирусы отображают “левые” ссылки только поисковым роботам.

Плагин Exploit Scanner позволит просканировать ваш WordPress на вредоносные скрипты, плагины и темы. Сервисы Sucuri и VaultPress позволят делать это регулярно, а так же помогают с очисткой и резервным копированием.

Яндекс.Метрика или Pingdom могут оповестить вас, если ваш сайт вдруг перестал работать.

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

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

  1. Изменить все пароли доступа к хостинг-площадке, включая пароль к базе данных и FTP
  2. Установить WordPress “с нуля” скачав самую свежую версию
  3. Изменить все секретные ключи в wp-config.php
  4. Экспортировать старую базу данных и заняться её чисткой
  5. Импортировать содержимое в новый установленный WordPress
  6. Просмотреть директорию загрузок на лишние файлы
  7. Импортировать директорию загрузок
  8. Просмотреть все плагины и установить свежии версии из директории WordPress.org
  9. Тщательно просмотреть используемую тему и установить самую свежую версию
  10. Просмотреть логи доступа до момента взлома, обращая внимание на запросы типа POST
  11. смотрим что написано в файле htaccess особенно на правила модреврайта, им часто пользуются для перенаправления на свои страницы и бэкдоры.

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

  • Не забывайте о полном резервном копировании
  • Используйте защищённые SFTP или SSH вместо FTP для работы с хостингом
  • :!: Удаляйте темы и плагины, которыми не пользуетесь
  • Используйте префикс отличный от стандартного для базы данных
  • Запретите редактирование файлов через wp-config.php
  • Запретите исполнение .php файлов в директории wp-content
  • Меняем названия неиспользуемых файлов
    1. wp-cron.php - если вы его не используете то вообще лучше удалить или заменить но другое имя, к этому файлу очень много обращений и попыток взлома.
  • через htaccess лочим ипы тех, кто пытается зайти на wp-cron, брутфорсить и etc, лучше это делать автоматизировано через плагины.
  • В корне вашего блога удалите файлы readme.html и license.txt. Они вам не нужны, они нужны мошенникам, для того чтобы узнать версию вашего движка wordpress и еще много чего полезного для взлома.
  • Так же в файле header.php темы вашего блога удалите строку версии wordpress.
<meta name=”generator” content=”WordPress <?php bloginfo (’version’); ?>” />
  • Наберите в вашем браузере адреса:
1. http://ваш блог/wp-conten/
2. http://ваш блог/wp-content/plugins/

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

Немедленно создайте в каждой из этих директорий пустой файл index.php. Теперь после ввода этих адресов в адресную строку браузера, вам должна открыться чистая пустая страница.

Ко всему прочему как дополнение можете прописать в файле .htaccess дополнительную строчку:

Options All -Indexes

В файле function.php в конце кода пропишите строку:

<!—?php remove_action (’wp_head’, ‘wp_generator’); ?—>

А так же в файле search.php замените строку

<!—?php echo $_SERVER [‘PHP_SELF’]; ?—>

на

<!—?php bloginfo (’home’); ?—>

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

  • web/wordpress/wp_defence.txt
  • Последние изменения: 2016/04/15 22:54
  • (внешнее изменение)