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. Переименуйте папку загрузок в media (или что-то в этом роде, как хотите).
  3. Переименуйте папку wp-content в content (или что-то в этом роде, как хотите).
  4. Переименуйте папку плагинов в mod (или что-то в этом роде, как хотите).
  5. Добавьте следующие строки в начало файла wp-config.php , не забудьте изменить media , content , mod на фактические значения, которые вы ранее выбрали .
     define('AUTOMATIC_UPDATER_DISABLED', true); // да, это безопасно сделать вручную
    define('DISALLOW_FILE_EDIT', правда); // мы никогда не позволяем никому прикасаться к вашим файлам
    define('DISALLOW_FILE_MODS', правда); // да, это безопасно сделать вручную
    define('FS_METHOD', 'прямой'); // без FTP, конечно
    define('WP_HTTP_BLOCK_EXTERNAL', правда);
    define('ЗАГРУЗКИ', ' медиа '); // мы переименовали загрузки и переместили их на уровень выше
    define('WP_CONTENT_DIR', '/путь/к/wordpress/dir/ content '); // нет имени хоста, нет косой черты в конце
    define('WP_CONTENT_URL', ' http://example.com/content ');
    define('WP_PLUGIN_DIR', '/путь/к/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'); // меняем его на что-то другое

Шаг четвертый. Установите плагин безопасности сразу после установки 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) измените владельца и разрешения для всех файлов. Для этого выполните следующие команды в оболочке.
     найти /путь/к/wordpress/dir -exec chown cerber:root {} +
    найти /путь/к/wordpress/dir -type d -exec chmod 755 {} +
    найти /путь/к/wordpress/dir -type f -exec chmod 644 {} +

  3. Для каталога загрузок (/path/to/wordpress/dir/ media ) нам необходимо установить специальные разрешения. Давайте сделаем это, используя команды exec в оболочке.
     найти /путь/к/wordpress/dir/ media -exec chown cerber:apache {} +
    найти /путь/к/wordpress/dir/ media -type d -exec chmod 775 {} +
    найти /путь/к/wordpress/dir/ media -type f -exec chmod 664 {} +

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