Формат файла настроек ASB-сервера asbsrv.ini

Файл настроек ASB-сервера хранится в формате INI-файла. INI-файл делится на секции, секция  - это блок строк текста от одного наименования секции до другого. Наименования секции заключаются в квадратные скобки. Если первый значимый символ строки - точка с запятой, такая строка считается комментарием. Как правило (не всегда!) строка INI-файла выглядит так: параметр=значение.

В файле настроек ASB-сервера для имен параметров, значений параметров, имен секций принята ANSI 1251-кодировка; имена секций и параметров понимаются регистронезависимо.

Ниже подробнее описаны секции и параметры файла настроек сервера.

Секция "ASBP Server"

Содержит настройки сервера для обслуживания по asbp/asbps-протоколу.

Имя параметра Область значений Значение по умолчанию Описание
Authorization Yes/No
  • Yes под Windows NT 4.0, 2000, XP
  • No под Windows 95, 98, ME
Должен ли ASBP-сервер авторизовать подключения. Под Windows 95, 98 и ME это невоможно
AuthenticationProviders Список протоколов аутентификации через запятую или точку с запятой. Допустимые протоколы: NTLM, Negotiate, Kerberos "Negotiate, NTLM" Список провайдеров аутентификации по умолчанию для протокола ASBP
AvoidAnonymousAccessAccountInfo Yes/No Yes Флаг "избегать анонимного доступа к учетной информации"
AsbRoot Имя локального каталога Каталог расположения главного модуля сервера asbsrv.exe Корневой каталог ASB-сервера. От этого каталога интерпретируется относительный путь к серверным RED-файлам проекта.
OnlySoftTRNKeepTRNSlices Yes/No Yes Значение Yes: "не уничтожать в памяти сервера срезы завершенных транзакций, если они завершились позже, чем началась мягкая незавершенная транзакция".
Значение No: "не уничтожать в памяти сервера срезы завершенных транзакций, если они завершились позже, чем началась любая (мягкая или жесткая) незавершенная транзакция".

Секция "HTTP Server"

Содержит настройки сервера для обслуживания по http-протоколу.

Имя параметра Область значений Значение по умолчанию Описание
Authorization Yes/No
  • Yes под Windows NT 4.0, 2000, XP
  • No под Windows 95, 98, ME
Должен ли HTTP-сервер авторизовать подключения. Под Windows 95, 98 и ME это невоможно
AuthenticationProviders Список протоколов аутентификации через запятую или точку с запятой. Допустимые протоколы: NTLM, Negotiate "Negotiate, NTLM" Список провайдеров аутентификации по умолчанию для протокола HTTP
AvoidAnonymousAccessAccountInfo Yes/No Yes Флаг "избегать анонимного доступа к учетной информации"
WebRoot Имя локального каталога Каталог расположения главного модуля сервера asbsrv.exe Корневой каталог HTTP-сервера. URL запроса интерпретируется относительно этого каталога
DefaultPage Имя файла "default.htm" Имя файла по умолчанию. Если ресурс, на который указывает URL запроса, является каталогом, сервер попытается найти в этом каталоге файл по умолчанию. Если такого файла нет, сервер вернет страницу, содержащую структуру каталога
AsbHtmlFileExt Строка ".ahm;.asbhtml" Расширения по умолчанию для HTML-файлов, содержащих ASB-спецтеги. Содержимое такого файла предобрабатываются сервером перед отправкой клиенту
AdministrativePrivilege Строка "" (т.е. никто не имеет административных привилегий) Список групп и пользователей (через запятую или точку с запятой), которые имеют административные привилегии при работе с сервером по HTTP-протоколу.

Секция "Common Options"

Содержит общие настройки для asbp и http-серверов.

