Astra linux kerberos настройка

Обновлено: 04.07.2024

Kerberos это система сетевой аутентифиации, основанная на принципах доверия третьей стороне. Другие две стороны - это пользователь и сервис, на котором он хочет авторизоваться. Не все сервисы и приложения могут использовать Kerberos, но те, которые могут, приближают сетевое окружение на один шаг к технологии единого входа (Single Sign On - SSO).

Этот раздел раскрывает установку и настройку сервера Kerberos, а также некоторые примеры клиентских настроек.

Обзор

Если вы новичок в Kerberos, есть несколько терминов, которые хорошо понять до установки сервера Kerberos. Большинство терминов связаны с вещами, которые могут быть вам знакомы по другим окружениям:

Учетная запись (Principal): любые пользователи, компьютеры или сервисы, предоставляемые серверами, должны быть определены как учетные записи Kerberos .

Требования (Instances): используются для сервисных и специальных административных учетных записей.

Центр распространения ключей (KDC): состоит из трех частей: базы данных всех учетных записей, сервера аутентификации и сервера предоставления билетов. Для каждой области должен быть хотя бы один KDC.

Билет для получения билета (TGT): изданный сервером аутентификации, TGT зашифровывается на пароле пользователя, который известен только пользователю и KDC.

Сервер распространения билетов (TGS): выпускает сервисные билеты для клиентов по запросу.

Билеты (Tickets): подтверждение идентичности двух учетных записей. Одна учетная запись - пользователь, а другая - сервис, запрашиваемый этим пользователем. Билеты устанавливают секретный ключ, используемый для защищенного соединения во время авторизованной сессии.

Файлы ключей (Keytab Files): файлы, извлеченные из базы учетных записей KDC и содержащие ключ шифрования для сервиса или компьютера.

Чтобы сложить все вместе: Область содержит как минимум один KDC, лучше больше для обеспечения безотказности, которые содержат базу данных учетных записей. Когда пользователь под учетной записью заходит на рабочую станцию, которая настроена на Kerberos аутентификацию, KDC выпускает билет для получения билетов (TGT). Если пользователь предоставляет совпадающие параметры, он считается аутентифицированным и может запрашивать билеты для сервисов, поддерживающих Kerberos, на сервере распространения билетов (TGS). Сервисные билеты позволяют пользователю аутентифицироваться на сервисах без ввода имени и пароля.

Все серверы и клиенты, участвующие в работе Kerberos, должны иметь возможность коммуницировать друг с другом, и иметь точные показания системных часов.

Далее в примере используются

Имена и доступность компьютеров

Сервис Kerberos следует устанавливать в сети, в которой уже настроена служба DNS. Каждому серверу, входящему в область Kerberos, должно быть присвоено Полное Квалифицированное Доменное Имя (Fully Qualified Domain Name, FQDN).
Настроенный DNS-сервис должен обеспечивать прямое и обратное (реверсивное) разрешение FQDN (для отключения реверсивного разрешения можно в файле конфигурации клиента krb5.conf установить переменной rdns начение false)

Проверить настройку прямого и обратного разрешения имён можно командами:

nslookup <FQDN_имя_сервера>
nslookup <IP_адрес_сервера>

(для использования команды nslookup следует установить пакет dnsutils: apt install dnsutils)

Для проверки доступности компьютеров можно использовать команду ping:

Синхронизация времени

Протокол Kerberos требует соответствия показаний часов всех клиентов и серверов, и при рассинхронизации часов аутентификация становится невозможной.
Простой и стандартный путь обеспечения синхронизации - использование сервиса Network Time Protocol (NTP).

Пакеты сервиса Kerberos входят в стандартные дистрибутивы Astra Linux, и могут быть установлены с помощью графического менеджера пакетов,
или из командной строки командой

При установке выдаётся предупреждение о том, что пакет не настроен, которое пока можно проигнорировать.

После установки сервис автоматически не запускается, и должен быть настроен для запуска.

При установке пакета будет создан файл конфигурации сервиса /etc/krb5kdc/kdc.conf со стандартным содержимым, в котором автоматически будет указано имя области Kerberos, полученное из FQDN сервера, на котором выполняется установка:

