Повышению безопасности WordPress

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

Итак, поехали:

  1. Всегда обновляйся на крайнюю версию. Всегда, когда только есть такая возможность. Правильные хак-группы давно уже используют ботнеты для вскрытия наибольшего количества сайтов за минимальное время.
  2. Вырубай всё лишнее, удаляй всё не нужное. Избавляйся от всего, что потенциально может раскрыть версию ПО или дать хоть какую-то информацию взломщику.
  3. Проверяйся после обновлений и/или изменений темы онлайн-сканером на наличие широко известных проблем безопасности (сделай это и сейчас, всё что требуется — указать ссылку на испытуемый wp).
  1. Делай бэкапы. Вне зависимости от того, делает ли их за тебя хостер. Самостоятельно — делай бэкапы.
  2. Не используй стандартный префикс для таблиц в БД WP. Вместо “wp_” измени его на “w0rdpre55_” или “W_P_” — смысл ты понял. Делается это для того, чтоб если твой сайт стал уязвим к SQL инъекции, то взломщикам стало бы сложнее (в ряде случаев — невозможно) её использовать. Как изменить префикс — поставить этот плагин, изменить префикс, снести плагин.
  3. Включи авто-обновление WP. Добавь в wp-config.php строчку:
    define('WP_AUTO_UPDATE_CORE', true);
  4. Выруби редактор тем и плагинов. Если злоумышленник получит доступ к панели управления WP — в ряде случаев ничего не помешает ему комфортно поднять себе полноценный шелл. Добавь в wp-config.php строчку:
    define('DISALLOW_FILE_EDIT', true);
  5. Аналогично выруби возможность загружать плагины — добавь в wp-config.php строчку:
    define('DISALLOW_FILE_MODS', true);
  6. Отключи вывод информации об ошибках, если таковые вылазят. В самое начало wp-config.php смело добавляй:
    error_reporting(0); @ini_set('display_errors', 0);
  7. Правильно расставь права доступа. Директории — 755 или 750, файлы — 644 или 640, на wp-config.php — 600.
  8. Не лишним будет повысить секьюрность, добавив в корневой .htaccess следующий код:
    Options -Indexes
    <files ~ "(wp-config|xmlrpc).php$">
      order allow,deny
      deny from all
    </files>

    Который закрывает доступ к wp-config.php (хотя в нем и так только константы и ничего не выводится — нехер) и закрывает доступ к xmlrpc.php, который крайнее время активно используется для DDoS.

  9. Более того, не лишним будет в /wp-admin/ создать .htaccess со следующим кодом:
    AuthUserFile /path/to/.htpasswd
    AuthType Basic
    AuthName "restricted"
    Order Deny,Allow
    Deny from all
    <limit GET POST>
      Require valid-user
    </limit>
    Satisfy any

    Файл .htpasswd можно сделать и при помощи этого онлайн-сервиса. Просто пропиши в нем полученную пару логин:хэш_пароля и путь к нему укажи в примере что выше. Используй разные пароли для WP и BasicAuth.

  10. В /wp-includes/ создаем .htaccess вот с таким содержимым:
    order deny,allow
    deny from all
    <files ~ "(.(xml|css|jp?g|png|gif|js)|wp-tinymce.php)$">
      allow from all
    </files>

    Тем самым закрывая извне доступ ко всему, кроме перечисленных выше типов файлов (в основном по расширению).

  11. Не используй стандартное имя для учетной записи администратора, сделай жизнь брутеров и киддистов значительно сложнее. Сделать это просто — достаточно изменить поле “user_login” в таблице “%wp%_users” для пользователя с ID равным 1.
  12. Поставь защиту от перебора пароля. Например, поставь плагин Login LockDown.
  13. Поставь плагин Disable Author Pagesскрой имена авторов постов (которые зачастую совпадают с логинами для входа, осложни жизнь брутфорсерам)
  14. Удали из темы всё, то выводит информацию о том что это wp, и не дай джа — палит его версию.
  15. Размести в директориях /wp-content, /wp-content/plugins, /wp-content/themes и /wp-content/uploads пустой файл “index.php”.
  16. Удали из /wp-admin файлы install.php и upgrade.php.
  17. Удали файлы readme.html и пр. из корневой директории.
  18. Поставь плагин Acunetix WP Security, как минимум для проверки и блокировки ещё кое-каких моментов.
  19. Можешь поставить плагин снапшотов, проверяющий изменения в коде файлов wp. Народ рекомендует этот — WP Changes Tracker.

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