Перейти к содержимому раздела

Форум системного администратора FreeBSD, Linux, Unix, Windows.

Обсуждение железа, сетевых технологий, програмных комплексов и языков программирования.

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.


Добавление ответа

Добавление ответа

Напишите и отправьте новый ответ

Вы можете использовать: BBCode Изображения Смайлики

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

Важная информация для гостей




Обязательно к заполнению

Обзор темы (новые сверху)

2

Поставил плюсик!

1

Возникла потребность упростить людям жизнь и освободить их от необходимости вводить пароль на внутренний web ресурс. Много чего про это написано, но как то не до конца и смазано... Так вот:

1. Первое что надо - это добавить домены которые будут использоваться в список разрешенных доменов (Trusted Sites) на компьютерах пользователей, для explorer и chrome это можно сделать из AD при помощи GPO. Тут может быть *, то есть *.company.internal
2. Создать пользователя к которому мы привяжем SPN (Service Principal Names). Простой, ничем не выделяющийся пользователь. Так сказать для внутренних нужд.
3. Добавить этому пользователю список доменов, по такому принципу

ktpass -princ HTTP/web1.company.internal@company.internal -mapuser user@company.internal -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass VerySecretPass -out c:\krb5.keytab
ktpass -princ HTTP/web2.company.internal@company.internal -mapuser user@company.internal -crypto ALL -ptype KRB5_NT_PRINCIPAL -pass VerySecretPass -out c:\krb5.keytab -in c:\krb5.keytab

Можно и так добавить, это если krb5.keytab не нужен

setspn.exe -A HTTP/web3.company.internal user

Ну и так далее. Файлик krb5.keytab потом надо будит скопировать на сервер, хотя он там и не всегда нужен.

4. Можно проверить, какие домены уже добавлены

setspn.exe -L user

5. Теперь устанавливаем нужные пакеты и настраиваем kerberos с apache (использую Centos7 и все что с ним приходит по умолчанию)

Нужен apache модуль mod_auth_kerb, он потянет за собой все остальное. Если все-таки что-то не хватает, то не сложно можно посмотреть с каким пакетом это приходит. К примеру у вас нет файла /etc/krb5.conf

# yum provides */etc/krb5.conf 
...
krb5-libs-1.13.2-10.el7.x86_64 : The shared libraries used by Kerberos 5
Repo        : base
Matched from:
Filename    : /etc/krb5.conf
...

6. Настраиваем Kerberos

# cat /etc/krb5.conf 
[libdefaults]
    default_realm = company.internal

# The following krb5.conf variables are only for MIT Kerberos.
    krb4_config = /etc/krb.conf
    krb4_realms = /etc/krb.realms
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true

        # set to true for OpenAFS to work
        allow_weak_crypto = true

# The following libdefaults parameters are only for Heimdal Kerberos.
    fcc-mit-ticketflags = true

[realms]
        company.internal = {
                kdc = ad3.company.internal
                kdc = ad2.company.internal
                kdc = ad1.company.internal
                admin_server = ad3.company.internal
        }

[domain_realm]
        .company.internal = company.internal
        company.internal = company.internal

7. Настраиваем Apache. Конфиг упрощен...

<VirtualHost 0.0.0.0:80>
  ServerName web1.company.internal

  DocumentRoot "/var/www/web1.company.internal"

  <Directory "/var/www/web1.company.internal">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require valid-user
    AuthType Kerberos
    AuthName "User Verification"
  </Directory>

  KrbMethodNegotiate on
  KrbMethodK5Passwd on
  KrbAuthoritative on
  KrbAuthRealms company.internal
  Krb5Keytab /etc/krb5.keytab
  KrbLocalUserMapping on
  KrbVerifyKDC off
  KrbServiceName Any
  KrbSaveCredentials off
</VirtualHost>

8. Я протестировал с PHP и с HHVM, есть только одна разница, как до кода доходит имя пользователя. Так как всю авторизацию на себя берет Apache, код может быть независимым и ничего про AD не знать.

В PHP Пользователь приходит в

$_SERVER['REMOTE_USER']

В HHVM (так как посредник FastCGI)

$_SERVER['REDIRECT_REMOTE_USER']

9. Ну раз заговорили про HHVM то настраивается он тоже придельно просто

Так же через yum ставим hhvm с hhvm.com и для подключения к apache нужны дополнительные модули

# cat /etc/httpd/conf.modules.d/proxy.load
LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

Пополнить конфиг apache

<VirtualHost 0.0.0.0:80>
...
  ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9001/var/www/web1.company.internal/$1
...
</VirtualHost>

и не забыть запустить сам hhvm.service



Currently installed 13 official extensions. Copyright © 2003–2010 PunBB.