En

Настройка сервера Nginx с учетом безопасности, на проекте CRYSTAL v1.0

Данная инструкция подразумевает, что у вас уже установлен SSL-сертификат.

1. Описание правил безопасности

server_tokens off; - Отключает отображение версии Nginx в заголовках ответа. Это предотвращает утечку информации о сервере, усложняя работу для потенциальных атакующих.

add_header X-XSS-Protection "1; mode=block" always; - Включает защиту от XSS-атак (встроенную в браузеры). При попытке внедрить вредоносный JavaScript, браузер блокирует выполнение страницы.

add_header X-Content-Type-Options "nosniff" always; - Запрещает браузеру "угадывать" тип содержимого, если заголовок Content-Type отсутствует или неправильный. Это помогает избежать MIME-атак.

add_header Referrer-Policy "no-referrer-when-downgrade" always; - Управляет тем, какие данные передаются в заголовке Referer. В этом случае реферер отправляется только при переходе с HTTPS на HTTPS, но не с HTTPS на HTTP.

add_header Permissions-Policy "interest-cohort=()" always; - Отключает FLoC (Federated Learning of Cohorts) — спорную технологию Google для таргетинга рекламы. Защищает конфиденциальность пользователя.

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - Принуждает браузер использовать HTTPS для всех последующих подключений на протяжении 1 года. Также включает поддомены.

add_header X-Frame-Options "DENY"; - Запрещает загрузку сайта внутри фреймов/айфреймов, предотвращая атаки clickjacking.

add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval' blob: https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/; frame-ancestors 'self' https://www.google.com/ https://www.gstatic.com/; img-src 'self' data: blob:; style-src 'self'; script-src 'self' blob: https://www.google.com/ https://www.gstatic.com/;" always;

- Разрешает загрузку ресурсов только с текущего домена ('self'), Google ReCAPTCHA и blob: URL.

- Блокирует загрузку внешних скриптов и стилей (если они, не указаны явно).

- Запрещает загрузку сайта во фрейме с чужого домена, кроме google.com.

- Разрешает изображения только из self, data: и blob:.

- CSP помогает предотвратить XSS, загрузку вредоносных ресурсов и iframe-атаки.

2. Создание директории - 'nginxconf', в которой будут правила безопасности - 'security.conf'

⚠️ Примечание по безопасности

В данной инструкции и в других пунктах документации, используется команда sudo -i, для перехода в режим суперпользователя (root). Это сделано для ускорения процесса и сокращения команд.

В production-среде, постоянная работа из-под root, не рекомендуется, так как это нарушает принцип наименьших привилегий и существенно снижает безопасность сервера.

Включите sudo:

sudo -i

Введите команду:

mkdir /etc/nginx/nginxconf

Затем:

nano /etc/nginx/nginxconf/security.conf

Добавьте в открывшиеся окно, код ниже:

server_tokens off;
	add_header X-XSS-Protection "1; mode=block" always;
	add_header X-Content-Type-Options "nosniff" always;
	add_header Referrer-Policy "no-referrer-when-downgrade" always;
	add_header Permissions-Policy "interest-cohort=()" always;
	add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
	add_header X-Frame-Options "DENY";
	add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval' blob: https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/; frame-ancestors 'self' https://www.google.com/ https://www.gstatic.com/; img-src 'self' data: blob:; style-src 'self'; script-src 'self' blob: https://www.google.com/ https://www.gstatic.com/;" always;

После добавления кода, нажмите последовательно - 'ctrl + x', 'y', 'Enter'.

3. Подключение 'security.conf' к серверу

Введите код:

nano /etc/nginx/sites-available/crystal

Добавьте в открывшимся окне, код ниже, после второй строки сверху - 'server_name ВашДомен www.ВашДомен;':

# security
include /etc/nginx/nginxconf/security.conf;
# /security

Пример:

server {
    server_name crysty.ru www.crysty.ru;
    # security
    include /etc/nginx/nginxconf/security.conf;
    # /security
    location /
    {
	    root /var/www/crystal/frontend/dist;
	    try_files $uri $uri /index.html;
    }.....

После добавления кода, нажмите последовательно - 'ctrl + x', 'y', 'Enter'.

Затем перезагрузите nginx, командой:

systemctl restart nginx

Чтобы обезопасить сайт от ботов, вы можете установить - reCAPTCHA v3, которая будет срабатывать при регистрации нового пользователя, для этого воспользуйтесь следующей инструкцией.

CRYSTAL тестируется в

BrowserStack

Поделиться

Копировать

USDT (TRON (TRC20)): TTvJdwtL3VAZKSHbYi8B2eQEQDxbHUD4Ka

POL (Polygon PoS): 0x97377684b9a589eca92e2c6c8430e6dcf2bae8c2

ETH (Base Mainnet): 0x97377684b9a589eca92e2c6c8430e6dcf2bae8c2

ETH (ERC20): 0x97377684b9a589eca92e2c6c8430e6dcf2bae8c2

BTC (BTC): 12GkhJZWrdn23PUerGerN7nSZXHwWGm59U

Похожие посты

Этот сайт использует файлы cookies. Нажимая кнопку 'Принять' или продолжая пользоваться сайтом, вы соглашаетесь на использование файлов cookies.