Имя параметра Область значений Значение по умолчанию Описание
SimulateBase64DecodeOutLenBug Yes/No No В процессе аутентификации имитировать ошибку, имевшую место в процедуре декодирования Base64 до версии 14.21.1.
LogLevel None/Debug/Verbose None Уровень протоколирования отладочных сообщений сервера. Протоколирование осуществляется одновременно в файл asbsrv.log и на консоль сервера (последнее только в отладочном режиме). Ключи командной строки сервера -debug и -verbose перекрывают значение данного параметра.
AccumulateSynchrObjectsStatistics Yes/No No Надо ли собирать статистику использования объектов синхронизации. Эту статистику можно получить, вызвав ASL-процедуру GETSERVERSYNCHROBJECTSSTATISTICS.

Секция "Schannel Options"

Содержит настройки SSL-протокола. Эти настройки являются общими для всех защищенных каналов сервера. Какой канал защищается SSL-протоколом, а какой - нет, определяется в другой секции.

Имя параметра Область значений Значение по умолчанию Описание
SSL2 Yes/No No Разрешается ли серверу использовать протокол SSLv2
PCT1 Yes/No No Разрешается ли серверу использовать протокол PCTv1
SSL3 Yes/No No Разрешается ли серверу использовать протокол SSLv3
TLS1 Yes/No No Разрешается ли серверу использовать протокол TLSv1
MinCipherStrength Число бит 0 Минимально допустимая длина сеансового ключа шифрования в битах

Если все SSL-протоколы запрещены, сервер выберет набор разрешенных протоколов по собственному усмотрению.

Данная секция является необязательной. Если секция опущена, сервер самостоятельно выберет набор разрешенных протоколов и будет допускать любую длину сеансового ключа. Настройки секции служат для усиления секретности: можно запретить использовать "устаревшие" протоколы SSLv2 и PCTv1, а также "ненадежные" 40-битные сеансовые ключи. Однако если, например, клиент поддерживает только 40-битное шифрование, он не сможет связаться с сервером.

Секции "ASBP Server\Path Translation" и "HTTP Server\Path Translation"

Эти секции содержат определения виртуальных папок для ASBP и HTTP-серверов. Определение подключает реальную папку, находящуюся вне корневого каталога, к корневому каталогу под именем виртуальной папки. Благодаря виртуальным папкам проекты можно хранить на разных дисках сервера. При считывании секции контролируется как вхождение виртуальной папки в корневую, так и невхождение реальной папки в корневую. Формат определения таков.

ВиртуальнаяПапка = РеальнаяПапка

В ходе разбора виртуального пути, т.е. пути к проекту (ASBP-сервер) или ресурсу (HTTP-сервер), перебираются все виртуальные папки и выбирается наиболее подходящая. Если ни одна виртуальная папка не подходит, предполагается, что искомый объект находится в пределах корневой папки. Рассмотрим сказанное на примере.

[ASBP Server]
...
AsbRoot = C:\Appl
...
[ASBP Server\Path Translation]
Virtual\Virtual2 = E:\Appl
Virtial = D:\Appl

Для приведенных выше настроек

  1. виртуальный путь "Virtual\X1\X1.red" (т.е. LocationAtServer="Virtual\X1") соответствует реальному пути "D:\Appl\X1\X1.red";
  2. виртуальный путь "Virtual\Virtual2\X2\X2.red" соответствует реальному пути "E:\Appl\X2\X2.red";
  3. виртуальный путь "X3\X3.red" соответствует "C:\Appl\X3\X3.red".

Секции "ASBP Server\Bind Addresses" и "HTTP Server\Bind Addresses"

Эти секции содержат списки разрешений на подключение клиентов соответственно для asbp и http-серверов. Для конкретных адреса и порта сервера и некоторого диапазона адресов клиента, разрешение задает, во-первых, список пользователей и групп, которые имеют право подключения к серверу, во-вторых, тип протокола (asbp или http - косвенно, по имени секции), необходимость защиты канала связи протоколом SSL и данные для поиска сертификата сервера в системном хранилище.

