Инструменты пользователя

Инструменты сайта


how-to:apache

Apache

Могут использоваться команды apachectl или httpd

Проверить конфигурацию:

apache2ctl -t

Перегрузить конфигурацию:

apachectl -k graceful

Подключение SSL

Чтобы включить доступ к сайту по https, добавляем в настройках сайта доступ к сайту по порту 443:

<VirtualHost *:443>

и включаем SSL:

SSLEngine on
SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

Подключаем модуль ssl и перезагружаем:

sudo a2enmod ssl
sudo service apache2 restart

Подключение cgi

Для обработки cgi и pl в конфигурации сайта (Directory, Location) должно быть:

    Options ExecCGI FollowSymLinks
#    AddHandler cgi-script .cgi .pl
    AllowOverride All
sudo a2enmod ssl
sudo service apache2 restart

Аутентификация

Kerberos

Устанавливаем:

sudo apt install libapache2-mod-auth-kerb

В домене создаём пользователя http и выполняем:

ktpass -princ HTTP/site.domain.com@DOMAIN.COM -mapuser http -pass passuserhttp -out C:\http.keytab

Перемещаем http.keytab в /etc/apache2/, меняем права:

sudo chown www-data /etc/apache/http.keytab
sudo chmod 400 /etc/apache/http.keytab

Добавляем в корень дирректории сайта:

<Directory "/var/www/site/">

    AuthType Kerberos
    KrbVerifyKDC off
    Krb5KeyTab /etc/apache/http.keytab
    KrbServiceName HTTP/site.domain.com@DOMAIN.COM
    Require valid-user

</Directory>

Опции

  • KrbVerifyKDC on|off - по умолчанию on. Можно отключить проверку тикетов локального keytab для предотвращения спуфинг атаки на KDC (проверяется каждый запрос). Включен только для тестирования.
  • KrbDelegateBasic on|off - по умолчанию off.
  • KrbSaveCredentials on|off - по умолчанию off. Использовать функцию сохранения учётных данных.
  • KrbMethodK5Passwd on|off - по умолчанию on. Использовать аутентификацию на основе пароля для Kerberos v5.
  • KrbMethodNegotiate on|off - по умолчанию on. Использовать метод Negotiate. Для использования нужна поддержка на стороне браузере.

http://modauthkerb.sourceforge.net/configure.html

Отладка

Вывод в /tmp/krb5.trace от www-data:

sudo --user www-data env KRB5_TRACE=/tmp/krb5.trace kinit -k -t /var/www/1c/www-1c.keytab HTTP/1c.domain.com

Вывод на экран от root:

sudo env KRB5_TRACE=/dev/stdout kinit -k -t /etc/apache/http.keytab HTTP/site.domain.com

Временно можно добавить отладку для обращений через apache:

echo export KRB5_TRACE=/tmp/krb5_apache.trace | sudo tee -a /etc/apache2/envvars
touch /tmp/krb5_apache.trace
sudo chown www-data /tmp/krb5_apache.trace
systemctl apache2 restart

Тестирование PHP аутентификации GSSAPI

Устанавливаем php-ldap:

sudo apt install php-ldap

Пример конфигурации сайта apache, добавляем в VirtualHost:

    Alias "/krb" "/var/www/krb/"
    <Directory "/var/www/krb/">
	AllowOverride All
	Options None

	AuthType Kerberos
	AuthName "Kerberos Login"
	KrbMethodNegotiate On
	KrbMethodK5Passwd On
	KrbAuthRealms DOMAIN.COM
	Krb5KeyTab /etc/apache2/http.keytab
 	KrbServiceName HTTP
	KrbSaveCredentials On
	KrbLocalUserMapping On
	Require valid-user
    </Directory>

Добавляем index.php в /var/www/krb/:

<?php
    var_dump($_SERVER['PHP_AUTH_USER']);
    var_dump($_SERVER['KRB5CCNAME']);
    putenv("KRB5CCNAME={$_SERVER['KRB5CCNAME']}");
    $ldapconn = ldap_connect("ldap://dc.domain.com:389") or die('error connect с $ldaphost') ;
    ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
    $result = ldap_sasl_bind($ldapconn,'','','GSSAPI','DOMAIN.COM') or die('Failed to GSSAPI bind sasl bind.<br />');
    $result = ldap_search($ldapconn, 'DC=DOMAIN,DC=COM', '(objectClass=*)', array('mail'));
    $result_entries = ldap_get_entries($ldapconn, $result);
    var_dump($result_entries);
?>

При переходе по данному адресу (site.domain.com/krb) вывод должен быть примерно таким:

string(4) "user" string(30) "FILE:/tmp/krb5cc_apache_C2QEEw" 

https://www.altlinux.org/Apache2/AD-auth

Ошибки

Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration

Необходимо подключить модуль ssl:

sudo a2enmod ssl

Network is unreachable: AH00056: connect to listener on [::]:80

Необходимо в настройках виртуальных хостов /etc/apache2/sites-available/* изменить прослушивающие интерфейсы с:

  <VirtualHost *:80>

на

  <VirtualHost 0.0.0.0:80>

http://www.cathaycenturies.com/blog/?p=446

how-to/apache.txt · Последнее изменение: 127.0.0.1