📒  Доверие и сигурност

Как да предотвратим ddos атака на Nginx

Как да предотвратим ddos атака на nginx, научете как да блокирате някои DDoS атаки с уеб сървъра Nginx с тази конфигурация на nginx за защита от ddos, това ще помогне на вашия сървър да предотврати и блокира някои често срещани DDoS атаки, с конфигурацията и укрепването на Nginx можете да блокирате някои атаки във вашия сървър.

Alexhost предлага безплатна Anti-DDoS защита срещу някои определени атаки, можете да използвате нашите VPS сървъри или специализирани сървъри, ние предлагаме безплатна Anti-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 адреси
    allow 192.168.1.0/24;
    deny all;
    # Други конфигурации на сървъра...
}

Внедряване на защитна стена за уеб приложения (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. Редовно създаване на резервни копия: Осигурете редовни резервни копия на критични данни, за да сведете до минимум въздействието на успешни атаки.

Не забравяйте, че сигурността е непрекъснат процес и е изключително важно да сте в течение на най-новите практики и заплахи за сигурността, за да защитите ефективно сървъра си от потенциални атаки.

Конфигуриране на Nginx за ddos защита:

#Дефинирайте зона за проследяване на връзките от всеки 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" винаги;
        # Блокиране на често срещани уязвими потребителски агенти
        if ($http_user_agent ~* (wget|curl) ) {
            return 403;
        }
        # Блокиране на достъпа до скрити файлове
        location ~ /\. {
            deny all;
        }
        # Блокиране на достъпа до определени типове файлове
        location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php_ {
            отказвам всичко;
            връщане на 403;
        }
        # Изготвяне на бял списък на вашия IP адрес за административен достъп
        местоположение /admin {
            allow your_admin_ip;
            deny all;
        }
        # Откажете достъп до определени директории
        location ~ /(system|vendor) {
            deny all;
            връща 403;
        }
        # Прокси предаване на заявки към вашия сървър за приложения
        местоположение / {
            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. Блокиране на уязвими потребителски агенти: Блокира заявките от често срещани уязвими User-Agents.
  7. Блокиране на скрити файлове: Блокира достъпа до скрити файлове и директории.
  8. Изготвяне на бял списък за достъп на администратора: Позволява достъп до администраторската област само от вашия IP адрес.
  9. Отказване на достъп до определени директории: Блокира достъпа до чувствителни директории като system и vendor.
  10. Прокси пропуск: Препраща заявките към вашия сървър за приложения.

Уверете се, че сте персонализирали конфигурацията в съответствие с вашите специфични изисквания, като например имена на домейни, адреси на backend сървъри и административни 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.