Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Подсказка
titleПамятка

Прежде чем применять настройки - внимательно читаем. От этого зависит работоспособность системы


Информация
titleКраткое описание модуля
Данная страница посвящена настройке безопасности системы, все приведённые здесь примеры являются рекомендательными, полную безопасность обеспечиваете Вы и только Вы!

Оглавление
absoluteUrltrue

Отображение дочерних элементов

Настройки безопасности на стороне самой ОС

  1. Всегда держите в актуальном состоянии приложения, которые позволяют получать удалённый доступ к системе (OpenSSH)
  2. Закройте SSH доступ извне. Разрешите доступ только определённым IP
  3. Никогда не используйте вход на сервер по сертификату. Вариант утечек очень велик
  4. Используйте сложные пароли, от 12 символов, буквенно-цифровые-спецсимволы
  5. Закройте вход под рутом через SSH
  6. Настройте Firewall и fail2ban
  7. Разрешите только те порты, которые необходимы для работы системы
  8. Пересмотрите все процессы, может какой висит в памяти, но он не используется

Настройка безопасности на стороне Nginx

На стороне nginx можно настроить гибкую систему безопасности:

Файл основного конфига nginx.conf

Блок кода
languageshell
titleОсновные настройки
user www-data;									# Запускать рабочие процессы от пользователя www-data
worker_processes auto;							# Автоматически определять количество рабочих процессов
#worker_rlimit_nofile 65535;					# Максимальное количество открытых файлов (закомментировано)