Kerberos использует для контроля доступа к администрированию сервиса Списки Управления Доступом (Access Control List, ACL) .
По умолчанию, список располагается в файле /etc/krb5kdc/kadm5.acl.

Для примера, создадим файл /etc/krb5kdc/kadm5.acl, дающий неограниченные права любому принципалу, чьё имя заканчивается на /admin:

И создадим новую область Kerberos командой:

krb5_newrealm

При выполнении команды нужно будет ввести и подтвердить пароль администратора, после чего будут автоматически созданы нужные базы данных.

Далее, для выполнения задач по администрированию сервиса Kerberos нужно создать принципала с правами администратора.
Для этого используем инструмент командной строки kadmin.local, предназначенный для администрировния Kerberos на локальном компьютере.

При использовании инструмента kadmin.local подразумевается, что этот инструмент вызывается с защищенного сервера Kerberos,
поэтому инструмент не требует логинов и паролей, и автоматически получает все полномочия для администрирования сервиса Kerberos.

Инструмент вызывается из командной строки командой

После вызова инструмента можно ввести симовл "вопросительный знак", в ответ на это будет выдана подсказка по списку команд.

Добавим нового принципала admin/admin командой addprinc:

kadmin.local: addprinc admin/admin

После ввода команды будет запрошен пароль для создаваемого принципала.

Выход из инструмента kadmin.local осуществляется командой quit.

После создания принципала admin/admin его можно использовать для администрирования сервера Kerberos с удалённых компьютеров с помощью инструмента командной строки kadmin.
Этот инструмент аналогичен инстрменту kadmin.local, однако рассчитан на удалённое подключение, и требует авторизации пользователя через указание принципала и ввод пароля:

kadmin -p admin/admin

Для автоматического получения клиентами адреса сервера Kerberos можно использовать специальные настройки сервера DNS: служебные записи (SRV-записи).
Пример таких записей для службы Kerberos см. в статье про сервер DNS

Клиентский пакет Kerberos krb5-user входит в дистрибутивы Astra Linux, но по умолчанию не устанавливается. Пакет может быть установлен с помощью графического менеджера пакетов, или из командной строки командой

apt install krb5-user

При установке пакета krb5-user, кроме самого пакета, автоматически будет установлен пакет krb5-config для настройки клиента

Если Kerberos предполагается использовать с контроллером домена Samba AD DC,
для настройки клиентов следует использовать копию конфигурационного файла /var/lib/samba/krb5.conf,
автоматически создаваемого при процедуре назначения Samba
Кроме того, в сети должны быть правильно настроены и работать службы DNS и DHCP.

Настройка клиента Kerberos выполняется командой

При этом команда

После завершения работы программы настройки результат настройки можно проверить получением принципала.
Команда kinit должна выполняться без ошибок:

kinit admin/admin

Проверить содержимое полученного принципала можно командой

Для обеспечения возможности авторизации пользователей через Kerberos требуется дополнительно установить пакет libpam-krb5:

apt install libpam-krb5

После установки пакета необходимые модули авторизации будут автоматически добавлены в стек авторизации PAM.

Kerberos — сетевая служба аутентификации, основанная на одноименном протоколе аутентификации,
предлагающем механизм взаимной аутентификации клиента и сервера перед установлением связи между ними с учётом того факта,
что начальный обмен информацией происходит в незащищенной среде, а передаваемые пакеты могут быть перехвачены и модифицированы.

Аутентификация через Kerberos является фактическим стандартом аутентификации доменных пользователей, и применяется в Windows Active Directiry, Samba AD DC, FreeI PA, Astra Linux Directory (ALD) .

В Linux-системах существуют две основные реализаций Kerberos - MIT и Heimdal. В ОС Astra Linux (и далее в примерах этой статьи) используется MIT Kerberos.

При описании работы Kerberos применяются некоторые специфические термины:

  • Область (realm) - о бласть (области), обслуживаемые сервисом. П римерно соответствует термину "домен";
  • Принципал - учетная запись Kerberos, с соответствующим набором прав. Примерно соответствет термину "пользователь". Но, при этом, пользователь может получать разные наборы прав от Керберос (разные принципалы).

Все серверы и клиенты, участвующие в работе Kerberos, должны иметь возможность коммуницировать друг с другом, и иметь точные показания системных часов.

