Security Blog
Security Blog
Posted By Gregory

Превратите свой 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

  1. Переместите папку загрузки на один уровень вверх, из папки /wp-content/ в корень папки установки WordPress.
  2. Переименуйте папку uploads в media (или что-то в этом роде, как хотите).
  3. Переименуйте папку wp-content в content (или что-то в этом роде, как хотите).
  4. Переименуйте папку с плагинами в мод (или что-то в этом роде, как хотите).
  5. Добавьте следующие строки в начало файла 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 .

  1. Поместите файл .htaccess в папку мультимедиа (ваша новая папка для загрузки) со следующей директивой. Это предотвращает выполнение веб-сайтом загруженного вредоносного PHP-кода.
     php_flag двигатель выключен

    Примечание. Файл конфигурации Apache должен содержать директиву AllowOverride Options для вашей папки загрузки или любой из ее родительских папок, чтобы эта директива работала.

  2. Для всего каталога сайта (/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 {} +

  3. Для каталога загрузки (/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 {} +

  4. Настройте структуру постоянных ссылок в настройках WordPress, а затем измените разрешение для файла .htaccess , чтобы защитить его от записи.
     chown cerber: root /path/to/wordpress/dir/.htaccess
    chmod 644 /путь/к/wordpress/каталог/.htaccess

  5. Переместите файл wp-config.php в каталог над каталогом установки WordPress.

Шаг шестой. Укрепление веб-сайта на уровне сервера NGINX

Читайте здесь: Повышение безопасности WordPress с помощью WP Cerber и NGINX

Шаг седьмой. Защита сайта с помощью Fail2Ban

Читайте здесь: Как защитить WordPress с помощью Fail2Ban


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.