Ръководство за сигурност и закаляване на уеб сървъра Nginx

Най-добрите практики за сигурност на Nginx.


Nginx е най-бързо развиващият се уеб сървър в индустрията и в момента заема позиция номер две по пазарен дял.

Първоначално беше пусната през 2004 г. и оттогава тя спечели отлична репутация и се използва в най-големите милиони натоварени сайтове.

Има причина за това – Nginx е пламва бързо.

В тази статия ще говоря за някои от основните ръководства за осигуряване на Nginx за производствена среда. Така че нека започнем.

SSL / TLS

Внедрете SSL сертификат

Първата стъпка в уеб сигурността е да се реализира SSL, така че да имате достъп до уеб приложения с https и да добавите слой за криптиране в комуникацията.

  • Използвайте OpenSSL, за да генерирате CSR с 2048 бит и sha-2

openssl req -nodes -new -sha256 -newkey rsa: 2048 -keyout bestflare.key -out bestflare.csr

  • Горната команда ще генерира CSR и ключови файлове при текуща работа директно. Не забравяйте да промените името на файла .csr и .key.

Вземете CSR подписан от сертифициращ орган и след като имате подписания сертификат, можете да ги внедрите в Nginx, както е посочено по-долу.

  • Влезте в Nginx сървъра
  • Отидете в папката conf, където имате файл ssl.conf.

Забележка: При инсталиране по подразбиране в Linux, този файл ще имате под /etc/nginx/conf.d.

  • Редактирайте файла и добавете следното, което ще даде възможност на Nginx да слуша на 443 порт

сървър {
слушайте 443 ssl;
име на сървър bestflare.com;
ssl на;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
}

Забележка: не забравяйте да промените пътя на сертификата и ключовите файлове.

  • Запазете конфигурацията и рестартирайте Nginx. SSL сертификат се реализира успешно.

bestflare-SSL-серт

SSL / TLS оптимизация

Това, че SSL не означава, че е напълно защитен и ето защо като експерт по уеб сигурност, трябва да приложите конфигурация, за да защитите уеб сървъра.

Като начало бих препоръчал да стартирате SSL сканиране срещу уебсайта, за да намери резултата и съществената уязвимост.

SSL-лаборатории рейтинг-с

Така че сегашната SSL лаборатория е “° С” а целта е да се направи „А.“

Деактивирайте слабите SSL / TLS протоколи

SSL 3, TLS 1.0 и TLS 1.1 е уязвим и ще позволим само силен протокол TLS 1.2.

  • Редактирайте ssl.conf файла и добавете по-долу в сървърния блок

ssl_protocols TLSv1.2;

  • Запазете ssl.conf файла и рестартирайте Nginx

Деактивирайте слабите шифрови пакети

Слабите пакети от шифри могат да доведат до уязвимост като лоджа и затова трябва да разрешаваме само силни шифри.

  • Добавете следното към сървърния блок във файла ssl.conf

ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + aRSA + SHA384 EECDH + aRSA + SHA256 EECDH + aRSA + RC4 EECDH EDH + aRSA HIGH! ! MD5! EXP! PSK! SRP! DSS";

  • Запазете файла и рестартирайте Nginx

Инсталирайте верижен сертификат

Липсата на верижен сертификат също влияе върху общата оценка и това може да покаже грешка при сърфиране в модерен браузър като Chrome. Трябва да получите сертификат за верига от органа. Най-вече ще намерите на техния уебсайт или само Google го.

  • Добавете съдържанието на верига на сертификата в сертификата на уебсайта като по-долу. В моя пример това ще бъде /opt/cert/bestflare.pem

серт верига

  • Запазете файла и рестартирайте Nginx

Сигурен Diffie-Hellman за TLS

Дифи-Хелман е по-малко сигурен, отколкото се смяташе. Една от най-добрите практики, добавени напоследък в списъка, е осигуряването на Diffie-hellman. Генерирането на уникална DH GROUP и добавяне на ssl_dhparam във ssl.conf файл прави това.

  • Генерирайте уникална DH група с помощта на OpenSSL