Далее в примере используются

Имена и доступность компьютеров

Сервис Kerberos следует устанавливать в сети, в которой уже настроена служба DNS. Каждому серверу, входящему в область Kerberos, должно быть присвоено Полное Квалифицированное Доменное Имя (Fully Qualified Domain Name, FQDN).
Настроенный DNS-сервис должен обеспечивать прямое и обратное (реверсивное) разрешение FQDN (для отключения реверсивного разрешения можно в файле конфигурации клиента krb5.conf установить переменной rdns начение false)

Проверить настройку прямого и обратного разрешения имён можно командами:

nslookup <FQDN_имя_сервера>
nslookup <IP_адрес_сервера>

(для использования команды nslookup следует установить пакет dnsutils: apt install dnsutils)

Для проверки доступности компьютеров можно использовать команду ping:

Синхронизация времени

Протокол Kerberos требует соответствия показаний часов всех клиентов и серверов, и при рассинхронизации часов аутентификация становится невозможной.
Простой и стандартный путь обеспечения синхронизации - использование сервиса Network Time Protocol (NTP).

Пакеты сервиса Kerberos входят в стандартные дистрибутивы Astra Linux, и могут быть установлены с помощью графического менеджера пакетов,
или из командной строки командой

При установке выдаётся предупреждение о том, что пакет не настроен, которое пока можно проигнорировать.

После установки сервис автоматически не запускается, и должен быть настроен для запуска.

При установке пакета будет создан файл конфигурации сервиса /etc/krb5kdc/kdc.conf со стандартным содержимым, в котором автоматически будет указано имя области Kerberos, полученное из FQDN сервера, на котором выполняется установка:

Kerberos использует для контроля доступа к администрированию сервиса Списки Управления Доступом (Access Control List, ACL) .
По умолчанию, список располагается в файле /etc/krb5kdc/kadm5.acl.

Для примера, создадим файл /etc/krb5kdc/kadm5.acl, дающий неограниченные права любому принципалу, чьё имя заканчивается на /admin:

И создадим новую область Kerberos командой:

При выполнении команды нужно будет ввести и подтвердить пароль администратора, после чего будут автоматически созданы нужные базы данных.

Далее, для выполнения задач по администрированию сервиса Kerberos нужно создать принципала с правами администратора.
Для этого используем инструмент командной строки kadmin.local, предназначенный для администрировния Kerberos на локальном компьютере.

При использовании инструмента kadmin.local подразумевается, что этот инструмент вызывается с защищенного сервера Kerberos,
поэтому инструмент не требует логинов и паролей, и автоматически получает все полномочия для администрирования сервиса Kerberos.

Инструмент вызывается из командной строки командой

После вызова инструмента можно ввести симовл "вопросительный знак", в ответ на это будет выдана подсказка по списку команд.

Добавим нового принципала admin/admin командой addprinc:

После ввода команды будет запрошен пароль для создаваемого принципала.

Выход из инструмента kadmin.local осуществляется командой quit.

После создания принципала admin/admin его можно использовать для администрирования сервера Kerberos с удалённых компьютеров с помощью инструмента командной строки kadmin.
Этот инструмент аналогичен инстрменту kadmin.local, однако рассчитан на удалённое подключение, и требует авторизации пользователя через указание принципала и ввод пароля:

Для автоматического получения клиентами адреса сервера Kerberos можно использовать специальные настройки сервера DNS: служебные записи (SRV-записи).
Пример таких записей для службы Kerberos см. в статье про сервер DNS

Клиентский пакет Kerberos krb5-user входит в дистрибутивы Astra Linux, но по умолчанию не устанавливается. Пакет может быть установлен с помощью графического менеджера пакетов, или из командной строки командой

При установке пакета krb5-user, кроме самого пакета, автоматически будет установлен пакет krb5-config для настройки клиента

Если Kerberos предполагается использовать с контроллером домена Samba AD DC,
для настройки клиентов следует использовать копию конфигурационного файла /var/lib/samba/krb5.conf,
автоматически создаваемого при процедуре назначения Samba
Кроме того, в сети должны быть правильно настроены и работать службы DNS и DHCP.

Настройка клиента Kerberos выполняется командой

При этом команда

