Превратите свой WordPress в Форт-Нокс.
Как превратить WordPress в защищенную крепость, подобную Форт-Ноксу
English version: Turn your WordPress into Fort Knox
В этой статье предполагается, что мы хотим получить защищенный до предела веб-сайт на базе WordPress. Необязательно выполнять все описанные ниже шаги слово в слово, пункт за пунктом. Но я рекомендую это делать, если вы хотите создать свой собственный «Форт-Нокс».
Некоторые из следующих шагов могут вызвать проблемы совместимости с некоторыми странными плагинами, которые пытаются изменять файлы непосредственно в папках WordPress. Я рекомендую игнорировать любые подобные плагины, поскольку их использование может привести к множеству проблем и угроз безопасности как сейчас, так и в будущем, когда хакеры изучат уязвимости в плагинах или теме, установленных на вашем сайте. Я создал эту статью в надежде, что она будет полезна, но без каких-либо гарантий.
Примечание: данная статья не применима, если вы используете общий хостинг. Вам необходимо иметь как минимум сайт, размещенный на VPS.
Требования: root-доступ к серверу Linux, на котором размещен ваш веб-сайт. Если у вас нет доступа к командной оболочке с правами root, вы не сможете создать по-настоящему защищенный веб-сайт. Нет ни одного способа или плагина, который мог бы защитить WordPress и файлы в его каталогах на уровне PRO. Все плагины безопасности имеют тот же уровень привилегий (прав доступа), что и хакеры и боты. Без исключений. Если какой-либо плагин безопасности внес изменения в файлы вашего веб-сайта для их защиты, любой хакер или вредоносный код может отменить эти изменения или снять защиту.
Вот несколько важных моментов, касающихся моего подхода.
- Все файлы с кодом (PHP-код) и все файлы .htaccess должны быть защищены от записи. Исключений нет.
- Нам необходимо изменить все параметры по умолчанию (папка, cookie, путь входа в систему, любые другие ориентиры) на другие значения.
- Нельзя использовать плагины или темы, которые взаимодействуют с PHP-файлами или файлами .htaccess в папках WordPress и пытаются их изменять.
Шаг первый. Установка WordPress.
Не используйте префикс wp_ по умолчанию для таблиц базы данных. Вместо него используйте пару-тройку буквенных символов. Некоторые атаки, специфичные для WordPress, и злоумышленники предполагают, что префикс таблицы — wp_ . Изменение префикса помогает блокировать некоторые атаки SQL-инъекций.
Шаг второй. Укрепление безопасности веб-сайта на уровне WordPress.
- Переместите папку uploads на один уровень выше, из папки /wp-content/ в корневую папку вашей установки WordPress.
- Переименуйте папку uploads в media (или как-нибудь ещё, на ваше усмотрение).
- Переименуйте папку wp-content в content (или как-нибудь ещё, на ваше усмотрение).
- Переименуйте папку plugins в mod (или как-нибудь ещё, на ваше усмотрение).
- Добавьте следующие строки в начало файла wp-config.php , не забудьте изменить значения media , content и mod на те, которые вы выбрали ранее .
define('AUTOMATIC_UPDATER_DISABLED', true ); // Да, это безопасно сделать вручную
define('DISALLOW_FILE_EDIT', true ); // Мы никогда никому не позволяем прикасаться к вашим файлам
define('DISALLOW_FILE_MODS', true ); // Да, это безопасно сделать вручную
define('FS_METHOD', 'direct'); // Разумеется, без FTP
define('WP_HTTP_BLOCK_EXTERNAL', true );
define('UPLOADS', ' media ' ); // Мы переименовали uploads и переместили его на уровень выше
define('WP_CONTENT_DIR', '/path/to/wordpress/dir/ content '); // без имени хоста, без завершающей косой черты
define('WP_CONTENT_URL', ' http://example.com/content ');
define('WP_PLUGIN_DIR', '/path/to/wordpress/dir/ content / mod '); // без имени хоста, без завершающей косой черты
define('WP_PLUGIN_URL', 'http://example.com/ content / mod ');
ini_set('display_errors',0); // Отключить отображение ошибок PHP на фронтенде
Шаг третий. Измените имя файлов cookie по умолчанию.
Добавьте эти строки в начало файла wp-config.php.
define('USER_COOKIE', 'my_user_cookie' ); // измените на что-нибудь другое
define('PASS_COOKIE', 'my_pass_cookie' ); // измените на что-нибудь другое
define('AUTH_COOKIE', 'my_auth_cookie' ); // измените на что-нибудь другое
define('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // измените на что-нибудь другое
define('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // измените на что-нибудь другое
define('TEST_COOKIE', 'my_test_cookie' ); // изменить на что-нибудь другое
Шаг 4. Сразу после установки WordPress установите плагин безопасности.
Защитите свою страницу входа с помощью WP Cerber Security . Даже при соблюдении вышеуказанных мер защиты хакеры будут пытаться использовать атаки методом перебора (попытки входа в систему), чтобы взломать ваш сайт WordPress. Скройте и закройте эту дверь с помощью WP Cerber.
Пятый шаг. Укрепление безопасности веб-сайта на уровне сервера.
На этом шаге я предполагаю, что вы используете сервер с Apache в качестве HTTP-сервера. Нам нужно изменить владельца всех файлов WordPress, включая плагины и темы. По умолчанию это пользователь apache . Нам нужно изменить его на другого пользователя, которого вы создали для этой цели ранее. Допустим, это пользователь cerber .
- Поместите файл .htaccess в папку media (вашу новую папку uploads) и добавьте в него следующую директиву. Это предотвратит выполнение загруженного вредоносного PHP-кода на веб-сайте.
php_flag engine off
Примечание: Для корректной работы этой директивы файл конфигурации Apache должен содержать директиву
AllowOverride Optionsдля папки uploads или любой из ее родительских папок. - Для всего каталога веб-сайта (/path/to/wordpress/dir) измените владельца и права доступа ко всем файлам. Для этого выполните следующие команды в командной оболочке.
find /path/to/wordpress/dir -exec chown cerber:root {} +
find /path/to/wordpress/dir -type d -exec chmod 755 {} +
find /path/to/wordpress/dir -type f -exec chmod 644 {} + - Для каталога загрузок (/path/to/wordpress/dir/ media ) нам необходимо установить специальные права доступа. Сделаем это с помощью команд exec в командной оболочке.
find /path/to/wordpress/dir/ media -exec chown cerber:apache {} +
find /path/to/wordpress/dir/ media -type d -exec chmod 775 {} +
find /path/to/wordpress/dir/ media -type f -exec chmod 664 {} + - Настройте структуру постоянных ссылок в настройках WordPress, а затем измените права доступа к файлу .htaccess , чтобы защитить его от записи.
chown cerber:root /path/to/wordpress/dir/.htaccess
chmod 644 /path/to/wordpress/dir/.htaccess - Переместите файл wp-config.php в директорию, расположенную выше директории установки WordPress.
Шаг шестой. Усиление защиты веб-сайта на уровне сервера NGINX.
Читайте здесь: Укрепление безопасности WordPress с помощью WP Cerber и NGINX
Шаг седьмой. Усиление защиты веб-сайта с помощью Fail2Ban.
Читайте здесь: Как защитить WordPress с помощью Fail2Ban