[ASBP Server\Bind Addresses]
...
192.168.0.1:5401-255.255.255.0&192.168.0.0=Schannel(CN, d3nt02, LocalMachine, MY):AuthenticationProviders(Negotiate, NTLM):$(UserDomain)\AP_InetUsers
...

Приведенное выше разрешение следует читать так. Если к адресу сервера 192.168.0.1 и порту 5401 подключается клиент с адреса 192.168.0.XXX (XXX - любое число), такого клиента следует аутентифицировать при помощи протокола аутентификации Negotiate или NTLM (на выбор клиента), аутентифицированный клиент должен быть членом группы AP_InetUsers своего домена, общаться с ним следует по протоколу asbps, в ходе SSL-рукопожатия сервер должен предъявить клиенту сертификат, выданный на имя d3nt02, каковой сертификат серверу следует разыскать в личном (MY) хранилище сертификатов локального компьютера.

Ниже приведено формальное описание синтаксиса разрешения на подключение.

Admission = ServerIPAddrOrHostName [ ":" ServerPort
            [ "-" SubNetMask [ "&" ClientIPAddrOrHostName ] ] ]
            "=" [ SchannelPrefix ] [ AuthenticationProvidersPrefix ]
            GroupsAndUsersList
ServerIPAddrOrHostName = IAddrOrHostName
ClientIPAddrOrHostName = IAddrOrHostName
IAddrOrHostName = IPAddress | HostName
SchannelPrefix = "Schannel" "("
                 CertSearchCriteria "," CertSearchValue 
                 [ "," SystemCertStoreType [ "," SystemCertStoreName ] ]
                 ")" ":"
AuthenticationProvidersPrefix = "AuthenticationProviders" "("
                                [ AuthenticationProvider { "," AuthenticationProvider } ]
                                ")" ":"
AuthenticationProvider = NTLM | Negotiate | Kerberos
CertSearchCriteria = CN | SHA1 | MD5
SystemCertStoreType = "LocalMachine" | "CurrentUser"
GroupsAndUsersList = [ GroupOrUser { GroupsAndUsersSeparator GroupOrUser } ]
GroupsAndUsersSeparator = ";" | ","
GroupOrUser = GroupOrUserName | GroupOrUserSID

Описание компонентов разрешения.

Компонент Описание Значение по умолчанию
Протокол ASBP Протокол HTTP
ServerIPAddrOrHostName IP-адрес или имя хоста сервера    
ServerPort Порт сервера 5301/5401 80/443
SubnetMask Маска исходящей подсети, в паре с ClientIPAddrOrHostName определяет исходящую подсеть. Разрешение относится только к подключениям из заданной исходящей подсети 0.0.0.0
ClientIPAddrOrHostName Адрес исходящей подсети (или имя хоста вместо адреса); в паре с SubnetMask определяет исходящую подсеть. Разрешение относится только к подключениям из заданной исходящей подсети ServerIPAddrOrHostName
SchannelPrefix Если данный компонент разрешения - префикс секретного канала - присутствует, сервер должен общаться с клиентом по защищенному каналу связи. В скобках задаются через запятую четыре параметра поиска сертификата: критерий поиска, значение, тип и ID хранилища. Значение поиска зависит от критерия поиска: для критерия CN задается общее имя, для критериев SHA1 и MD5 - хэш сертификата в виде последовательности шестнадцатиричных значений байтов. Два последних параметра - необязательные: по умолчанию сервер разыскивает сертификат в личном (MY) хранилище компьютера. Префикс секретного канала не задан, т.е. незащищенный канал
GroupsAndUsersList Список групп и пользователей из домена сервера или доверяемых доменов, которым разрешено подключение по соответствующему протоколу. Разделитель в списке - точка с запятой или запятая. Разрешается использовать имена глобальных и локальных групп и пользователей, а также имена встроенных участников безопасности. Разрешено указывать SID вместо имени. Определены макроподстановки для исключения зависимости от версии и локализации Windows NT/2000/XP. Полный список макроподстановок см. список макросов локализации.  "" (пустой список)