После завершения работы программы настройки результат настройки можно проверить получением принципала.
Команда kinit должна выполняться без ошибок:

Проверить содержимое полученного принципала можно командой

Для обеспечения возможности авторизации пользователей через Kerberos требуется дополнительно установить пакет libpam-krb5:

apt install libpam-krb5

После установки пакета необходимые модули авторизации будут автоматически добавлены в стек авторизации PAM.

В этом посте мы решили рассказать о доменной аутентификации в Linux, с использованием смарт-карт и USB-токенов JaCarta PKI в качестве второго фактора аутентификации. Если о локальной аутентификации через PAM-модуль информации существует довольно много, то вопрос доменной инфраструктуры и аутентификация по Kerberos-билетам в Linux рассмотрен слабо, особенно на русском языке. В качестве операционной системы возьмем Astra Linux и на примере Astra Linux Directory (ALD) это и покажем.

Выгода такого решения очевидна – оно позволяет отказаться от парольной аутентификации пользователя, что поможет кардинально снизить влияние «человеческого фактора» на безопасность системы. Плюс это даст ряд преимуществ от использования электронных ключей внутри операционной системы, после аутентификации в домене.

Немного вводных об Astra Linux Directory (ALD) и JaCarta PKI

Домен Astra Linux Directory (ALD) предназначен для организации единого пространства пользователей (домена локальной вычислительной сети) в автоматизированных системах.

ALD использует технологии LDAP, Kerberos5, Samba/CIFS и обеспечивает:

  • централизованное хранение и управление учетными записями пользователей и групп;
  • сквозную аутентификацию пользователей в домене с использованием протокола Kerberos5;
  • функционирование глобального хранилища домашних директорий, доступных по Samba/CIFS;
  • автоматическую настройку файлов конфигурации UNIX, LDAP, Kerberos, Samba, PAM;
  • поддержку соответствия БД LDAP и Kerberos;
  • создание резервных копий БД LDAP и Kerberos с возможностью восстановления;
  • интеграцию в домен входящих в дистрибутив СУБД, серверов электронной почты, Web-серверов, серверов печати и другие возможности.


В среде Astra Linux Directory (ALD) электронные ключи JaCarta PKI могут использоваться для двухфакторной аутентификации пользователя в домене ALD и отказа от паролей. Кроме того, с этими же электронными ключами можно выполнять различные сценарии внутри ОС, после аутентификации, такие, как: электронная подпись, хранение ключевых контейнеров, доступ к Web-ресурсам, проброс ключа в сессии MS Windows. Доступ к VDI сервисам, таким, как VmWare или Citrix.

Процесс настройки

