Ako triabva da pravim udostoveriavane kum Apache survur rabotesht pod linuks v Windows bazirana mrezha izpolzvaneto na veche sushtestvuvashtite akaunti na potrebitelite v aktivnata direktoriia na Windows survura shte ulesni potrebitelite ni i niama da se nalaga da gi karame da pomniat po dve ili poveche potrebitelski imena i paroli. Tuk shte opisha kak mozhe da stane tova.
Konfiguratsiite po-dolu sa testvani na Ubuntu 5.10 Breezy Badger i Fedora Core release 6 (Zod). Polzvana e instalatsiia na Microsoft Windows Server 2003 Enterprise Edition Service Pack 1 s instaliran Microsoft Exchange Server 2003 Service Pack 2. Komandite i konfiguratsiite vazhat za Ubuntu 5.10 Breezy Badger, no ne bi triabvalo da ima problem da se prigodiat i za drugi distributsii.
ToDo: Da se testva dali konfiguratsiite rabotiat kum Windows 2000 Server.
Variant I - polzvane na mod_auth_ldap
Instalirame si apache i openldap, ako niamame veche instalirani:
apt-get install apache2 libldap2
Za da pozvolim udostoveriavane, vuv faila ‘/etc/apache2/sites-enabled/000-default’ triabva da promenim reda ‘AllowOverride None’ na ‘AllowOverride AuthConfig None’.
Aktivirame mod_auth_ldap v konfiguratsiiata na apache:
cd /etc/apache2/mods-enabled/
ln -s /etc/apache2/mods-available/auth_ldap.load
Suzdavame direktoriia, za koiato shte iskame udostoveriavane:
mkdir /var/www/ldap_test
i ia opisvame v konfiguratsiiata na apache:
touch /etc/apache2/conf.d/ldap_test
Failut ‘/etc/apache2/conf.d/ldap_test’ triabva da sudurzha slednoto:
<Directory /var/www/ldap_test>
AuthType Basic
AuthName “LDAP”
AuthLDAPURL ldap://ldap.domain.com:3268/DC=domain,DC=com?samAccountName?sub?(objectClass=*)
AuthLDAPBindDN DOMAIN\username
AuthLDAPBindPassword password
Require valid-user
</Directory>
Direktivata ‘AuthLDAPURL’ ni dava adresa na ‘LDAP’ survura, kato suotvetno triabva da zamenite ‘ldap.domain.com’ sus hosta na Windows survura, a sushto taka i ‘DC=domain’ i ‘DC=com’ sus tezi vuv vashata struktura. Za direktivata ‘AuthLDAPBindDN’ polzvaite aktiven akaunt v MS Active Directory, kato sintaksisa e ot vida DOMAIN\username, a za direktivata ‘AuthLDAPBindPassword’ - parolata na akaunta. Poslednite dve sa nuzhni, zashtoto aktivnata direktoriia ne pozvoliava anonimni vruzki. Za port polzvaite 3268 - porta na Global Catalog-a, zashtoto pri izpolzvaneto na standartniia LDAP port 389 aktivnata direktoriia vrushta prepratki, s koito ima problemi.
Sled restartirane na Apache-to:
/etc/init.d/apache2 restart
veche vsichko bi triabvalo da raboti i adresa “http://the_linux_box/ldap_test” da ni udostoveri s validen potrebitel kum aktivnata direktoriia.
Za da izpolzvame udostoveriavane po prinadlezhnast kum grupa, triabva da napravim slednite promeni v konfiguratsiiata - zakomentirame ili mahame direktivata ‘Require valid-user’ i ia zameniame sus slednoto:
Require group cn=GroupName,cn=Users,dc=domain,dc=com
kudeto ‘GroupName’ e imeto na grupata, a domain i com zameniate s tezi vuv vashata strukturata.
Gornoto poradi niakakva prichina ne raboti za potrebiteli, za koito definiranata grupa e ‘Primary Group’. Po podrazbirane v aktivnata direktoriia ‘Primary Group’ e ‘Domain Users’. Sushto taka to ne raboti i ako potrebiteliat ne e chlen direktno na grupata (naprimer chlen e na grupa, koiato ot svoia strana e chlen na definiranata grupa).
ToDo: Da se proveri za vuzmozhnost gornite problemi da se preodoleiat.
Ako iskame da udostoveriavame kum grupa Administrators sintaksisut e po-razlichen, tui kato tia se namira v Builtin strukturata na aktivnata direktoriia:
Require group CN=Administrators,CN=Builtin,DC=domain,DC=com
Variant II - polzvane na mod_auth_pam
Instalirame libapache2-mod-auth-pam i libpam-ldap, ako niamame veche instalirani:
apt-get install libapache2-mod-auth-pam libpam-ldap libnss-ldap
Suzdavame direktoriia, za koiato shte iskame udostoveriavane:
mkdir /var/www/pam_test
i ia opisvame v konfiguratsiiata na apache:
touch /etc/apache2/conf.d/pam_test
Failut ‘/etc/apache2/conf.d/pam_test’ triabva da sudurzha slednoto:
<Directory /var/www/pam_test>
AuthPAM_Enabled on
AuthType Basic
AuthName “PAM”
Require valid-user
</Directory>
Vuv faila ‘/etc/pam.d/apache2′ zakomentirame vsichko i dobaviame slednite dva reda:
auth required pam_ldap.so
account required pam_permit.so
Vuv faila ‘/etc/pam_ldap.conf’ zakomentirame vsichko i dobaviame slednite redove:
host ldap.domain.com
base dc=domain,dc=com
binddn username@domain.com
bindpw password
port 3268
scope sub
pam_filter objectclass=*
pam_login_attribute sAMAccountName
Konfiguratsiiata e analogichna s varianta s mod_auth_ldap. ‘host’ triabva da sochi kum Windows hosta, ‘binddn’ i ‘bindpw’ sudurzhat aktivni potrebitelsko ime i parola ot aktivnata direktoriia, kato potrebitelskoto ime e ot vida ‘username@domain.com’. Za port pak polzvame porta na Global Catalog-a.
Sled restartirane na Apache-to:
/etc/init.d/apache2 restart
veche vsichko bi triabvalo da raboti i adresa “http://the_linux_box/pam_test” da ni udostoveri s validen potrebitel kum aktivnata direktoriia.
ToDo: Da se proveri za vuzmozhnost da se implementira autentikatsiia po prinadlezhnost kum grupa.
Variant III - polzvane na mod_auth_kerb
Za da polzvame udostoveriavane chrez Kerberos purvo triabva da napravim niakolko neshta na Windows survura.
Purvoto neshto e da dobavim hosta na Apache survura kum DNS-a na Windows survura. Triabva da suzdadem A-zapis za linuks mashinata, naprimer ubuntu.domain.com, koito da sochi kum IP adresa na Apache survura. Sled tova triabva da suzdadem t.n. kerberos ticket, s koito shte izvurshvame autentikatsiiata. Komandata, koiato triabva da izpulnim v Windows ot komanden red e slednata:
ktpass -princ HTTP/ubuntu.domain.com@DOMAIN.COM -mapuser DOMAIN\username -crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapop set +desonly -pass password -out C:\keytab
Suotvetno zameniame ‘ubuntu.domain.com’ i ‘DOMAIN.COM’ s tezi v nashata struktura, a za ‘DOMAIN\username’ i ‘password’ izpolzvame aktiven potrebitel ot aktivnata direktoriia. Sled tova triabva da kopirame faila keytab niakude na linuks mashinata, naprimer v ‘/etc/apache2/auth’ i da restriktirame pravata vurhu nego, taka che samo Apache survura da ima dostup:
chown www-data.www-data /etc/apache2/auth/keytab
chmod 400 /etc/apache2/auth/keytab
Na Apache survura instalirame mod-auth-kerb i krb5-config, ako veche niamame instalirani:
apt-get install libapache2-mod-auth-kerb krb5-config
Failut ‘/etc/krb5.conf’ triabva da sudurzha slednoto:
[libdefaults]
default_realm = DOMAIN.COM
[realms]
DOMAIN.COM = {
admin_server = kdc.domain.com
kdc = kdc.domain.com
}
Kato triabva da zamenite ‘DOMAIN.COM’ s imeto na domeina vuv vashata struktura, a vmesto ‘kdc.domain.com’ da slozhite hosta na Windows survura.
Suzdavame direktoriia, za koiato shte iskame udostoveriavane:
mkdir /var/www/krb_test
i ia opisvame v konfiguratsiiata na apache:
touch /etc/apache2/conf.d/krb_test
Failut ‘/etc/apache2/conf.d/krb_test’ triabva da sudurzha slednoto:
<Directory /var/www/krb_test>
AuthType Kerberos
AuthName “KERBEROS”
KrbServiceName HTTP
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbAuthRealms DOMAIN.COM
Krb5KeyTab /etc/apache2/auth/keytab
require valid-user
</Directory>
kato suotvetno zameniame ‘DOMAIN.COM’ s nashiia domein.
Sled restartirane na Apache-to:
/etc/init.d/apache2 restart
veche vsichko bi triabvalo da raboti i adresa “http://the_linux_box/krb_test” da ni udostoveri s validen potrebitel kum aktivnata direktoriia.
ToDo: Da se proveri za vuzmozhnost da se implementira autentikatsiia po prinadlezhnost kum grupa.
Variant IV - polzvane na mod_auth_imap
Tova ne e tochno udostoveriavane kum aktivnata direktoriia, zashtoto se pravi udostoveriavane kum IMAP survura na Windows-a, no mozhe da svurshi rabota, ako imame instaliran Microsoft Exchange Server i potrebitelite, koito udostoveriavame imat aktivni poshtenski kutii na Exchange-a. Tuk udostoveriavaneto stava po sledniia nachin - potrebitelite podavat kum Apache-to potrebitelsko ime i parola, a Apache-to ot svoia strana probva da se svurzhe s tiah kum IMAP survura. Ako IMAP survura udostoveri potrebitelia, to i Apache-to ot svoia strana go udostoveriava.
Na Apache-to shte polzvame mod_auth_imap i tui kato edinstvenata distributsiia, koito ima paket za nego e Mandriva 2007 shte go svalim i kompilirame ot ofitsialnata mu stanitsa, no purvo za da go kompilirame shte ni triabva dev paketa na Apache survura:
apt-get install apache2-threaded-dev
sled tova shte kompilirame i instalirame mod_auth_imap:
cd /tmp
wget http://ben.brillat.net/files/projects/mod_auth_imap2/mod_auth_imap2-current.tar.gz
tar xzf mod_auth_imap2-current.tar.gz
cd mod_auth_imap2-x.x.x
apxs2 -i -a -c mod_auth_imap.c
Suzdavame direktoriia, za koiato shte iskame udostoveriavane:
mkdir /var/www/imap_test
i ia opisvame v konfiguratsiiata na apache:
touch /etc/apache2/conf.d/imap_test
Failut ‘/etc/apache2/conf.d/imap_test’ triabva da sudurzha slednoto:
<Directory /var/www/imap_test>
Auth_IMAP_Enabled on
AuthName “IMAP”
AuthType Basic
Require valid-user
Auth_IMAP_Authoritative on
Auth_IMAP_Server imap.domain.com
Auth_IMAP_Port 143
Auth_IMAP_Log on
</Directory>
kato za ‘imap.domain.com’ slagame IMAP survura, a v ‘Auth_IMAP_Port’ - IMAP porta.
Sled restartirane na Apache-to:
/etc/init.d/apache2 restart
veche vsichko bi triabvalo da raboti i adresa “http://the_linux_box/imap_test” da ni udostoveri s validen potrebitel kum aktivnata direktoriia.
Ako polzvate mod-auth-pam i mod_auth_imap ednovremenno, dobavete reda ‘AuthPAM_Enabled off’ v konfiguratsiiata za direktoriiata, za da zabranite pam autentikatsiiata za tazi direktoriia, zashtoto v protiven sluchai ako pam modula se zarezhda predi imap modula, to Apache-to vinagi shte polzva udostoveriavane chrez pam.
Tuk niama variant za implementirane na udostoveriavane po prinadlezhnost kum grupa.
ToDo: Vsichki konfigurratsii pozvoliavat edinstveno polzvane na potrebitelsko ime ot vida ‘username’, no ne i ot vida ‘DOMAIN\username’ ili ‘username@domain.com’. Da se proveri za vuzmozhnost tova da se implementira.