Список макросов локализации.

Имя макроса Security ID (SID) Значение макроса в английской версии Windows NT Значение макроса в русской версии Windows NT Описание
Имена доменов
$(UserDomain)       Имя домена аутентифицированного пользователя
$(ServerDomain)       Имя домена сервера
$(ServerName)       Имя сервера
Универсальные встроенные участники безопасности
$(Null) S-1-0-0 "Null SID" "Null SID" Встроенная группа, в которую никто не входит
$(Everyone) S-1-1-0 "Everyone" "Все" Встроенная группа, в которую входят все пользователи
$(World) S-1-1-0 "Everyone" "Все" Встроенная группа, в которую входят все пользователи
$(Local) S-1-2-0 "Local" "Локальные" Встроенная группа, в которую входят все зарегистрированные локально (на сервере) пользователи
NT Authority
$(Dialup) S-1-5-1 "NT Authority\Dialup" "NT Authority\Удаленный доступ" Все пользователи, подключившиеся по dial-up
$(Network) S-1-5-2 "NT Authority\Network" "NT Authority\Сеть" Все пользователи, подключившиеся по локальной сети
$(Batch) S-1-5-3 "NT Authority\Batch" "NT Authority\Пакетные файлы" Все пользователи, зарегистрировавшиеся на сервере неинтерактивно
$(Interactive) S-1-5-4 "NT Authority\Interactive" "NT Authority\Интерактивные" Все пользователи, зарегистрировавшиеся на сервере интерактивно
$(Service) S-1-5-6 "NT Authority\Service" "NT Authority\Служба"  
$(AnonymousLogon) S-1-5-7 "NT Authority\Anonymous Logon" "NT Authority\Анонимный вход" Пользователь "Анонимный вход"
$(Proxy) S-1-5-8 "NT Authority\Proxy" "NT Authority\Proxy"  
$(AuthenticatedUsers) S-1-5-11 "NT Authority\Authenticated Users" "NT Authority\Прошедшие проверку"  
$(TerminalServer) S-1-5-13 "NT Authority\Terminal Server" "NT Authority\Пользователи сервера терминалов" Группа пользователей, зарегистрированных на сервере терминалов
$(LocalSystem) S-1-5-18 "NT Authority\System" "NT Authority\System" Пользователь Local System, под этой учетной записью обычно работают службы
$(LocalService) S-1-5-19 "NT Authority\LocalService" "NT Authority\LocalService" Пользователь Local Service, под этой учетной записью работают некоторые службы под Window XP и выше
$(NetworkService) S-1-5-20 "NT Authority\NetworkService" "NT Authority\NetworkService" Пользователь Network Service, под этой учетной записью работают некоторые службы под Window XP и выше
Алиасы
$(Admins) S-1-5-32-544 "Builtin\Admins" "Builtin\Администраторы" Группа локальных администраторов
$(Users) S-1-5-32-545 "Builtin\Users "Builtin\Пользователи" Группа локальных пользователей
$(Guests) S-1-5-32-546 "Builtin\Guests "Builtin\Гости" Группа локальных гостей
$(PowerUsers) S-1-5-32-547 "Builtin\Power Users "Builtin\Опытные пользователи" Локальная группа “опытные пользователи”
$(AccountOperators) S-1-5-32-548 "Builtin\Account Operators "Builtin\Операторы учетной информации" Локальная группа ”операторы учетной информации”
$(SystemOperators) S-1-5-32-549 "Builtin\System Operators" "Builtin\Системные операторы" Локальная группа ”системные операторы”
$(PrintOperators) S-1-5-32-550 "Builtin\Print Operators" "Builtin\Операторы печати" Локальная группа ”операторы печати”
$(BackupOperators) S-1-5-32-551 "Builtin\Backup Operators" "Builtin\Операторы архива" Локальная группа ”операторы архива”
$(Replicator) S-1-5-32-552 "Builtin\Replicator" "Builtin\Репликатор" Локальная группа ”репликатор”
Относительные (относительно домена)
Domain\$(Administrator) S-1-5-21-…-500 "Domain\Administrator" "Domain\Администратор" Пользователь - администратор домена
Domain\$(Guest) S-1-5-21-…-501 "Domain\Guest" "Domain\Гость" Пользователь - гость домена
Domain\$(DomainAdmins) S-1-5-21-…-512 "Domain\Domain Admins" "Domain\Администраторы домена" Глобальная группа - администраторы домена
Domain\$(DomainUsers) S-1-5-21-…-513 "Domain\Domain Users" "Domain\Пользователи домена" Глобальная группа - пользователи домена
Domain\$(DomainGuests) S-1-5-21-…-514 "Domain\Domain Guests" "Domain\Гости домена" Глобальная группа - гости домена
Domain\$(SchemaAdmins) S-1-5-21-…-518 "Domain\Schema Admins" "Domain\Администраторы схемы" Глобальная группа - администраторы схемы
Domain\$(EnterpriseAdmins) S-1-5-21-…-519 "Domain\Enterprise Admins" "Domain\Администраторы предприятия" Глобальная группа - администраторы предприятия
Domain\$(PolicyAdmins) S-1-5-21-…-520 "Domain\Policy Admins" "Domain\Администраторы системных политик" Глобальная группа - администраторы системных политик

