📒  Довіра та безпека

Як запобігти 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;

    server { { ліміт_запитів
        limit_req zone=req_limit_per_ip burst=5;
        # Інші конфігурації серверів...
    }
}

Білий/Чорний список IP-адрес: Використовуйте директиви allow та deny для внесення довірених IP-адрес до білого списку та блокування шкідливих.
nginx

http {
    # Додати до білого списку довірені IP-адреси
    allow 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;
    server {
        listen 80;
        ім'я_сервера 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 будь-який;
        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" завжди;
        # Блокуємо поширені вразливі User-Agents
        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 {
            дозволити ваш_admin_ip;
            заборонити всім;
        }
        # Заборонити доступ до певних каталогів
        location ~ /(system|vendor) {
            deny all;
            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: Вмикає стиснення gzip для економії смуги пропускання.
  5. Заголовки безпеки: Додавання заголовків безпеки для підвищення безпеки.
  6. Блокування вразливих агентів користувачів: Блокувати запити від поширених вразливих агентів користувачів.
  7. Блокування прихованих файлів: Блокування доступу до прихованих файлів і каталогів.
  8. Внесення до білого списку доступу адміністратора: Дозволяє доступ до адмінки лише з вашої IP-адреси.
  9. Заборона доступу до певних каталогів: Блокує доступ до конфіденційних каталогів, таких як система та постачальник.
  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. Переконайтеся, що ви замінили значення-заповнювачі, такі як 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.