📒  Доверие и безопасность

Как предотвратить ddos-атаку на Nginx

Как предотвратить ddos атаку на nginx, узнайте, как блокировать некоторые DDoS атаки с Nginx веб-сервера с этой конфигурации nginx ddos защиты, это поможет вашему серверу предотвратить и блокировать некоторые общие DDoS атаки, с Nginx конфигурации и закалки вы можете блокировать некоторые атаки на вашем сервере.

Alexhost предлагает бесплатную защиту от DDoS-атак, вы можете использовать наши VPS-серверы или выделенные серверы, мы предлагаем бесплатную защиту от DDoS-атак, однако возможности смягчения, методы, фильтрация будут отличаться в зависимости от выбранного вами местоположения.

Требования:
Nginx (необходимо, чтобы Nginx был установлен на вашем текущем сервере)
Некоторые знания (необходимо знать, как использовать основные команды Linux и как получить доступ к некоторым файлам Nginx, ожидается наличие ноу-хау)
VPS-сервер или выделенный сервер (вы можете использовать виртуальную машину на вашем локальном хосте)
DDoS-защита (от вашего хостинг-провайдера, чтобы иметь возможность противостоять более сложным DDoS-атакам)
Linux (любой дистрибутив, на который можно установить Nginx)
Nginx (вам может понадобиться прочитать их документацию по Nginx, чтобы протестировать и проверить, все ли еще надежно)

Ограничения: Этот учебник не является “пуленепробиваемым” средством защиты от всех DDoS-атак, он, вероятно, ограничит атаку, блокируя определенные типы атак, и поможет вашему серверу быть онлайн. Существуют некоторые ограничения против некоторых DDoS-атак, вам нужно, чтобы ваш хостинг-провайдер предлагал какую-то DDoS-защиту, чтобы блокировать и предотвращать, эта конфигурация не может защитить от всех атак на ваш сервер. Эта конфигурация предотвращает и блокирует некоторые атаки, но она не сможет блокировать все атаки без DDoS-защиты от вашего хостинга.

Внимание: Alexhost не рекомендует вам использовать эту конфигурацию на вашем рабочем сервере, мы рекомендуем протестировать ее, прежде чем что-либо делать. Alexhost не несет ответственности за любые проблемы, которые могут возникнуть или нет. Придерживайтесь хорошей безопасности сервера, перед тем как что-то делать, создайте резервную копию на случай, если вам понадобится восстановление. Пожалуйста, прочитайте документацию Nginx по защите от DDoS, чтобы понять, как она работает.

Предотвращение DDoS-атак с помощью усиления Nginx

Настройка Nginx для защиты от DDoS-атак и укрепление против распространенных уровней атак включает в себя реализацию различных стратегий для смягчения и предотвращения атак. Вот руководство по настройке Nginx для повышения безопасности и изучения Как предотвратить ddos-атаку на nginx с помощью усиления вашего веб-сервера:

  1. Обновите Nginx: Убедитесь, что вы используете последнюю стабильную версию Nginx, чтобы воспользоваться последними исправлениями и улучшениями безопасности.
  2. Ограничьте количество подключений: Используйте модуль limit_conn, чтобы ограничить количество соединений с одного IP-адреса. Это поможет предотвратить DDoS-атаки, чтобы не перегружать ваш сервер слишком большим количеством одновременных соединений.

http {
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;

    сервер {
        limit_req zone=req_limit_per_ip burst=5;
        # Другие конфигурации сервера...
    }
}

Белые/черные списки IP-адресов: Используйте директивы allow и deny для составления белого списка доверенных IP-адресов и блокирования вредоносных.
nginx

http {
    # Белый список доверенных IP-адресов
    разрешить 192.168.1.0/24;
    запретить все;
    # Другие конфигурации сервера...
}

Внедрите брандмауэр веб-приложений (WAF): Используйте сторонние модули, такие как ModSecurity, с Nginx для обнаружения и блокирования вредоносного HTTP-трафика.

Включите HTTPS: шифруйте связь между клиентами и сервером с помощью HTTPS, чтобы предотвратить перехват данных и атаки “человек посередине”.

Отключить неиспользуемые модули: Отключите ненужные модули Nginx, чтобы уменьшить площадь атаки и повысить производительность.
nginx

./configure --without-http_autoindex_module --without-http_ssi_module
  1. Настройка конфигурации Nginx: Оптимизируйте параметры конфигурации Nginx, такие как рабочие процессы, рабочие соединения и таймауты, исходя из аппаратных возможностей вашего сервера и ожидаемого трафика.
  2. Мониторинг и ведение журналов: Регулярно отслеживайте журналы сервера на предмет подозрительной активности и настройте системы оповещения, чтобы уведомлять администраторов о потенциальных атаках.
  3. Внедрение служб защиты от DDOS: Рассмотрите возможность использования специализированных сервисов или устройств защиты от DDoS перед Nginx, таких как Cloudflare, AWS Shield или Akamai.
  4. Регулярное резервное копирование: Обеспечьте регулярное резервное копирование критически важных данных, чтобы свести к минимуму последствия успешных атак.

Помните, что безопасность – это постоянный процесс, и очень важно быть в курсе последних практик и угроз безопасности, чтобы эффективно защитить свой сервер от потенциальных атак.

