Безопасность WordPress — советы и плагины. Безопасность WordPress — советы и рекомендации

Безопасность wordpress – очень важный аспект в работе системы. Понятно, что сегодня интернет не является такой уж безобидной средой, а наоборот содержит множество угроз в виде троянов, вирусов и прочей нечисти. Поскольку wordpress open sourse система, то хакеры имеют доступ к исходному коду, что позволяет находить в нем различные дыры для взлома. Но не нужно паниковать! Все системы для управления сайтов содержат известные или скрытые уязвимости, идеальных решений не существует.

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

Технология XML-RPC применяется в системе WordPress для разных приятных фишек по типу пингбэков, трекбеков, удаленного управления сайтом без входа в админку и т.п. К сожалению, злоумышленники могут использовать ее для DDoS атаки на сайты. То есть вы создаете красивые интересные WP проекты для себя или на заказ и при этом, ничего не подозревая, можете быть частью ботнета для DDoS`а. Соединяя воедино десятки и сотни тысяч площадок, нехорошие люди создают мощнейшую атаку на свою жертву. Хотя при этом ваш сайт также страдает, т.к. нагрузка идет на хостинг, где он размещен.

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

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

Вчера столкнулся с неприятной ситуацией, когда с 10-ток моих сайтов в том числе и парочка основных блогов была хакнута. Не знаю что за мудак этот Badi, но судя по подписи это все его «заслуга». Вообще, изначально, когда возникают проблемы со многими сайтами на хостинге, первое подозрение на хак панели управления или утечку паролей на ФТП/Базы данных. Это, пожалуй, самое неприятное, что может произойти — т.к. является показателем сознательной атаки против вас или конкретных проектов. Но, просматривая просторы интернета понимаю, что мои проблемы с вордпресс не единичный случай, и этот проказник натворил делов.

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

Вряд-ли есть блогеры, которые не слышали страшилок о том, как взламывают или воруют блоги (особенно на популярной платформе WordPress). Возможно, даже кто-то из вас или ваших знакомых оказывался в подобном незавидном положении. Сказать, что это ситуация неприятная — ничего не сказать. Для хозяина блога такое происшествие — настоящая трагедия, которая как минимум заставит потратить некоторое время на восстановление всей информации. Что может быть в худшем случае и думать не хочется. А ведь при должной бдительности и системном подходе такой беды можно избежать!

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

Зашел я тут как-то на один сайт полезный, читаю себе статью и вдруг захотелось посмотреть реализацию оформления текста в HTML коде. По привычке пытаюсь выделить часть текста, после чего с помощью контекстного меню в Firefox собирался глянуть «код выделенного фрагмента», но в результате не удалось сделать ни то, ни другое. Я, конечно, заинтересовался еще больше что там у них такой за механизм защиты текстов и контента. Поэтому в меню «Вид» все того же Firefox выбираю пункт «Исходный код страницы» и вижу упоминание плагина WP-CopyProtect для wordpress. Мне показалось это веселым, поэтому решил об этом написать:)

Насчитал около 20 постов, то есть где-то 3 подборки раз в неделю вам обеспечено:) Ближе к выходным чтобы почитать уже больше для расслабления и закрепления материала. Итак, поехали.

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

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

Вирусы не должны быть у вас на диске. Также и хостинг не должен содержать вирусы. Иначе вы сами станете причиной разрушения сайта — вирусы, наподобие троянов, съедят его. Либо сайт может не повредиться, но он станет разносчиком «инфекции» — скачивая файл, пользователь скачает и вирус. Ниже приведены советы по защите сайта, а также плагины Вордпресс, которые помогут вам в этом деле.

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

  • У вас должен быть сложный пароль для доступа в . Взлом административной панели — это, пожалуй, самое худшее, что могут сделать злоумышленники. После взлома они смогут украсть все статьи, которые вы еще не опубликовали, а также удалить содержимое сайта.
  • Пароль лучше обновлять раз в полугодие. Взломщики используют специальные программы для подбора комбинаций. Если пароль будет обновляться, их шансы взломать сайт сводятся к нулю.
  • В качестве пароля нельзя использовать общеизвестное слово — взломать такой код проще простого. Это могут сделать даже те, у кого нет специальной программы для взлома аккаунтов.
  • Когда вы заходите на сайт в админку, браузер предлагает вам сохранить пароль. С одной стороны, это удобно — ведь не придется каждый раз потом вводить сложный пароль. С другой — это может стать причиной взлома админпанели.
  • Самая большая ошибка, которую совершают большинство вебмастеров — это использование одинакового пароля для входа на разные площадки. Если у вас для админки, хостинга и почта будет одинаковый пароль, то взломав аккаунт сайта, злоумышленник автоматически получит пароль и на все другие ваши профили.
  • Не рекомендуется хранить ваши пин-коды и пароли где-либо в Интернете и даже на жестком диске. Компьютер могут украсть, а аккаунт социальной сети — взломать.
  • Если сидите с чужого компьютера, не заходите на сайт в админку со стандартного браузера — он может сохранить пароли. Лучше используйте режим инкогнито.

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

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

Если вы не будете следовать указанным советам, то вскоре и ваш сайт будет считаться сомнительным! А вот, что вы можете сделать в настройках Вордпресс для повышения безопасности ресурса:

  1. Как только появляется новое обновление, устанавливайте его — возможно в новом обновлении применены инновационные технологии повышения безопасности.
  2. На случай, если взломщик все же проникнет в админку и удалит все содержимое сайта, сделайте резервную копию базы данных и всего содержимого. Тогда сайт будет несложно восстановить.
  3. Иногда в теме имеются какие-то посторонние ссылки. На всякий случай удалите их.
  4. Взломщикам и хакерам куда проще «надругаться» над вашим ресурсом, если в нем указана версия движка. Лучше скрыть ее от посторонних глаз. Чтобы версия не отображалась, вам необходимо будет настроить файл header.php — удалить строчку с указанием WordPress version. Также удалите на хостинге файлы readme.htm и license.txt — без них сайт будет работать точно также.
  5. Если вы работаете на одном и том же компьютере, или их у вас несколько, тогда вы можете указать в настройках IP, с какого вы обычно заходите. Указывается эта информация в файле.htaccess. Со строки Allow from. Если вдруг вы поменяете компьютер и нужно будет зайти с другого места, вы всегда сможете отредактировать файл для активации доступа с другого IP. Чтобы узнать свой IP, воспользуйтесь специальными сервисами в Интернете.
  6. Лучше не используйте стандартную учетную запись сайта admin, а создайте собственную с придуманными вами логином. Так взломать сайт будет куда сложнее.
  7. Наверняка вы слышали о всяческих атаках на сайты. Установите плагины для защиты сайта от них.
  8. Максимально защитите ваши базы данных на сервере, ограничив доступ всеми возможными средствами.

Защита WordPress плагинами

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

  1. Anti-XSS attack — модуль, который защитит ваш ресурс от XSS-атак. Звучит странно — «атака». Но с современными темпами роста вполне не исключено, что на ваш ресурс могут напасть. Есть белые и черные методы борьбы с конкурентами. Те, у кого есть деньги и нет совести, часто выбирают второе — грязные способы удаления сайтов-конкурентов. XSS-атака — это внедрение вредного кода в структуру сайта.
  2. Login LockDown защитит вашу админку от многочисленных попыток взлома. Боты подбирают пароль путем угадывания комбинаций. Если не ограничить количество попыток и не добавить какой-то дополнительный фактор для совершения авторизации, задача для роботов значительно облегчится — они легко смогут взломать ваш «пассворд». Плагин Login LockDown ограничивает число вводов по количеству и времени.
  3. WP Security Scan — мощный плагин для обеспечения безопасности. После установки и активации произойдет проверка вашего ресурса. Вы узнаете какие пункты безопасности нарушены, и что нужно предпринять для их исправления. Плагин сканирует наличие новых версий движка, тип используемого префикса таблиц, скрытность версии WordPress, базу данных на наличие ошибок, пользовательский аккаунт, с которого вы занимаетесь администрированием сайта, а также настройки файла.htaccess.
  4. Simple Backup позволит вам быстро сделать и скачать резервную копию всего сайта. Делайте это хотя бы раз в месяц — никогда не знаешь, когда случится беда.
  5. Login Dongle — модуль, который абсолютно исключит возможность взлома вашего аккаунта админа. Он добавляет к привычным формам для заполнения вопрос, на который вам нужно будет ответить. Таким образом, робот не сможет быстро подобрать и пароль, и ответ.
  6. Exploit Scanner — плагин, который удостоверит отсутствие вредоносных программ и файлов у вас на сайте и в списке базы данных. Не думайте, что у вас все идеально — вирусы работают незаметно. Лучше лишний раз проверить их отсутствие.
  7. Если вы постоянно забываете о надобности регулярных проверок сайта, тогда воспользуйтесь плагином WordPress AntiVirus — он делает это автоматически.
  • Перевод

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

Эта статья сфокусирована на вопросах усиления безопасности WordPress - как административной панели, так и настроек блога, подразумевая все содержимое папки «wp-admin» , которое отображается только после авторизации . Мы сознательно выделили фразу "после авторизации " - вы должны четко осознавать, что только один простой запрос отделяет «злого хакера» и админку всего вашего блога или сайта! А последняя защищена настолько сильно, насколько мощный пароль вы выбрали.

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

1. Переименуйте папку wordpress.

Начиная с версии 2.6, стало возможным изменять путь к папке wp-content . К сожалению это до сих пор неприменимо к папке wp-admin . Думающие о безопасности блоггеры смирились с этим и стали надеяться, что это станет возможным в будущих версиях. Пока этого не случилось, предлагаем воспользоваться следующим альтернативным решением проблемы. После распаковки архива с файлами WordPress, вы увидите папку «WordPress» - переименуйте папку (в идеале во что-то непонятное вроде " wordpress_live_Ts6K" ) и после этого настройте соответственным образом файл wp-config.php , который находится в корневой директории.
Что нам даст это изменение?
  • Во-первых, все файлы WordPress не будут смешаны с другими файлами в корне сайта, таким образом мы повысим ясность корневого уровня.
  • Во-вторых, множество копий WordPress может быть установлено параллельно в папки с разными именами, исключая их взаимодействие, что делает это идеальным для тестирования
  • Третье преимущество напрямую касается безопасности: административная зона (и весь блог в целом) больше не находится в корневой папке и для проведения каких-либо действий по взлому сначала ее нужно будет найти. Это проблемно для людей, но что касается ботов - вопрос времени.

Несколько установленных версий в root-каталоге - это возможно!

Примечание: Если системные файлы WordPress больше не в корневой директории, и имя папки инсталяции изменено в соответствии с рекомендациями, описанными выше, блог будет все равно доступен по адресу wp-config.ru . Почему? Зайдите в раздел «Общие настройки (General settings)» вашего блога и введите в поле «WordPress address (URL)» реальный адрес блога на сервере, как показано в примере:

Адрес блога должен быть красивым и ненавязчивым

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

2. Усовершенствуйте файл wp-config.php

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

Не пренебрегайте установкой правильных ключей безопасности!

3. Переместите файл wp-config.php

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

4. Защитите файл wp-config.php

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

# protect wpconfig.php
Order deny,allow deny from all

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

5. Удалите учетную запись администратора.

Во время процесса установки WordPress создает учетную запись администратора с ником «admin» по умолчанию. С одной стороны это вполне логично, с другой - пользователь с известным ником, т.е. ID - 1, обладающий административными правами, является вполне предсказуемой мишенью для хакеров с их программами подбора паролей. Отсюда следует наш совет:
  • Создайте еще одного пользователя с административными правами и вашим ником.
  • Завершите сеанс работы.
  • Залогиньтесь под новым аккаунтом.
  • Удалите учетную запись "admin ".
Если у вас не новый блог и под учетной записью admin вы уже публиковали посты или комментарии, то из предложенных вариантов в момент удаления, выберите пункт «Связать все записи и ссылки с:» и выберите имя нового пользователя:

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

6. Выберите сильный пароль.

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

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

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

7. Защитите папку «wp-admin».

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

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

8. Запретите отображение ошибок на странице авторизации.

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

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

Add_filter("login_errors",create_function("$a", «return null;»));

Изначальный/измененный вид страницы авторизации.

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

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

Если вы постоянно обновляете свой 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. По скольку на нулледе текст виден только зарегистрированным пользователям с определенным количеством постов, выложу статью у себя на блоге, для общественного пользования 😉 В общем всем также предлагаю ознакомиться и внести свои предложения и исправления (если конечно они будут).

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. Читайте девелоперские блоги
    Небольшой список: