ot Milen Pankov(15-04-2007)

reiting (25)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

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.



<< | >>