Пример демо-зоны

  • Сервер — Astra Linux Smolensk SE 1.5 4.2.0-23-generic, x86_64, с установленными пакетами:
    • JaCarta IDProtect 6.37;
    • libccid;
    • pcscd;
    • libpcsclite1;
    • krb5-pkinit;
    • libengine-pkcs11-openssl;
    • opensc.
    • JaCarta IDProtect 6.37;
    • libccid;
    • pcscd;
    • libpcsclite1;
    • krb5-pkinit.

    Установка драйверов на сервер и клиент

    Для обеспечения работы со смарт-картой JaCarta PKI на клиенте и сервере установите следующие пакеты: libccid, pcscd, libpcsclite1. После установки этих обязательных пакетов установите пакет драйверов IDProtectClient, который можно загрузить с официального сайта «Аладдин Р.Д.».

    Для обеспечения работы со смарт-картой подсистемы Kerberos добавочно к предустановленным пакетам ald/kerberos установите пакет krb5-pkinit на клиенте и сервере.

    Для обеспечения возможности выпуска ключей и сертификатов на JaCarta PKI на сервере также установите пакеты libengine-pkcs11-openssl и opensc.

    Установка и настройка центра сертификации на сервере

    В качестве центра сертификации (CA) будет использован OpenSSL.

    OpenSSL — криптографический пакет с открытым исходным кодом для работы с SSL/TLS. Позволяет создавать ключи RSA, DH, DSA и сертификаты X.509, подписывать их, формировать CSR и CRT.

      Выпустите сертификат KDC:
      $ openssl x509 -req -in kdc.req -CAkey cakey.pem -CA cacert.pem -out kdc.pem -extfile pkinit_extensions -extensions kdc_cert –CAcreateserial –days 365

    Подготовка смарт-карты. Выпуск ключей и сертификата пользователя

    Убедитесь в том, что установлены пакеты libengine-pkcs11-openssl и opensc. Подключите устройство, которое следует подготовить.

    Проинициализируйте устройство, установите PIN-код пользователя. Помните, что инициализация устройства удалит все данные на JaCarta PKI без возможности восстановления.

    Для инициализации необходимо воспользоваться утилитой pkcs11-tool.

    pkcs11-tool --slot 0 --init-token --so-pin 00000000 --label 'JaCarta PKI' --module /lib64/libASEP11.so,

    --slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;

    --init-token – команда инициализации токена;

    --so-pin 00000000 – PIN-код администратора JaCarta PKI. По умолчанию имеет значение 00000000;

    --label 'JaCarta PKI' – метка устройства;

    --module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so. Устанавливается в рамках пакета idprotectclient см. раздел «Установка драйверов на сервер и клиент».

    Для задания PIN-кода пользователя используйте команду:

    pkcs11-tool --slot 0 --init-pin --so-pin 00000000 --login --pin 11111111 --module /lib64/libASEP11.so,

    --slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;

    --init-pin – команда установки PIN-кода пользователя;

    --so-pin 00000000 – PIN-код администратора JaCarta PKI. По умолчанию имеет значение 00000000;

    --login – команда логина;

    --pin 11111111 – задаваемый PIN-код пользователя;

    --module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so. Устанавливается в рамках пакета idprotectclient см. раздел «Установка драйверов на сервер и клиент».

    Сгенерируйте ключи на устройстве, для этого введите следующую команду:

    pkcs11-tool --slot 0 --login --pin 11111111 --keypairgen --key-type rsa:2048 --id 42 --label “test1 key” --module /lib64/libASEP11.so,

    --slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;

    --login --pin 11111111 — указывает, что следует произвести логин под пользователем с PIN-кодом «11111111». Если у Вашей карты другой PIN-код пользователя, укажите его;

    --keypairgen --key-type rsa:2048 — указывает, что должны быть сгенерированы ключи длиной 2048 бит;

    --id 42 — устанавливает атрибут CKA_ID ключа. CKA_ID может быть любым;

    Запомните это значение! Оно необходимо для дальнейших шагов подготовки устройства к работе.

    --label “test1 key” — устанавливает атрибут CKA_LABEL ключа. Атрибут может быть любым;

    --module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so. Устанавливается в рамках пакета idprotectclient см. раздел «Установка драйверов на сервер и клиент».

    Сгенерируйте запрос на сертификат с помощью утилиты openssl. Для этого введите следующие команды:


    Обратите внимание на -new -key 0:42, где 0 — номер виртуального слота с устройством, 42 — атрибут CKA_ID сгенерированных раннее ключей.

    Информацию, которую необходимо указать в запросе, следует задавать в поле "/C=RU/ST=Moscow/L=Moscow/O=Aladdin/OU=dev/CN=test1 (! Ваш_Пользователь!)/emailAddress=test1@mail.com".

    Необходимо установить переменные окружения

    и выпустить сертификат на пользователя.

    $ openssl x509 -CAkey cakey.pem -CA cacert.pem -req -in client.req -extensions client_cert -extfile pkinit_extensions -out client.pem –days 365

    Далее перекодируйте полученный сертификат из PEM в DER.

    Запишите полученный сертификат на токен.

    pkcs11-tool --slot 0 --login --pin 11111111 --write-object client.cer --type 'cert' --label 'Certificate' --id 42 --module /lib/libASEP11.so,

    --slot 0 — указывает, в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д.;

    --login --pin 11111111 — указывает, что следует произвести логин под пользователем с PIN-кодом «11111111». Если у Вашей карты другой PIN-код пользователя, укажите его;

    --write-object ./client.cer — указывает, что необходимо записать объект и путь до него;

    --type 'cert' — указывает, что тип записываемого объекта – сертификат;

    'cert' --label 'Certificate' — устанавливает атрибут CKA_LABEL сертификата. Атрибут может быть любым;

    --id 42 — устанавливает атрибут CKA_ID сертификата. Должен быть указан тот же CKA_ID, что и для ключей;

    --module /lib64/libASEP11.so — указывает путь до библиотеки libASEP11.so.

    Настройка клиента. Проверка работоспособности

    Создайте на клиенте каталог /etc/krb5/. Скопируйте в /etc/krb5/ сертификат CA (cacert.pem) c сервера.

    Настройте kerberos в /etc/krb5.conf. Секцию [libdefaults] дополните следующими строками.

    kinit Когда появится строка запроса PIN-кода к карте, введите его.

    Для проверки того, что kerberos-тикет был успешно получен для пользователя, введите команду klist. Для удаления тикета — kdestroy.

    Для входа в домен по смарт-карте на экране входа в ОС вместо пароля введите PIN-код от смарт-карты.

    На этом настройка окончена. Да, к сожалению, система сама не поменяет и не подстроит login окно под смарт-карту, и оно будет стандартным, но если приложить немного секретных усилий, можно добиться красивого результата.

    На Astra Linux 1.6 пытаюсь настроить вывод мандатных меток в браузер. При выключенном Astra Mode выдает дефолтную страницу Apache «it`s works!», при включенном index.html. Тоесть WSGI ни в какую работать не хочет, пробовала с разными скриптами.

    В чем косяк? Пользователь введен в ALD, захожу на клиентскую машину с него. В браузере параметры negotiate прописаны.

    И почему index.html показывает? Что, обработчик 500 ошибки настроен на index.html?

    bigbit ★★★★★ ( 06.10.20 09:24:25 )
    Последнее исправление: bigbit 06.10.20 09:36:17 (всего исправлений: 1)

    Еще логи в файле kdc.log

    В файле kadmin_server.log

    Обрабтчик 500 ошибки не настраивала. Машинка новая, там только как раз ald настроен и вот попытка теперь поднять apache с аунтефикацией и запуском скрипта. Куда копать, если проблема с аунтефикацией? понятно, что керберос, но вроде все по мануалам сделано (доки+наверное все что в сети есть), не очень понятно, что еще надо проверить

    Получилось! Для этого потребовалось:

    1. Отвязать дефолтный конфиг апача в /etc/apache2/sites-enabled

    Привязать свой через a2ensite, если не был привязан.

    1. В конфинге керберос явно указать файл keytab

    Хорошо, что получилось, но расположение файла keytab лучше указывать в конфиге апача опцией Krb5KeyTab.

    А то у тебя получилось, что апачевский keytab стал системным. Ломают апач - получают доступ к системному кейтабу.

    Так ведь в Krb5KeyTab указывается апачевский keytab. Мне казалось Kerberos оттуда его берет и сам (или ald) генерирует в конфиг свой. Или он как-то из апачевского свой, другой keytab делает?

    К слову, сейчас в krb5.conf нет моей строки, видимо ald пересоздало файл. Но все работает. Значит магия))

    Так ведь в Krb5KeyTab указывается апачевский keytab.

    Именно так. У тебя же апач аутентифицирует пользоваталей, значит, тебе нужен апачевский кейтаб. Если на этой машине Kerberos использует только апач, то пофиг, можешь делать как хочешь. А вот если в кейтабе лежат ключи хоста, которые используются, например, для аутентификации AD-шных пользователей по SSH - то не дело давать к ним доступ апачу.

    Мне казалось Kerberos оттуда его берет и сам (или ald) генерирует в конфиг свой. Или он как-то из апачевского свой, другой keytab делает?

    Долго думал, что ты имеешь ввиду, но не понял.
    Kerberos - это просто набор библиотек (krb5-libs). До тех пор, пока кто-то их не загрузит и не станет использовать (apache, sshd, sssd), Kerberos сам по себе ничего делать не будет.

    К слову, сейчас в krb5.conf нет моей строки, видимо ald пересоздало файл. Но все работает. Значит магия))

    Лишнее подтверждение того, что там ей не место. И после перезапуска апача тоже все работает?

    bigbit ★★★★★ ( 08.10.20 18:07:26 )
    Последнее исправление: bigbit 08.10.20 18:08:21 (всего исправлений: 1)

    Так, теперь опять не работает. Причем добавление этой строчки не помогает. Логи апача:

    Читайте также: