WordPress, сука, популярный. А как следствие — дырочки в нем ищутся и находятся с завидной периодичностью. Исходя из этого — сам по себе напрашивается список рекомендаций по повышению его безопасности.
Итак, поехали:
- Всегда обновляйся на крайнюю версию. Всегда, когда только есть такая возможность. Правильные хак-группы давно уже используют ботнеты для вскрытия наибольшего количества сайтов за минимальное время.
- Вырубай всё лишнее, удаляй всё не нужное. Избавляйся от всего, что потенциально может раскрыть версию ПО или дать хоть какую-то информацию взломщику.
- Проверяйся после обновлений и/или изменений темы на наличие широко известных проблем безопасности (сделай это и сейчас, всё что требуется — указать ссылку на испытуемый wp).
- Делай бэкапы. Вне зависимости от того, делает ли их за тебя хостер. Самостоятельно — делай бэкапы.
- Не используй стандартный префикс для таблиц в БД WP. Вместо “wp_” измени его на “w0rdpre55_” или “W_P_” — смысл ты понял. Делается это для того, чтоб если твой сайт стал уязвим к SQL инъекции, то взломщикам стало бы сложнее (в ряде случаев — невозможно) её использовать. Как изменить префикс — поставить , изменить префикс, снести плагин.
- Включи авто-обновление WP. Добавь в wp-config.php строчку:
define('WP_AUTO_UPDATE_CORE', true);
- Выруби редактор тем и плагинов. Если злоумышленник получит доступ к панели управления WP — в ряде случаев ничего не помешает ему комфортно поднять себе полноценный шелл. Добавь в wp-config.php строчку:
define('DISALLOW_FILE_EDIT', true);
- Аналогично выруби возможность загружать плагины — добавь в wp-config.php строчку:
define('DISALLOW_FILE_MODS', true);
- Отключи вывод информации об ошибках, если таковые вылазят. В самое начало wp-config.php смело добавляй:
error_reporting(0); @ini_set('display_errors', 0);
- Правильно расставь права доступа. Директории — 755 или 750, файлы — 644 или 640, на wp-config.php — 600.
- Не лишним будет повысить секьюрность, добавив в корневой .htaccess следующий код:
Options -Indexes <files ~ "(wp-config|xmlrpc).php$"> order allow,deny deny from all </files>
Который закрывает доступ к wp-config.php (хотя в нем и так только константы и ничего не выводится — нехер) и закрывает доступ к xmlrpc.php, который крайнее время активно используется для DDoS.
- Более того, не лишним будет в /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.
- В /wp-includes/ создаем .htaccess вот с таким содержимым:
order deny,allow deny from all <files ~ "(.(xml|css|jp?g|png|gif|js)|wp-tinymce.php)$"> allow from all </files>
Тем самым закрывая извне доступ ко всему, кроме перечисленных выше типов файлов (в основном по расширению).
- Не используй стандартное имя для учетной записи администратора, сделай жизнь брутеров и киддистов значительно сложнее. Сделать это просто — достаточно изменить поле “user_login” в таблице “%wp%_users” для пользователя с ID равным 1.
- Поставь защиту от перебора пароля. Например, поставь .
- Поставь плагин — скрой имена авторов постов (которые зачастую совпадают с логинами для входа, осложни жизнь брутфорсерам)
- Удали из темы всё, то выводит информацию о том что это wp, и не дай джа — палит его версию.
- Размести в директориях /wp-content, /wp-content/plugins, /wp-content/themes и /wp-content/uploads пустой файл “index.php”.
- Удали из /wp-admin файлы install.php и upgrade.php.
- Удали файлы readme.html и пр. из корневой директории.
- Поставь плагин , как минимум для проверки и блокировки ещё кое-каких моментов.
- Можешь поставить плагин снапшотов, проверяющий изменения в коде файлов wp. Народ рекомендует этот — .
Не ленись, уделяй время вопросам безопасности. Это как с бэкапами — администраторы wp делятся на два типа — тех, кто уделяет этому внимание, и тех — кто уже уделяет.