Настройка ddos-защиты Nginx:

#Определите зону для отслеживания соединений с каждого IP

http {
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
    # Определите зону для отслеживания запросов с каждого IP
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
    сервер {
        listen 80;
        server_name example.com;
        # Ограничение скорости запросов
        limit_req zone=req_limit_per_ip burst=20;
        # Ограничение максимального количества соединений с одного IP
        limit_conn conn_limit_per_ip 20;
        # Запрещаем запросы с большим телом запроса для защиты от некоторых типов атак
        client_body_buffer_size 1k;
        client_header_buffer_size 1k;
        client_max_body_size 1k;
        large_client_header_buffers 2 1k;
        # Включите сжатие Gzip для экономии полосы пропускания
        gzip on;
        gzip_comp_level 5;
        gzip_min_length 256;
        gzip_proxied any;
        gzip_vary on;
        # Добавьте заголовки безопасности для повышения уровня безопасности
        add_header X-Content-Type-Options "nosniff";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Frame-Options "SAMEORIGIN";
        add_header Referrer-Policy "same-origin";
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
        # Блокируем общие уязвимые агенты пользователей
        if ($http_user_agent ~* (wget|curl) ) {
            return 403;
        }
        # Блокируем доступ к скрытым файлам
        location ~ /\. {
            запретить все;
        }
        # Блокировать доступ к определенным типам файлов
        location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php_ {
            запретить все;
            return 403;
        }
        # Внесите свой IP в белый список для административного доступа
        location /admin {
            allow your_admin_ip;
            запретить все;
        }
        # Запретите доступ к определенным каталогам
        location ~ /(system|vendor) {
            запретить все;
            return 403;
        }
        # Передавайте запросы через прокси-сервер на ваш сервер приложений
        location / {
            proxy_pass http://your_backend_server;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

Эта конфигурация делает следующее:

  1. Ограничение скорости: Ограничивает количество запросов с каждого IP-адреса до 10 запросов в секунду с всплеском в 20 запросов.
  2. Ограничение соединений: Ограничивает максимальное количество соединений с каждого IP-адреса до 20.
  3. Ограничение размера тела запроса: Ограничивает размер тел запросов для защиты от атак, посылающих большие тела запросов.
  4. Gzip Compression: Включает сжатие gzip для экономии пропускной способности.
  5. Заголовки безопасности: Добавляет заголовки безопасности для повышения уровня безопасности.
  6. Блокировка уязвимых пользователей-агентов: Блокирует запросы от распространенных уязвимых User-Agents.
  7. Блокировка скрытых файлов: Блокирует доступ к скрытым файлам и каталогам.
  8. Белые списки доступа администратора: Разрешает доступ к области администратора только с вашего IP-адреса.
  9. Запрет доступа к определенным каталогам: Блокирует доступ к таким конфиденциальным каталогам, как system и vendor.
  10. Прокси-проход: Перенаправляет запросы на ваш сервер приложений.

Обязательно настройте конфигурацию в соответствии с вашими специфическими требованиями, такими как доменные имена, адреса внутренних серверов и административные IP-адреса. Кроме того, регулярно следите за журналами сервера и при необходимости корректируйте конфигурацию, чтобы адаптироваться к меняющимся угрозам.

Приведенная конфигурация предназначена для добавления в файл nginx.conf или включения в отдельные файлы конфигурации. Вот пошаговое руководство по добавлению конфигурации:

  1. Найдите файлnginx.conf: В зависимости от установки Nginx, файл nginx.conf может находиться в разных каталогах. Обычно это /etc/nginx/nginx.conf, /usr/local/nginx/conf/nginx.conf или /etc/nginx/sites-available/default.
  2. Откройте файлnginx.conf: Вы можете открыть файл с помощью текстового редактора или текстового редактора командной строки, например nano, vim или emacs.
  3. Добавьте конфигурацию в блокhttp: Внутри блока http, который определяет настройки HTTP-сервера, вы добавите предоставленную конфигурацию. Обычно блок http находится в верхней части файла nginx.conf.
  4. Вставьте предоставленную конфигурацию: Вставьте всю предоставленную ранее конфигурацию в блок http. Убедитесь, что вы заменили значения placeholder, такие как example.com, your_admin_ip и your_backend_server, на реальные значения.
  5. Сохраните и выйдите из файла: После добавления конфигурации сохраните файл nginx.conf и выйдите из текстового редактора.
  6. Проверьте конфигурацию Nginx: Перед перезапуском Nginx рекомендуется проверить конфигурацию на наличие синтаксических ошибок.
  7. Это можно сделать, выполнив следующую команду:
    nginx -t

Если синтаксических ошибок нет, вы увидите сообщение об успешной проверке файла конфигурации.

Перезапустите Nginx: Наконец, перезапустите Nginx, чтобы применить изменения. Это можно сделать с помощью следующей команды:
sudo service nginx restart

  1. Если вы не используете систему с systemd, вы можете использовать другие команды для перезапуска Nginx.

Следуя этим шагам, вы добавите предоставленную конфигурацию к вашему серверу Nginx, повысив его безопасность с помощью защиты от DDoS и других мер безопасности. Это руководство поможет вампредотвратить ddos-атаку на nginx с помощью конфигурации Nginx.