Порядок применения разрешений сервером.

  1. В момент подключения клиента сервер просматривает сначала список разрешений для протокола asbp, затем список разрешений для протокола http. Из того, в каком и двух списков найдено подходящее разрешение, следует тип прикладного протокола: asbp или http.
  2. Оба списка разрешений просматриваются последовательно в том порядке, в котором разрешения перечислены в соответствующей секции файла настроек. Выбирается первое подходящее разрешение.
  3. Разрешение считается подходящим, если входящие (серверные) адрес и порт совпадают, а исходящий (клиентский) адрес попадает в заданный адресом и маской подсети диапазон исходящих адресов.
  4. Если подходящее разрешение не будет найдено, сервер просто закроет соединение. Клиент получит код ошибки 10054 "Соединение разорвано удаленным узлом".
  5. Из правой части подходящего разрешения выбирается список разрешенных протоколов аутентификации. Этот список будет предложен клиенту в процессе аутентификации.
  6. Из правой части подходящего разрешения выбирается список групп и пользователей, которым разрешено подключение. Этот список будет использован в процессе авторизации на уровне прикладного протокола (asbp или http).
  7. Из правой части подходящего разрешения сервер также узнает о необходимости использования SSL и о сертификате сервера. Если требуется защищенный протоколом SSL канал, сервер разыскивает в системном хранилище указанный сертификат и выполняет SSL-handshake.

Рассмотрим пример задания списков разрешений.

[ASBP Server\Bind Addresses]
;Подключение с локального компьютера к порту 5301 разрешено
;всем членам AP_Users без использования SSL
localhost:5301=$(UserDomain)\AP_Users
;Подключение из локальной сети к порту 5301 разрешено
;всем членам AP_Users без использования SSL
192.168.0.1:5301-255.255.255.0&192.168.0.0=$(UserDomain)\AP_Users
;Подключение из Интернета по внешнему адресу разрешено всем членам
;AP_InetUsers с использованием SSL. Сервер будет предъявлять клиенту
;сертификат на имя c43.autopark.ru
212.119.108.250:5401=Schannel(CN, c43.autopark.ru):$(UserDomain)\AP_InetUsers

 

Прочие секции

Прочие секции описывают параметры активных ресурсов HTTP-сервера и изменяются только программистами ASB.