openssl dhparam -out dhparams.pem 4096

  • Това ще отнеме няколко минути и ще генерира файл dhparams.pem в текуща работна директория
  • Копирайте dhparams.pem в папката cert
  • Променете ssl.conf и добавете следното в сървърния блок

ssl_dhparam /opt/cert/dhparams.pem;

  • Запазете файла и рестартирайте Nginx

Това трябва да е достатъчно за оптимизация на SSL / TLS и нека отново тестваме URL адреса, за да видим оценката.

ssllabs-а-рейтинг

Уо хо! Сега можете да видите, че е “А” оценка от SSLLabs. Много добре!

Ето пълна ssl.conf

# HTTPS сървър конфигурация
сървър {
слушайте 443 ssl;
име на сървър bestflare.com;
ssl на;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers на;
ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + aRSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + aRSA + SHA384 EECDH + aRSA + SHA256 EECDH + aRSA + RC4 EECDH EDH + aRSA HIGH! ! MD5! EXP! PSK! SRP! DSS";
ssl_dhparam /opt/cert/dhparams.pem;
}

Изтичане на информация

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

Ако работите в среда за съответствие на PCI, това се счита за уязвимост на изтичане на информация и трябва да коригира елемента.

Трябва да изключите server_tokens, за да деактивирате изтичането на информация. Обясних това в предишната си статия. Премахнете версията от банера на сървъра в Nginx

Сигурност на уеб приложенията

Конфигурацията по подразбиране Nginx не е перфектна и може да има много уязвимости, поради което ги втвърдяваме, за да я направим сигурна.

Деактивирайте нежеланите HTTP методи

През повечето време се нуждаете само от ПОЛУЧАВАНЕ, ГЛАВА & POST HTTP заявка във вашето уеб приложение. Разрешаването на TRACE или DELETE е рисковано, тъй като може да позволи атака за проследяване на различни сайтове и потенциално да позволи на хакер да открадне информацията за бисквитките.

  • Променете nginx.conf и добавете следното под блока на сървъра

if ($ request_method! ~ ^ (GET | HEAD | POST) $)
{
връщане 405;
}

Запазете файла и рестартирайте Nginx. Това ще покаже 405 Не е позволено, ако някой се опитва да използва TRACE, DELETE, PUT, OPTIONS.

Chandans-iMac: ~ chandan $ telnet bestflare.com 80
Пробвам 128.199.100.162…
Свързани с bestflare.com.
Героят за бягство е ‘^]’.
TRACE / HTTP / 1.1
Водещ: тестване
HTTP / 1.1 405 Не е позволено
Сървър: nginx
Дата: Sat, 11 Jul 2015 06:04:34 GMT
Тип на съдържанието: текст / html
Дължина на съдържанието: 166
Връзка: затвори

Clickjacking Attack

Можете да инжектирате X-FRAME-OPTIONS в HTTP Header, за да предотвратите атака с щракване.

Това се постига чрез добавяне по-долу във файл nginx.conf

Опции за X-Frame на add_header "SAMEORIGIN";

По-горе заглавката ще инструктира браузър да зарежда ресурсите САМО от същия произход.

X-XSS защита

Инжектирайте HTTP заглавието с X-XSS защита, за да смекчите скриптиращата атака на Cross-Site.

  • Променете файла nginx.conf, за да добавите следното

add_header X-XSS-защита "1; режим = блок";

  • Запазете конфигурационния файл и рестартирайте Nginx. Можете да използвате Тест на заглавки инструмент за проверка след внедряване.

Може да се интересувате и от прилагането на препоръчани от OWASP защитени заглавки, които са обяснени тук.

Внедрете модула за сигурност WAF

Добавете допълнителен слой сигурност, като внедрите ModSecurity на защитната стена на уеб приложението с основния правилник на OWASP.

Друга възможност е, ако смятате да използвате облачна защита като SUCURI пред Nginx сървъра.

Поддържайте актуализация на Nginx

Не на последно място, трябва да поддържате актуализацията на Nginx, тъй като има много подобрения на производителността, корекции на сигурността и нови функции се добавят..

Надявам се това да ви помогне да запазите вашия Nginx.

На следващо място може да ви е интересно да се научите да изградете Nginx за висока производителност от нулата.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map