# 🔒 vAccess для Proxy-сервиса Система контроля доступа для прокси-сервера, аналогичная vAccess для веб-сайтов. ## 📁 Структура ``` Proxy_vAccess/ ├── _example_vAccess.conf - Пример конфигурации с комментариями ├── {domain}_vAccess.conf - Конфигурация для конкретного домена └── README.md - Эта документация ``` ## 🚀 Как использовать ### 1. Создание конфигурации Для каждого прокси-домена создайте файл: ``` {ExternalDomain}_vAccess.conf ``` **Пример:** - `git.example.ru_vAccess.conf` - `api.myservice.com_vAccess.conf` - `proxy.domain.org_vAccess.conf` ### 2. Синтаксис конфигурации Каждый блок правил начинается с комментария `#`: ```conf # Описание правила type: Allow | Disable path_access: /path1/*, /path2/* ip_list: 192.168.1.1, 127.0.0.1 exceptions_dir: /public/* url_error: 404 | https://site.com | /error.html ``` ## 📋 Параметры правил | Параметр | Обязательный | Описание | |----------|--------------|----------| | `type` | ✅ Да | `Allow` - разрешить доступ, `Disable` - запретить | | `type_file` | ❌ Нет | Расширения файлов через запятую (*.json, *.pdf) | | `path_access` | ❌ Нет | Список путей через запятую | | `ip_list` | ❌ Нет | Список IP адресов через запятую | | `exceptions_dir` | ❌ Нет | Пути-исключения (правило не применяется) | | `url_error` | ❌ Нет | Страница ошибки при блокировке | ## 🔍 Примеры использования ### Пример 1: Админка только с локальных IP ```conf # Разрешаем админку только с определённых IP type: Allow path_access: /admin/*, /api/admin/* ip_list: 127.0.0.1, 192.168.1.100 url_error: 404 ``` ### Пример 2: Блокировка определённых IP ```conf # Блокируем подозрительные IP для всего сервиса type: Disable ip_list: 10.0.0.50, 192.168.1.200 url_error: https://example.com/blocked ``` ### Пример 3: Защита внутренних API ```conf # Блокируем доступ к служебным API type: Disable path_access: /internal/*, /private/* exceptions_dir: /internal/health url_error: 404 ``` ### Пример 4: Доступ только с локальной сети ```conf # Разрешаем доступ к API только с локальных адресов type: Allow path_access: /api/* ip_list: 127.0.0.1, ::1, 192.168.0.0/16 url_error: 404 ``` ### Пример 5: Блокировка опасных файлов ```conf # Блокируем исполняемые файлы через прокси type: Disable type_file: *.php, *.exe, *.sh, *.bat path_access: /uploads/*, /files/* url_error: 404 ``` ### Пример 6: Разрешить только определённые типы ```conf # В API разрешаем только JSON и XML type: Allow type_file: *.json, *.xml, no_extension path_access: /api/* url_error: 404 ``` ### Пример 7: Блокировка архивов ```conf # Блокируем скачивание архивов с приватных путей type: Disable type_file: *.zip, *.rar, *.7z, *.tar.gz path_access: /downloads/private/* exceptions_dir: /downloads/private/public/* url_error: https://example.com/access-denied ``` ## ⚙️ Логика работы 1. **Порядок проверки:** правила проверяются сверху вниз 2. **Первое совпадение:** первое подходящее правило срабатывает 3. **Нет конфига = доступ разрешён:** если файла нет, доступ не ограничен 4. **Allow правило:** доступ разрешён ТОЛЬКО если ВСЕ условия выполнены 5. **Disable правило:** доступ запрещён если ЛЮБОЕ условие выполнено ## 📊 Логирование Все события vAccess для прокси записываются в: ``` WebServer/tools/logs/logs_vaccess_proxy.log ``` Формат логов: ``` [2025-10-03 00:45:23] [vAccess-Proxy] 🚫 Доступ запрещён для 192.168.1.50 к git.example.ru/admin ``` ## 🔗 Связь с основной системой vAccess для прокси использует **ту же кодовую базу**, что и vAccess для сайтов: - Все функции парсинга, проверки IP, путей общие - Изменения в логике автоматически применяются везде - Единый стиль конфигурации ## ⚠️ Важные замечания 1. **IP-адреса берутся из соединения** (не из заголовков прокси) 2. **Порядок правил важен** - специфичные правила размещайте ВЫШЕ общих 3. **Проверка расширений работает** - можно фильтровать по type_file даже для прокси 4. **Поддержка подсетей:** можно использовать CIDR нотацию (192.168.0.0/24) 5. **Множественные расширения:** поддержка файлов типа .tar.gz, .backup.sql ## 📞 Поддержка При ошибках парсинга конфигурации: 1. Проверьте синтаксис в `_example_vAccess.conf` 2. Убедитесь что у правила есть `type:` и хотя бы одно условие 3. Посмотрите логи в `logs_vaccess_proxy.log`