Метка: Безопасность

  • Основные настройки PHP-FPM для веб-сервера

    Правильная конфигурация PHP-FPM критически важна для безопасности и стабильности работы веб-приложений. Разберём ключевые параметры из файла конфигурации пула (обычно /etc/php/8.x/fpm/pool.d/www.conf).

    1. Пользователь и группа (user/group)

    user = www-data
    group = www-data
    • Назначение: Определяет, от какого пользователя будут выполняться PHP-скрипты
    • Рекомендации:
      • Всегда используйте отдельного пользователя (не root!)
      • www-data — стандартный пользователь для веб-серверов в Ubuntu/Debian
      • Для изоляции разных сайтов создавайте отдельных пользователей
    • Безопасность: Ограничивает права PHP-скриптов в системе

    2. Группа сокета (listen.group)

    listen.group = www-data
    • Назначение: Указывает группу, которой доступен Unix-сокет PHP-FPM
    • Важно: Веб-сервер Nginx должен быть в этой же группе
    • Проверка:
      ps aux | grep nginx | grep -v grep
      groups www-data

    3. Права доступа к сокету (listen.mode)

    listen.mode = 0660
    ПраваВладелецГруппаОстальные
    0660rw-rw-
    • Безопасность: Запрещает доступ всем, кроме владельца и группы
    • Альтернативы:
      • 0666 — небезопасно (доступ всем)
      • 0600 — только владельцу (могут быть проблемы с веб-сервером)

    4. Дополнительные важные настройки

    ПараметрРекомендуемое значениеОписание
    pmondemandРежим управления процессами (для серверов с переменной нагрузкой)
    pm.max_children50Максимальное число процессов (зависит от памяти сервера)
    request_terminate_timeout30sМаксимальное время выполнения скрипта
    security.limit_extensions.phpОграничивает выполнение только PHP-файлов

    5. Проверка и применение настроек

    # Проверка синтаксиса
    sudo php-fpm8.x -t
    
    # Перезагрузка PHP-FPM
    sudo systemctl restart php8.x-fpm
    
    # Проверка прав сокета
    ls -la /run/php/php8.x-fpm.sock

    Вывод

    • Используйте отдельного пользователя/группу для PHP-FPM
    • Ограничивайте права доступа к сокету (0660 — оптимально)
    • Регулярно проверяйте логи PHP-FPM на ошибки
    • Настройки зависят от нагрузки и специфики приложения

    Эти настройки обеспечат баланс между безопасностью и производительностью вашего веб-сервера.

  • Как настроить SSL-сертификат для WordPress с помощью Certbot

    Безопасность сайта на WordPress критически важна. В этом руководстве мы настроим бесплатный SSL-сертификат от Let’s Encrypt с помощью Certbot для защиты данных пользователей и улучшения SEO.

    1. Подготовка сервера

    2. Установка Certbot

    sudo apt update
    sudo apt install certbot python3-certbot-nginx

    3. Получение SSL-сертификата

    sudo certbot --nginx -d ваш-домен.ru -d www.ваш-домен.ru

    Certbot автоматически:

    • Проверит владение доменом
    • Получит сертификат
    • Настроит веб-сервер
    • Создаст автоматическое продление

    4. Настройка WordPress

    • В файле wp-config.php добавьте:
      define('FORCE_SSL_ADMIN', true);
      define('FORCE_SSL', true);
    • В админке: Настройки → Общие → Измените URL сайта на https://

    5. Проверка и обслуживание

    # Проверка срока действия
    sudo certbot certificates
    
    # Тест автоматического продления
    sudo certbot renew --dry-run
    
    # Принудительное обновление
    sudo certbot renew --force-renewal

    6. Автоматическое продление сертификата

    • Обычно автоматическое продление настраивается, после создание сертификатов. Проверим это.
    • Запустите certbot renew --dry-run
    • Если в результате, вы видете Congratulations, all simulated renewals succeeded, значит автоматическое продление настроено.
    • Если по какой-то причине это не так, можно добавить руками запуск команды обновления через cron.
      0 12 * * * /usr/bin/certbot renew --quiet

    Заключение

    Всего за 10 минут вы:

    • Защитили передачу данных
    • Улучшили позиции в поисковиках
    • Избежали предупреждений «Небезопасный сайт»
    • Настроили автоматическое обновление сертификата