Превратите свой 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
- Переместите папку загрузки на один уровень вверх, из папки /wp-content/ в корень папки установки WordPress.
- Переименуйте папку uploads в media (или что-то в этом роде, как хотите).
- Переименуйте папку wp-content в content (или что-то в этом роде, как хотите).
- Переименуйте папку с плагинами в мод (или что-то в этом роде, как хотите).
- Добавьте следующие строки в начало файла wp-config.php , не забудьте изменить media , content , mod на фактические значения, которые вы выбрали ранее .
определить('AUTOMATIC_UPDATER_DISABLED', true ); // да, это безопасно сделать вручную
определить('DISALLOW_FILE_EDIT', правда); // мы никому не позволяем трогать ваши файлы
определить('DISALLOW_FILE_MODS', правда); // да, это безопасно сделать вручную
определить('FS_METHOD', 'прямой'); // нет FTP, конечно
определить('WP_HTTP_BLOCK_EXTERNAL', правда);
определить('ЗАГРУЗКА', ' медиа '); // мы переименовали загрузки и переместили их на уровень выше
определить('WP_CONTENT_DIR', '/path/to/wordpress/dir/ content '); // без имени хоста, без слэша в конце
определить(' WP_CONTENT_URL ', 'http://example.com/content');
определить('WP_PLUGIN_DIR', '/path/to/wordpress/dir/ content / mod '); // без имени хоста, без слэша в конце
определить(' WP_PLUGIN_URL ', ' http://example.com/content/mod ');
ini_set('display_errors',0); // отключаем отображение ошибок PHP во внешнем интерфейсе
Шаг третий. Изменить имя файла cookie по умолчанию.
Добавьте эти строки в начало файла wp-config.php
определить('USER_COOKIE', 'my_user_cookie'); // изменить его на что-то другое
определить('PASS_COOKIE', 'my_pass_cookie'); // изменить его на что-то другое
определить('AUTH_COOKIE', 'my_auth_cookie'); // изменить его на что-то другое
определить('SECURE_AUTH_COOKIE', 'my_sec_cookie'); // изменить его на что-то другое
определить('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // изменить его на что-то другое
определить('TEST_COOKIE', 'my_test_cookie'); // изменить его на что-то другое
Шаг четвертый. Установите плагин безопасности сразу после установки WordPress.
Защитите свою страницу входа с помощью WP Cerber Security . Даже с этими шагами защиты, описанными выше, хакеры будут пытаться применять атаки грубой силы (попытки входа в систему), чтобы взломать дверь на вашем веб-сайте WordPress. Скройте и закройте эту дверь с помощью WP Cerber.
Шаг пятый. Усиление сайта на уровне сервера.
На этом шаге я предполагаю, что вы используете сервер с Apache в качестве http-сервера. Нам нужно сменить владельца всех файлов WordPress, включая плагины и темы. По умолчанию этим пользователем является apache . Нам нужно изменить его на другого пользователя, которого вы создали для этой цели ранее. Допустим, этот пользователь cerber .
- Поместите файл .htaccess в папку мультимедиа (ваша новая папка для загрузки) со следующей директивой. Это предотвращает выполнение веб-сайтом загруженного вредоносного PHP-кода.
php_flag двигатель выключен
Примечание. Файл конфигурации Apache должен содержать директиву
AllowOverride Options
для вашей папки загрузки или любой из ее родительских папок, чтобы эта директива работала. - Для всего каталога сайта (/path/to/wordpress/dir) измените владельца и разрешения для всех файлов. Для этого выполните следующие команды в оболочке.
найти /path/to/wordpress/dir -exec chown cerber:root {} +
найти /path/to/wordpress/dir -type d -exec chmod 755 {} +
найти /path/to/wordpress/dir -type f -exec chmod 644 {} + - Для каталога загрузки (/path/to/wordpress/dir/ media ) нам нужно установить специальные разрешения. Давайте сделаем это, используя команды exec в оболочке.
найти /path/to/wordpress/dir/ media -exec chown cerber:apache {} +
найти /path/to/wordpress/dir/ media -type d -exec chmod 775 {} +
найти /path/to/wordpress/dir/ media -type f -exec chmod 664 {} + - Настройте структуру постоянных ссылок в настройках WordPress, а затем измените разрешение для файла .htaccess , чтобы защитить его от записи.
chown cerber: root /path/to/wordpress/dir/.htaccess
chmod 644 /путь/к/wordpress/каталог/.htaccess - Переместите файл wp-config.php в каталог над каталогом установки WordPress.
Шаг шестой. Укрепление веб-сайта на уровне сервера NGINX
Читайте здесь: Повышение безопасности WordPress с помощью WP Cerber и NGINX
Шаг седьмой. Защита сайта с помощью Fail2Ban
Читайте здесь: Как защитить WordPress с помощью Fail2Ban