pid /run/nginx.pid;								# Файл для хранения PID главного процесса
error_log /var/log/nginx/error.log;				# Путь к файлу ошибок
include /etc/nginx/modules-enabled/*.conf;		# Включение всех конфигов из директории modules-enabled
Блок кода
languageshell
titleНастройки событий (events)
events {
    worker_connections 16384;					# Максимальное количество соединений на один рабочий процесс
    multi_accept on;							# Разрешить принимать несколько соединений одновременно
    accept_mutex on;							# Включить мьютекс для распределения новых соединений
    accept_mutex_delay 500ms;					# Задержка перед повторной попыткой захвата мьютекса
    use epoll;									# Использовать эффективный метод epoll (для Linux)
    epoll_events 2048;							# Максимальное количество событий за один вызов epoll
}
Блок кода
languageshell
titleHTTP - блок
http {
    ## Блокировка плохих User-Agent

    map $http_user_agent $bad_ua {											# Создание переменной для плохих User-Agent
        default 0;															# По умолчанию 0 (не блокировать)
        "~*wvs|nikto|sqlmap" 1;												# Блокировать сканеры безопасности (wvs, nikto, sqlmap)
    }

    server {
        if ($bad_ua) {														# Если обнаружен плохой User-Agent
            return 403;														# Возвращать ошибку 403 (Forbidden)
        }
    }

    ## Основные настройки HTTP

    fastcgi_cache_path /tmp/fcgi-cache/ levels=1:2 keys_zone=one:10m;		# Настройки кеша FastCGI
    output_buffers 32 512k;													# Буферы вывода (32 буфера по 512KB)
    sendfile on;															# Использовать sendfile для передачи файлов
    send_timeout 60s;														# Таймаут передачи данных
    tcp_nopush on;															# Оптимизация передачи пакетов (включить TCP_CORK)
    tcp_nodelay on;															# Отключить алгоритм Nagle (меньше задержек)
    types_hash_max_size 2048;												# Максимальный размер хеш-таблицы MIME-типов

    ## Настройки безопасности cookies

    proxy_cookie_flags one httponly;										# Установить флаг HttpOnly для cookie "one"
    proxy_cookie_flags ~ secure samesite=strict;							# Установить Secure и SameSite=strict для всех cookies

    include /etc/nginx/mime.types;											# Включить файл с MIME-типами
    default_type application/octet-stream;									# MIME-тип по умолчанию

    ## Настройки реального IP (для работы за прокси/CDN)

    real_ip_header X-Forwarded-For;											# Использовать заголовок X-Forwarded-For для определения реального IP
    real_ip_recursive on;													# Рекурсивно проверять IP в X-Forwarded-For

    # Список доверенных подсетей (в основном Cloudflare)

    set_real_ip_from 103.21.244.0/22;
    set_real_ip_from 103.22.200.0/22;
    set_real_ip_from 103.31.4.0/22;
    set_real_ip_from 104.16.0.0/13;
    set_real_ip_from 104.24.0.0/14;
    set_real_ip_from 108.162.192.0/18;
    set_real_ip_from 131.0.72.0/22;
    set_real_ip_from 141.101.64.0/18;
    set_real_ip_from 162.158.0.0/15;
    set_real_ip_from 172.64.0.0/13;
    set_real_ip_from 173.245.48.0/20;
    set_real_ip_from 188.114.96.0/20;
    set_real_ip_from 190.93.240.0/20;
    set_real_ip_from 197.234.240.0/22;
    set_real_ip_from 198.41.128.0/17;

    set_real_ip_from 2400:cb00::/32;
    set_real_ip_from 2606:4700::/32;
    set_real_ip_from 2803:f800::/32;
    set_real_ip_from 2405:b500::/32;
    set_real_ip_from 2405:8100::/32;
    set_real_ip_from 2a06:98c0::/29;
    set_real_ip_from 2c0f:f248::/32;

    # ... (остальные IPv4 и IPv6 диапазоны Cloudflare)

    ## Настройки SSL

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;							# Разрешенные версии TLS (SSLv3 отключен из-за уязвимости POODLE)
    ssl_prefer_server_ciphers on;											# Предпочитать серверные шифры клиентским

    ## Настройки логирования

    access_log /var/log/nginx/access.log;									# Файл доступа

    ## Настройки Gzip

    gzip on;																# Включить сжатие Gzip
    gzip_min_length 10240;													# Минимальный размер для сжатия (10KB)
    gzip_proxied expired no-cache no-store private auth;					# Когда сжимать проксированные ответы
    gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;		# Какие типы сжимать
    gzip_disable "msie6";													# Отключить сжатие для IE6

    ## Включение дополнительных конфигураций

    include /etc/nginx/conf.d/*.conf;										# Включить все конфиги из conf.d
    include /etc/nginx/sites-enabled/*;										# Включить все сайты из sites-enabled
}
Блок кода
languageshell
titleMail - блок (обычно не используется)
# Настройки mail-прокси (POP3/IMAP)
# Примеры конфигурации для почтового прокси

Общие замечания:

  1. Конфигурация оптимизирована для работы с Cloudflare (настройки реального IP)

  2. Включены базовые меры безопасности (блокировка сканеров, защита cookies)

  3. Используются современные настройки производительности (epoll, sendfile, tcp_nopush)

  4. SSL настроен с поддержкой TLS 1.3 и отключением устаревших протоколов

  5. Gzip настроен для сжатия текстовых форматов с исключением мелких файлов

  6. Конфигурация модульная - основные настройки в этом файле, сайты подключаются отдельно

Файл основного конфига acp_kazna_39.conf

Блок кода
languageshell
titleHTTP-сервер (порт 80)
server {
    # Редирект с HTTP на HTTPS для stat.acp_kazna_39.ru

    if ($host = stat.acp_kazna_39.ru) {
        return 301 https://$host$request_uri;
    }
	
	# managed by Certbot (автоматически добавлено Certbot)

    listen 172.16.31.22:80;								# Прослушивание на конкретном IP и порту 80
    # listen [::]:80 default_server ipv6only=on;		# Закомментирован IPv6
    access_log  off;									# Отключение логов доступа
    error_log   off;									# Отключение логов ошибок
    # include letsencrypt;								# Закомментировано включение letsencrypt

    server_name stat.acp_kazna_39.ru;					# Доменное имя сервера

    location / {
        # Заголовок безопасности Content-Security-Policy

        add_header Content-Security-Policy "script-src 'self' 'unsafe-inline'";
        try_files $uri $uri/ =404;						# Попытка найти файл или директорию, иначе 404
        return 301 https://$host$request_uri;			# Редирект на HTTPS
    }
}


Блок кода
languageshell
titleHTTPS-сервер (порт 443)
server {
    listen 172.16.31.22:443 default_server ssl;			# Прослушивание HTTPS
    charset utf-8;										# Кодировка UTF-8
    
    ### Усиленные заголовки безопасности ###
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https:; style-src 'self' 'unsafe-inline'; img-src 'self' data:;";
    add_header X-Content-Type-Options "nosniff";		# Запрет MIME-sniffing
    add_header X-Frame-Options "DENY";					# Запрет встраивания в iframe
    add_header X-XSS-Protection "1; mode=block";		# Защита от XSS

    ### Страницы ошибок ###
    error_page 403 /error/403.html;						# Кастомная страница 403
    error_page 404 /error/404.html;						# Кастомная страница 404
    
    location ^~ /error/ {
        internal;										# Только для внутренних редиректов
        root /usr/ACP/cgi-bin;							# Корневая директория для ошибок
        add_header Content-Type text/html;				# Установка типа контента
    }

    ### Правила блокировки атак ###
    # Блокировка подозрительных параметров (SQL-инъекции)
    if ($args ~* "sid=[^a-zA-Z0-9_-]|%0D|%0A|\r|\n") {
        return 403;
    }

    # Блокировка сканеров безопасности (Acunetix, Nikto и др.) 
    if ($http_user_agent ~* "(wvs|acunetix|nikto|sqlmap)") {
        return 403;
    }


    ### Основные настройки ###
    root "/usr/ACP/cgi-bin";							# Корневая директория
    index index.cgi;									# Индексный файл

    ### SSL-сертификаты ###
    ssl_certificate /etc/letsencrypt/live/stat.acp_kazna_39.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/stat.acp_kazna_39.ru/privkey.pem;

    ### Логирование ###
    access_log /var/log/billing/billing_access.log;		# Лог доступа
    error_log /var/log/billing/billing_error.log;		# Лог ошибок

    ### Основное location (/) ###
    location / {
        # Расширенная политика безопасности
        add_header Content-Security-Policy "...";
        root "/usr/ACP/cgi-bin/";
        index index.cgi;
    }

    ### Обработка PHP-файлов ###
    location ~* \.php$ {
        # fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;	# Альтернативный вариант
        fastcgi_pass 127.0.0.1:9000;					# PHP-FPM на localhost:9000
        fastcgi_param NO_BUFFERING 1;					# Отключение буферизации
        fastcgi_index index.php;

        # Таймауты FastCGI
        fastcgi_connect_timeout 30s;
        fastcgi_read_timeout 60s;
        fastcgi_send_timeout 60s;
        include fastcgi_params;							# Стандартные параметры FastCGI
        fastcgi_buffering off;							# Отключение буферизации
    }

    ### Обработка CGI и Perl файлов ###
    location ~* \.cgi|pm$ {
        fastcgi_pass unix:/var/run/fcgiwrap.socket;		# Использование fcgiwrap

        # Параметры авторизации и безопасности
        fastcgi_pass_header Authorization;
        fastcgi_param HTTP_CGI_AUTHORIZATION $http_authorization;

        # Указание полного пути к скрипту
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        # Таймауты
        fastcgi_connect_timeout 30s;
        fastcgi_read_timeout 60s;
        fastcgi_send_timeout 60s;
        include fastcgi_params;
        fastcgi_buffering off;
    }

    ### Статические файлы ###
    location /styles/ {
        root /usr/ACP/cgi-bin/;							# Директория стилей
    }

    location /img/calculator/ {
        root /usr/ACP/cgi-bin/;							# Изображения калькулятора
    }

    ### Админка ###
    location /admin/ {
        alias "/usr/ACP/cgi-bin/admin/";				# Алиас для админки
        index index.cgi;

		fastcgi_index index.cgi;
		fastcgi_param NO_BUFFERING 1;
		fastcgi_pass_header Authorization;
		fastcgi_param HTTP_CGI_AUTHORIZATION $http_authorization;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_connect_timeout 30s;
		fastcgi_read_timeout 60s;
		fastcgi_send_timeout 60s;
		include fastcgi_params;
		fastcgi_buffering off;
    }

    ### API ###
    location ^~ /api.cgi {
        try_files $uri /api.cgi$is_args$args;
        allow all;										# Разрешить доступ всем
        gzip off;										# Отключить сжатие для API
        fastcgi_param HTTPS on;							# Указание HTTPS-соединения

		fastcgi_index index.cgi;
		fastcgi_param NO_BUFFERING 1;
		fastcgi_param HTTP_CGI_AUTHORIZATION $http_authorization;
		fastcgi_param SCRIPT_FILENAME  /usr/ACP/cgi-bin$fastcgi_script_name;
		fastcgi_connect_timeout 30s;
		fastcgi_read_timeout 60s;
		fastcgi_send_timeout 60s;
		include fastcgi_params;
		fastcgi_buffering off;
    }

    ### Обработка изображений ###
    location ^~ /img/ {
        alias /usr/ACP/cgi-bin/img/;
        
        # Разрешить только error.jpg
        location = /img/error.jpg {
            allow all;
            try_files /error.jpg =404;
        }

        # Разрешить стандартные типы изображений
        location ~* \.(ico|jpg|jpeg|gif|png|webp|css|js|JPG|GIF|PNG)$ {
            allow all;
        }

        deny all;										# Запретить все остальное
    }

    ### Специальные разделы ###
    location /viberktk/ {
        root /usr/ACP/cgi-bin/;
        allow all; # Разрешить доступ всем
    }

    location /usr/ACP/cgi-bin {
        rewrite ^/upsale/v2 /get_pl.cgi last;			# Редирект для upsale
    }

    ### Изображения шаблонов ###
    location ^~ /images/ {
        alias /usr/acp_kazna_39.ru/ACP/templates/;
        # Разрешить только изображения и CSS/JS
        location ~* \.(jpg|gif|png|css|js|JPG|GIF)$ {
            allow all;
        }
        deny all;										# Запретить все остальное
    }
}


 Ключевые особенности конфигурации:

  1. Безопасность:

    • Строгая политика CSP (Content Security Policy)

    • Заголовки XSS и clickjacking защиты

    • Редирект HTTP → HTTPS

    • Ограничения доступа к изображениям

  2. Производительность:

    • Отключение буферизации для FastCGI

    • Настройки таймаутов

    • Раздельная обработка статических и динамических файлов

  3. ACP Казна-39 - специфичные настройки:

    • Обработка CGI-скриптов через fcgiwrap

    • Специальные location для админки и API

    • Кастомные страницы ошибок

  4. Организация:

    • Раздельные корневые директории для разных типов контента

    • Логирование в отдельные файлы

    • Четкое разделение прав доступа


Настройка безопасности на стороне MySQL/MariaDB


Настройка безопасности на стороне биллинга


Описания параметров файла config.pl

ПараметрПримерОписание









Дополнительная информация

Все вышеприведённые примеры являются именно примерами. В боевой среде нужно использовать собственные меры безопасности.

Это только направление и частичная информация что и где настраивать

Будте предельно внимательны и относитесь ответственно к своей среде!