
  Apache-alap WebDAV szerver, LDAP s SSL szolgltatsokkal


      Saqib Ali


            saqib@seagate.com
  Offshore XML/XHTML Development
         

*Verzitrtnet*
Verzi v4.0.2	2003.08.01	tdolgozta: sa
Kissebb frisstsek az Apache-ot bellt parancssorban. /dev/random
hivatkozs az SSL rszben.
Verzi v4.0.1	2003.07.27	tdolgozta: sa
Az SSL fejezet tovbbi informcival bvtve.
Verzi v4.0	2002.06.29	tdolgozta: sa
Frisstve a HOGYAN Apache 2.0.-ra. A doksi forrskdja XML formtum.
Verzi v3.4	2002.06.29	tdolgozta: sa
Hozzadva a "Hogyan generljunk CSR-t" fejezet.
Verzi v3.3	2002.04.14	tdolgozta: sa
Hozzadva a "WebDAV szerver zemeltetse" fejezet.

Ez a HOGYAN egy Apache-alap WebDAV szerver teleptst rja le, LDAP-al
az azonostshoz, s SSL-el a titkostshoz.

------------------------------------------------------------------------

*Tartalom*
1. Bevezets <#intro>

    1.1. Errl a dokumentumrl <#AEN47>
    1.2. Kzremkdk <#AEN54>
    1.3. Mi az Apache? <#AEN58>
    1.4. Mi a WebDAV? <#AEN63>
    1.5. Mi a PHP? <#AEN77>
    1.6. Mi a mySQL? <#AEN82>
    1.7. Mire van szksgnk? <#AEN87>
    1.8. Felttelezsek <#AEN108>
    1.9. Magyar fordts <#AEN118>

2. Kvetelmnyek <#AEN126>

    2.1. Alapok <#AEN129>
    2.2. Apache 2.0.46 <#AEN132>
    2.3. OpenSSL <#AEN136>
    2.4. iPlanet LDAP programknyvtr <#AEN140>
    2.5. mod_auth_ldap <#AEN144>
    2.6. mySQL adatbzismotor <#AEN148>
    2.7. PHP <#AEN152>

3. Telepts <#AEN156>

    3.1. Teleptsi felttelek <#AEN159>

        3.1.1. iPlanet LDAP SDK <#AEN162>
        3.1.2. OpenSSL motor <#AEN178>

    3.2. mySQL <#AEN194>

        3.2.1. A mySQL indtsa <#AEN209>
        3.2.2. A mySQL lelltsa <#AEN217>
        3.2.3. A Data Directory helynek meghatrozsa <#AEN223>

    3.3. Apache 2.0 <#AEN231>

        3.3.1. Az Apache indtsa <#AEN249>
        3.3.2. Az Apache lelltsa <#AEN253>

    3.4. mod_auth_ldap <#AEN257>
    3.5. Tanstvny adatbzis az LDAPS:// rszre <#AEN270>
    3.6. PHP <#AEN276>

4. A WebDAV szolgltatsok teleptse s belltsa <#config-webdav>

    4.1. Mdostsok az /usr/local/apache/conf/httpd.conf fjlban <#AEN296>
    4.2. Egy DAVLockDB knyvtr ltrehozsa <#AEN312>
    4.3. A DAV engedlyezse <#AEN326>
    4.4. Egy "DAVtest" nev knyvtr ltrehozsa <#AEN336>
    4.5. Az Apache jraindtsa <#AEN351>
    4.6. A WebDAV protokoll tesztelse <#AEN363>

5. A WebDAV szerver zemeltetse <#AEN387>

    5.1. A DAV megosztott hozzfrsnek korltozsa <#AEN399>

        5.1.1. Hozzfrs korltozsa egyni UID alapjn <#AEN408>
        5.1.2. Hozzfrs korltozsa csoportok tagjai szmra <#AEN415>

    5.2. rs jog korltozsa DAV megoszts alatt <#AEN419>

6. Az SSL megvalstsa s hasznlata a HTTP forgalom biztonsgoss
ttelre <#ssl>

    6.1. Az SSL bemutatsa <#AEN433>

        6.1.1. Az SSL-ben hasznlt titkost algoritmusok <#AEN438>

    6.2. Teszt tanstvnyok <#AEN465>
    6.3. Tanstvnyok "zemi" hasznlatra <#AEN471>
    6.4. Hogyan generljuk a CSR-t? <#AEN475>
    6.5. A szerver titkos kulcsnak s tanstvnynak teleptse <#AEN499>
    6.6. A jelmondat (passphrase) eltvoltsa az RSA titkos kulcsbl
    <#AEN515>
    6.7. Trusted Certificate Authorities (Megbzott Tanstvny
    Hatsgok) <#AEN541>


    1. Bevezets

Jelen dokumentum clja, hogy felptsnk egy Apache + mySQL + PHP +
WebDAV -alap webes alkalmazsszervert, amely LDAP szerverek
hasznlatval vgzi az azonostst (authentication). A dokumentum
felfedi a titkostott LDAP tranzakcikezels egyes rszleteit is.

	*Megjegyzs:*
 	

ha brmilyen problmval tallkozol az Apache vagy valamely modul
teleptsnl, lpj kapcsolatba velem a <saqib@seagate.com
<mailto:saqib@seagate.com>> e-mail cmen.

------------------------------------------------------------------------


      1.1. Errl a dokumentumrl

Ez a doksi eredetileg 2001-ben kszlt. Azta szmos frissts s
bvts trtnt. Ksznet minden kzremkdnek a frisstsekrt s
javtsokrt.

Eme dokumentum XML kdja megtallhat a
http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.xml
webhelyen.

A dokumentum utols vltozata a
http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.html
honlapon tallhat.

------------------------------------------------------------------------


      1.2. Kzremkdk

Ha szeretnl kzremkdni a HOGYAN karbantartsban letltheted az XML
kdot a
http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.xml
webhelyrl, s elkldheted a frisstett kdot a saqib@seagate.com e-mail
cmre A SZERZK LISTJBAN S A VLTOZSOK TRTNETBEN A TE NEVEDDEL
:). Ez megknnyti szmomra a kapcsolatfelvtelt mindazokkal akik
frisstettk/javtottk a doksit. Ksznm.

------------------------------------------------------------------------


      1.3. Mi az Apache?

Az Apache egy nylt forrskd http szerver modern opercis
rendszerekre, amilyen a UNIX s a Windows NT. Http szolgltatsokat
nyjt a jelenlegi HTTP szabvnyoknak megfelelen.

Az Apache szabadon/ingyenesen letlthet a http://httpd.apache.org/
webhelyrl.

------------------------------------------------------------------------


      1.4. Mi a WebDAV?

A WebDAV egy Web enabled Distributed Authoring and Versioning, vagyis
Web alap Elosztott Szerzi s Vltozatnyilvntart rendszer.
Egyttmkdsi krnyezetet biztost azoknak a felhasznlknak, akik
szerkesztik/karbantartjk egy webszerver fjljait. Technikailag a DAV a
http protokoll kiterjesztse.

me egy rvid lers a DAV ltal biztostott bvtsekrl:

/ Fellrsi vdelem:/ Zrolsi s feloldsi mechanizmus az "elveszett
frissts" problma kikszblsre. A DAV protokoll mind a megosztott,
mind a kizrlagos zrolsokat tmogatja.

/Tulajdonsgok:/ Meta-adatok (cm, trgy, kszt, stb.)

/Nevek karbantartsa:/ Fjlok msolsa, tnevezse, mozgatsa s trlse.

/Hozzfrs-szablyozs (Access Control; AC):/ A hozzfrs korltozsa
bizonyos erforrsokhoz. Jelenleg a DAV felttelezi az AC megltt, s
nem biztost tl ers azonostsi mechanizmust.

/Vltozatnyilvntarts:/ Dokumentumok revzijnak nyilvntartsa. Mg
nem megvalstott.

------------------------------------------------------------------------


      1.5. Mi a PHP?

A PHP (rekurzv betsz "PHP: Hypertext Preprocessor"; "PHP: Hiperszveg
Elfeldolgoz") szleskren hasznlt, nyl forrskd, ltalnos cl
szkript-nyelv, amely klnsen Web-es fejlesztseknl alkalmazhat s
begyazhat a HTML-be.

A PHP megtallhat a http://www.php.net webhelyen.

------------------------------------------------------------------------


      1.6. Mi a mySQL?

A MySQL a legnpszerbb nylt forrskd SQL adatbzis-kezel, a MySQL
AB fejleszti, terjeszti s tmogatja.

A mySQL adatbzismotor letlthet a http://www.mysql.com/ webhelyrl.

------------------------------------------------------------------------


      1.7. Mire van szksgnk?

A cl elrshez szksges eszkzk:

   1.

      C Compiler, pldul GCC

   2.

      Apache 2 Web szerver

   3.

      LDAP Module az Apache-hoz

   4.

      iPlanet LDAP lib fjlok

   5.

      SSL motor

   6.

      PHP

   7.

      mySQL adatbzismotor

	*Megjegyzs:*
 	

Mindezen csomagok szabadon hozzfrhetk s letlthetk a Net-rl.

------------------------------------------------------------------------


      1.8. Felttelezsek

A dokumentum felttelezi, hogy a kvetkezk mr teleptve vannak a
rendszereden.

   1.

      gzip vagy gunzip - megtallhat a http://www.gnu.org webhelyen

   2.

      gcc s GNU make - megtallhat a http://www.gnu.org webhelyen

------------------------------------------------------------------------


      1.9. Magyar fordts

A magyar fordtst Kilin Magdolna <mailto:souly1@freemail.hu_NO_SPAM>
ksztette (2003.03.28). A lektorlst Szijjrt Lszl
<mailto:laca@janus.gimsz.sulinet.hu_NO_SPAM> vgezte el (2003.07.09).
Utoljra Daczi Lszl <mailto:dacas@freemail.hu_NO_SPAM> frisstette
(2003.08.06). Brmilyen fordtssal kapcsolatos szrevtelt a
linuxhowto@sch.bme.hu <mailto:linuxhowto@sch.bme.hu_NO_SPAM> cmre
kldjetek. A dokumentum legfrissebb vltozata megtallhat a Magyar
Linux Dokumentcis Projekt <http://tldp.fsf.hu/index.html> honlapjn.

------------------------------------------------------------------------


    2. Kvetelmnyek

Le kell tltennk s fordtanunk nhny csomagot. Ez a HOGYAN
elmagyarzza a fordtsi folyamatot, de tudnunk kell forrskdbl
telepteni.

------------------------------------------------------------------------


      2.1. Alapok

Szksgnk van Solaris-ra/Linuxra s GNU CC fordtra a gpen. A GNU
gnzip s GNU tar szintn szksges.

------------------------------------------------------------------------


      2.2. Apache 2.0.46

Az Apache egy HTTP szerver, Web-es alkalmazsok kiszolglsra
hasznljuk. Tltsd le az Apache 2.0.46 forrskdot a
http://www.apache.org/dist/httpd/ webhelyrl.

------------------------------------------------------------------------


      2.3. OpenSSL

Tltsk le az OpenSSL csomagot a http://www.openssl.org/source/
webhelyrl. A legutols verzit tltsk le. Az OpenSSL teleptst az SSL
knyvtrak mod_ssl fordtsra hasznljuk Apache-csal, valamint SSL
bizonytvnyok karbantartsra a webszerveren. Tltsk le az OpenSSL
forrskdot gzippelt fjlknt a /tmp/downloads knyvtrba.

------------------------------------------------------------------------


      2.4. iPlanet LDAP programknyvtr

Tltsk le az iPlanet LDAP SDK csomagot a
http://wwws.sun.com/software/download/products/3ec28dbd.html honlaprl.
Az iPlanet LDAP SDK csomagot fogjuk hasznlni, mert ez tartalmazza az
ldaps-hoz szksges programknyvtrakat (LDAP az SSL felett).

------------------------------------------------------------------------


      2.5. mod_auth_ldap

Az mod_auth_ldap csomagot az LDAP tmogats Apache-ba fordtsra fogjuk
hasznlni. Tltsk le a
http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap_apache2.html
honlaprl.

------------------------------------------------------------------------


      2.6. mySQL adatbzismotor

Tltsk le a soron kvetkez mySQL csomagot a
http://www.mysql.com/downloads/index.html honlaprl.

------------------------------------------------------------------------


      2.7. PHP

Tltsk le a PHP forrskdjt a http://www.php.net/downloads.php webhelyrl.

------------------------------------------------------------------------


    3. Telepts

Elszr ellenrizznk le nhny teleptsi felttel megltt, majd
kezdjk meg a teleptst.

------------------------------------------------------------------------


      3.1. Teleptsi felttelek

Az alkalmazsszerver tervnk szerinti teleptshez szksgesek az SSL
s LDAP programknyvtrak. Az SSL motorra is szksge van az Apach
2.x-nek, az SSL tanstvnyok kezelshez/hasznlathoz.

------------------------------------------------------------------------


        3.1.1. iPlanet LDAP SDK

Jelentkezznk be root felhasznlknt, a su parancs hasznlatval:

*$ su -*

Hozzuk ltre az /usr/local/iplanet-ldap-sdk.5 knyvtrat. Msoljuk az
ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar.gz fjlt a
/tmp/downloads knyvtrbl az /usr/local/iplanet-ldap-sdk.5 knyvtrba.


*# mkdir /usr/local/iplanet-ldap-sdk.5*
*# cp /tmp/downloads/ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar /usr/local/iplanet-ldap-sdk.5*
*# cd /usr/local/iplanet-ldap-sdk.5*
*# tar -xvf ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar*

Most az sszes szksges iPlanet LDAP lib fjlnak a megfelel
knyvtrban kell lennie.

------------------------------------------------------------------------


        3.1.2. OpenSSL motor

Ezutn az OpenSSL motort kell teleptennk.

Az OpenSSL az SSL/TLS protokoll nylt forrskd megvalstsa. Az
OpenSSL szksges az SSL tanstvnyok ltrehozshoz s kezelshez a
webszerveren. A telepts a lib fjlokhoz is szksges, ezeket az SSL
modul az Apache kiszolglsra hasznlja.

Lpjnk be abba a knyvtrba, ahova az OpenSSL forrskdjnak fjlait
tetted.

 *# cd /tmp/download*
*# gzip -d openssl.x.x.tar.gz*
*# tar -xvf openssl.x.x.tar*
*# cd openssl.x.x*
*# make*
*# make test*
*# make install*

A *make install* lefutsa utn az openssl futtathat fjlai az
/usr/local/ssl knyvtrban lesznek.

------------------------------------------------------------------------


      3.2. mySQL

A mySQL teleptse elg egyszer. A letlttt futtathat llomnyokat a
megfelel knyvtrba kell tenni.

Kezdetknt hozzunk ltre egy user:group csoportot a mysql dmon szmra,
majd msoljuk be a fjlokat a megfelel knyvtrakba.

 *# groupadd mysql*
*# useradd -g mysql mysql*
*# cd /usr/local*
*# gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf - *
*# ln -s full-path-to-mysql-VERSION-OS mysql*

Ezutn futtassuk az install_db szkriptet, s lltsuk be a fjlok
jogosultsgait.

 *# cd mysql*
*# scripts/mysql_install_db*
*# chown -R mysql .*

------------------------------------------------------------------------


        3.2.1. A mySQL indtsa

Most indtsuk el a mySQL kiszolglt a telepts ellenrzshez.

 *# bin/mysqld_safe --user=mysql &*

Ellenrizzk a mySQL dmon futst, a ps -ef parancs hasznlatval. A
kvetkez kimenetnek kell megjelennie:

*# ps -ef | grep mysql*
root      3237     1  0 May29 ?        00:00:00 /bin/sh bin/safe_mysqld
mysql     3256  3237  0 May29 ?        00:06:58 /usr/local/mysql/bin/mysqld --defaults-extra-file=/usr/local/mysql/data/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --pid-file=/usr/local/mysql/data/downloa

------------------------------------------------------------------------


        3.2.2. A mySQL lelltsa

A MySQL kiszolgl lelltshoz kvessk az albbi tmutatst:

*# cd /usr/local/mysql*
*# ./bin/mysqladmin -u root -p shutdown*

------------------------------------------------------------------------


        3.2.3. A Data Directory helynek meghatrozsa

A mySQL dmon minden informcit egy "Data Directory" nev knyvtrban
trol. Ha kvettk a fenti tmutatst, a Data Directory megtallhat az
/usr/local/mysql/data knyvtr alatt.

A Data Directory helynek meghatrozshoz hasznljuk a *mysqladmin*
segdprogramot, az albbi mdon:


*# /usr/local/mysql/bin/mysqladmin variables -u root --password={your_password} | grep datadir*

------------------------------------------------------------------------


      3.3. Apache 2.0

Kezdjnk nhny FLAGS belltsval a fordt szmra.

*# export LDFLAGS="-L/usr/local/iplanet-ldap-sdk.5/lib/ -R/usr/local/iplanet-ldap-sdk.5/lib/:/usr/local/lib"*
*# export CPPFLAGS="-I/usr/local/iplanet-ldap-sdk.5/include"*

Ezutn csomagoljuk ki az Apache 2.0 forrsfjlait, s futtassuk a
configure szkriptet.

*# cd /tmp/download*
*# gzip -d httpd-2.0.46.tar.gz *
*# tar -xvf httpd-2.0.46.tar*
*# cd httpd-2.0.46*
*#./configure --enable-so --with-ssl --enable-ssl --enable-rewrite --enable-dav*

Ezutn adjuk ki a make parancsot

*# make*
*# make install*

------------------------------------------------------------------------


        3.3.1. Az Apache indtsa

*# /usr/local/apache2/bin/apachectl start*

------------------------------------------------------------------------


        3.3.2. Az Apache lelltsa

*# /usr/local/apache2/bin/apachectl stop*

------------------------------------------------------------------------


      3.4. mod_auth_ldap

Csomagoljuk ki a modauthldap_apache2.tar.gz fjlt.

*cd /tmp/download*
*# gzip -d modauthldap_apache2.tar.gz*
*# tar -xvf modauthldap_apache2.tar*
*# cd modauthldap_apache2*

Most lltsuk be s teleptsk a mod_auth_ldap csomagot.

*# ./configure --with-apxs=/usr/local/apache2/bin/apxs  --with-ldap-dir=/usr/local/iplanet-ldap-sdk.5/*
*# make*
*# make install*

------------------------------------------------------------------------


      3.5. Tanstvny adatbzis az LDAPS:// rszre

Le kell tltennk a cert7.db s key7.db adatbzisokat a
http://www.xml-dev.com/xml/key3.db s
http://www.xml-dev.com/xml/cert7.db webhelyrl s el kell helyeznnk az
/usr/local/apache2/sslcert/ knyvtrban.

------------------------------------------------------------------------


      3.6. PHP

Csomagoljuk ki a PHP forrsfjlokat.

*gzip -d php-xxx.tar.gz*
*tar -xvf php-xxx.tar*

lltsuk be, majd futtassuk a make parancsot.

*cd php-xxx*
*./configure --with-mysql --with-apxs=/usr/local/apache2/bin/apxs*

Fordtsuk le a forrskdot.

*# make *
*# make install*

Msoljuk a php.ini fjlt a megfelel knyvtrba.

*cp php.ini-dist /usr/local/lib/php.ini*

------------------------------------------------------------------------


    4. A WebDAV szolgltatsok teleptse s belltsa

Ez egy knny rsz. Ebben a fejezetben engedlyezni fogjuk a WebDAV
szolgltatst az Apache egy fknyvtrban.

------------------------------------------------------------------------


      4.1. Mdostsok az /usr/local/apache/conf/httpd.conf fjlban

Ellenrizzk a kvetkez Apache direktvk megltt az
/usr/local/apache/conf/httpd.conf fjlban:


  Addmodule mod_dav.c

Amennyiben nincs benne, adjuk hozz. Ez jelzi az Apache szmra a DAV
kpessg megltt. A direktvt mindenkpp kontneren (container) kvl
kell elhelyezni.

Ezt kveten meg kell adnunk azt, hogy az Apache hol trolja a DAVLockDB
fjlt. Ez egy zrolsi adatbzis a WebDAV-hoz, ezt rhatv kell tennnk
a httpd processz szmra.

A DAVLock fjlt n az /usr/local/apache/var knyvtrban trolom. n ezt
a knyvtrat ms clokra is hasznlom. Adjuk hozz a kvetkez sort az
/usr/local/apache/conf/httpd.conf fjlhoz, annak megadshoz, hogy a
DAVLockDB fjl az /usr/local/apache/var knyvtrban van:


  DAVLockDB      /usr/local/apache/var/DAVLock 

Az utastst a troln kvl helyezzk el.

------------------------------------------------------------------------


      4.2. Egy DAVLockDB knyvtr ltrehozsa

Mint fent emltettem, egy knyvtrat kell ltrehoznunk a DAVLockDB fjl
szmra, majd rhatv kell tennnk a webszerver folyamat szmra.
ltalban a webszerver folyamat "/nobody/" felhasznli nven fut.
Ellenrizzk ezt a kvetkez parancs hasznlatval:

*ps -ef | grep httpd*

Az /usr/local/apache alatt hozzunk ltre egy knyvtrat, s lltsuk be
a hozzfrsi jogokat, a kvetkez parancsok hasznlatval:


  *# cd /usr/local/apache*
  *# mkdir var*
  *# chmod -R 755 var/*
  *# chown -R nobody var/*
  *# chgrp -R nobody var/*

------------------------------------------------------------------------


      4.3. A DAV engedlyezse

A DAV engedlyezse pofonegyszer. Az Apache fknyvtra alatti knyvtr
DAV engedlyezshez, adjuk hozz annak a bizonyos knyvtrnak a
troljhoz a kvetkez direktvt:


  DAV On

Ez engedlyezi a DAV-ot arra a knyvtrra s alknyvtraira.

A kvetkez plda bellts engedlyezi a DAV s LDAP
azonostst/hitelestst az /usr/local/apache/htdocs/DAVtest knyvtrra.
Rakjuk be az /usr/local/apache/conf/httpd.conf fjlba.


 DavLockDB /tmp/DavLock
<Directory "/usr/local/apache2/htdocs/DAVtest">
Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthName "SMA Development server"
AuthType Basic
LDAP_Debug On
#LDAP_Protocol_Version 3
#LDAP_Deref NEVER
#LDAP_StartTLS On
LDAP_Server you.ldap.server.com 
#LDAP_Port 389
# Ha az SSL aktv, meg kell hatroznunk az LDAP SSL portot, ez ltalban 636
LDAP_Port 636
LDAP_CertDbDir /usr/local/apache2/sslcert
Base_DN "o=SDS"
UID_Attr uid
DAV On
#require valid-user
require valid-user
#require roomnumber "123 Center Building"
#require filter "(&(telephonenumber=1234)(roomnumber=123))"
#require group cn=rcs,ou=Groups
</Directory>

------------------------------------------------------------------------


      4.4. Egy "DAVtest" nev knyvtr ltrehozsa

Mint egy korbbi rszben emltettem, minden DAV knyvtrnak rhatnak
kell lennie a webszerver folyamat ltal. Ebben a pldban felttelezzk,
hogy a webszerver "/nobody/" nv alatt fut. Ez az ltalnos. A
felhasznl megtekintshez (akinek neve alatt a webszerver fut)
hasznljuk a

*# ps -ef | grep httpd*

parancsot.

Hozzunk ltre egy tesztknyvtrat "DAVtest" nven az
/usr/local/apache2/htdocs knyvtr alatt:

*# mkdir /usr/local/apache/htdocs/DAVtest*

Vltoztassuk meg a hozzfrsi jogokat a knyvtrban, az legyen
rhat-olvashat a httpd folyamat szmra. Felttelezve, hogy a httpd
"/nobody/" felhasznlnv alatt fut, hasznljuk a kvetkez parancsokat:


  # cd /usr/local/apache/htdocs
  # chmod -R 755 DAVtest/
  # chown -R nobody DAVtest/
  # chgrp -R nobody DAVtest/

------------------------------------------------------------------------


      4.5. Az Apache jraindtsa

Vgl le kell futtatnunk az Apache-hoz mellkelt konfigurcis
tesztrutint, a httpd.conf fjl szintaxisnak ellenrzshez:

*# /usr/local/apache/bin/apachectl configtest*

Ha hibazenetet kapunk, akkor ellenrizzk le, hogy minden utastst
helyesen kvettnk-e. Ha nem tudod kitallni a hiba okt, rj nekem (a
hibazenetet is rd meg) a saqib@seagate.com <mailto:saqib@seagate.com>
e-mail cmre.

Ha a konfigurci tesztje sikeres, indtsuk el az Apache webszervert:

*# /usr/local/apache/bin/apachectl restart*

Most van egy WebDAV engedlyezett Apache szervernk LDAP hitelestssel
s SSL titkostssal.

------------------------------------------------------------------------


      4.6. A WebDAV protokoll tesztelse

Nagyon fontos, hogy a most teleptett WebDAV teljesen sszhangban legyen
a WebDAV-2 protokollal. Ha nem teljesen kompatibilis, akkor a WebDAV
alkalmazsok kliens oldala nem fog rendesen mkdni.

A kompatibilits tesztelshez a Litmus nev eszkzt hasznljuk. A
Litmus a WebDAV protokoll tesztelje, amely azt vizsglja, hogy
sszhangban van-e egy szerver az RFC2518-ben lert WebDAV protokollal.

Tltsk le a Litmus forrskdjt a http://www.webdav.org/neon/litmus/
webhelyrl, majd msoljuk be a /tmp/downloads knyvtrba.

Hasznljuk a gzip s tar programokat a kicsomagolshoz:


*# cd /tmp/downloads*
*# gzip -d litmus-0.6.x.tar.gz*
*# tar -xvf litmus-0.6.x.tar*
*# cd litmus-0.6.x*

A Litmus fordtsa s teleptse egyszer:


*# ./configure*
*# make*
*# make install*

A *make install* parancs a binris fjlokat az /usr/local/bin, a sg
fjljait pedig az /usr/local/man knyvtrba teszi.

A most teleptett WebDAV szerver tesztelshez hasznljuk a


*# /usr/local/bin/litmus http://you.dav.server/DAVtest userid passwd*

parancsot.

------------------------------------------------------------------------


    5. A WebDAV szerver zemeltetse

Ebben a rszben megvitatjuk a klnbz kezelsi feladatokat - pldul
LDAP belps ellenrzse, s hogyan dolgozunk Apache-on DAV mdszerrel.

A legtbb konfigurcis vltozst a DAV-hoz a httpd.conf fjl
hasznlatval tesszk. Ez a fjl az /usr/local/apache/conf/httpd.conf
knyvtrban tallhat.

A httpd.conf egy szveges konfigurcis fjl, amelyet az Apache hasznl.
Szerkesztshez brmely szvegszerkesztt hasznlhatjuk, n leginkbb a
vi-t szoktam. Ksztsnk egy msolatot errl a fjlrl, mieltt
megvltoztatjuk.

Miutn a httpd.conf fjlban elvgeztk a vltoztatsokat, az Apache
szervert jra kell indtani az */usr/local/apache/bin/apachectl restart*
paranccsal. Mieltt jraindtannk, teszteljk a httpd.conf
rvnyessgt az * /usr/local/apache/bin/apachectl configtest * paranccsal.

------------------------------------------------------------------------


      5.1. A DAV megosztott hozzfrsnek korltozsa

Az elz rszben, amikor ltrehoztuk a DAVtest megosztst, az LDAP-ot
hitelestsi clbl hasznltuk. Azonban brki, aki hitelesti magt, az
LDAP- ot hasznlva a felhasznli azonostjval/jelszavval,
hozzfrhet ahhoz a mapphoz.

A *require* direktva hasznlatval a httpd.conf fjlban limitlhatjuk
adott egynek vagy csoportok hozzfrst.

Ha megnzzk a DAVtest konfigurcit az elz rszbl :


  <Directory /usr/local/apache/htdocs/DAVtest>
  Dav On
  #Options Indexes FollowSymLinks

  AllowOverride None
  order allow,deny
  allow from all
  AuthName "LDAP_userid_password_required"
  AuthType Basic
  <Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
  Require valid-user
  </Limit>
  LDAP_Server ldap.server.com
  LDAP_Port 389
  Base_DN "o=ROOT"

  UID_Attr uid
  </Directory>

Lthatjuk, hogy a *require* direktva rtke *valid-user*. Ami azt
jelenti, hogy brmely hitelestett felhasznlnak hozzfrse van ahhoz
a mapphoz.

------------------------------------------------------------------------


        5.1.1. Hozzfrs korltozsa egyni UID alapjn

LDAP UID-t is hasznlhatjuk a DAV mappa hozzfrsnek korltozsra.

A *require valid-user* direktva megvltoztathat *require user 334455
445566* rtkre.

Ez a 334455 s 445566 UID-vel rendelkez felhasznlkra korltozza a
hozzfrst. Senki msnak nem lesz hozzfrse ehhez a mapphoz.

------------------------------------------------------------------------


        5.1.2. Hozzfrs korltozsa csoportok tagjai szmra

A *require* direktvt hasznlhatjuk csoportok tagjai hozzfrsnek
korltozsra. Ezt megtehetjk az LDAP csoportok vagy az LDAP szrk
hasznlatval. A szrt az LDAP filter szintaxis szerint kell felpteni.

------------------------------------------------------------------------


      5.2. rs jog korltozsa DAV megoszts alatt

Lehetsges a DAV megosztsok forrsainak szerkesztst bizonyos
szemlyekre korltozzuk, mindemellett brki megnzheti ezeket az
erforrsokat (pldul fjlokat - dacas). Ezt knnyen tehetjk a *
<Limit>* cmke hasznlatval a httpd.conf fjlban.


  <Directory /usr/local/apache/htdocs/DAVtest>
  Dav On
  #Options Indexes FollowSymLinks

  AllowOverride None
  order allow,deny
  allow from all
  AuthName "LDAP_userid_password_required"
  AuthType Basic
  <Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
  Require valid-user
  </Limit>
  LDAP_Server ldap.server.com
  LDAP_Port 389
  Base_DN "o=ROOT"

  UID_Attr uid
  </Directory>

A *<limit>* megvltoztatsval korltozhatjuk adott szemly rsi jogt:


  <Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
  Require 334455
  </Limit>

Alapveten korltozzuk a 334455 UID-vel rendelkez felhasznl PUT POST
DELETE PROPPATH MKCOL COPY MOVE LOCK s az UNLOCK jogt. Mindenki ms
kpes lesz hasznlni a GET s PROPFIND mdszert a forrsokon, de mst nem.

------------------------------------------------------------------------


    6. Az SSL megvalstsa s hasznlata a HTTP forgalom biztonsgoss
    ttelre

Manapsg a fjlszerveren trolt adatok biztonsga nagyon fontos. A
kompromittlt adatok tbb ezer dollrba is kerlhetnek egy trsasgnak.
Az utols rszben LDAP hitelestsi modult fordtottunk az Apache-ba,
hogy biztostsuk a hitelestsi mechanizmust. Br a HTTP forgalom nem
igazn biztonsgos, s minden adat tiszta szvegknt jelenik meg - ez
azt jelenti, hogy az LDAP hitelests (userid/passwd) ugyancsak tiszta
szvegknt megy t. Ez problmt okozhat. Brki kutathat ezen
userid/passwd prosok utn s hozzfrhet a DAV llomnyhoz. Ennek
megelzshez titkostanunk kell a HTTP forgalmat, valjban a HTTP+SSL
vagy HTTPS segtsgvel. Brmi, ami tmegy a HTTPS-en, titkostott lesz,
gy az LDAP userid/passwd-ben nem kutakodhatnak. A HTTPS a 443-as porton
fut. Az elz rsz fordtsi folyamatnak eredmnyeknt az Apache
mindkt porton, a 80-ason (norml HTTP) s 443-ason (HTTPS) is fut. Ha
csak a DAV-hoz hasznlod majd a szervert, akkor ersen ajnlott bezrni
a 80-as portot. A HOGYAN ezen rszben nhny informcit nyjtok az
SSL-rl s annak zemeltetsrl egy Apache HTTP szerveren.

------------------------------------------------------------------------


      6.1. Az SSL bemutatsa

Az SSL (Secure Socket Layer; Biztonsgi Alrteg) egy protokoll rteg,
amely a hlzati (Network layer) s az alkalmazsi rtegek (Application
layer) kztt van. Mint neve is sugallja, az SSL mindenfle forgalom
titkostsra hasznlhat - LDAP, POP, IMAP s legfkpp HTTP.

me egy vgletekig leegyszerstett bra az SSL-el kapcsolatban ll
rtegekrl.



	+-------------------------------------------+
	|   LDAP   |    HTTP    |   POP   |   IMAP  |
	+-------------------------------------------+
	|                   SSL                     |
	+-------------------------------------------+
	|      Hlzati rteg (Network Layer)       |
	+-------------------------------------------+
	

------------------------------------------------------------------------


        6.1.1. Az SSL-ben hasznlt titkost algoritmusok

Hromfle titkostsi technolgit hasznlnak az SSL-ben:
"nyilvnos-titkos kulcs" (Public-Private Key), "szimmetrikus kulcs"
(Symmetric Key), s "zenet ellenrzs" (Message Digest).

*"Nyilvnos-titkos kulcs" titkosts - SSL kapcsolat indtsa: * Ebben
az algoritmusban a titkosts s a visszafejts nyilvnos-titkos
kulcsprral trtnik. A webszerver a titkos kulcs, a nyilvnos kulcsot
pedig a tanstvnyban kldi el a kliensnek.

   1.

      A kliens kri a HTTPS-t hasznl Web szervertl a tartalmat.

   2.

      A web szerver vlaszol a Tanstvnnyal, amiben benne van a
      szerver nyilvnos kulcsa.

   3.

      A kliens ellenrzi, hogy lejrt-e a tanstvny.

   4.

      Ezutn a kliens ellenrzi, hogy a Tanstvny Hatsg (Certificate
      Authority; tovbbiakban CA), amely alrta a tanstvnyt,
      megbzott hatsg-e a bngsz listjn. Ez a magyarzata annak,
      mirt van szksgnk egy megbzott CA-tl kapott a tanstvnyra.

   5.

      A kliens ellenrzi, hogy a webszerver domain neve megegyezik-e a
      tanstvnyon lv kznsges nvvel (Common Name).

   6.

      Ha minden megfelel, ltrejn az SSL kapcsolat.

	*Megjegyzs:*
 	

Brmi, amit titkos kulccsal titkostottak, kizrlag a nyilvnos
kulccsal fejthet vissza. Ennek megfelelen, brmilyen nyilvnos
kulccsal titkostott dolog, kizrlag a titkos kulccsal fejthet vissza.
Elterjedt az a tvhit, miszerint kizrlag nyilvnos kulccsal lehet
titkostani s titkos kulccsal visszafejteni. Ez nem gy van. Brmelyik
kulcs hasznlhat titkostsra s visszafejtsre egyarnt (ha annak
prjt hasznljk visszafejtsre s titkostsra - dacas). Vgl is, ha
az egyik kulcsot hasznltk titkostsra, a msikat kell hasznlni a
visszafejtsre stb. Egy zenet nem titkosthat s visszafejthet
kizrlag a nyilvnos kulcs hasznlatval.

/A titkos kulccsal trtn titkosts s a nyilvnos kulccsal trtn
visszafejts biztostk a cmzetteknek arrl, hogy a kldemnyt a kld
(a titkos kulcs tulajdonosa) adta fel (mivel a titkos kulcs
hasznlathoz szksges jelmondatot csak  ismeri - dacas). A nyilvnos
kulccsal trtn titkosts s titkos kulccsal visszafejts biztostja
azt, hogy a kldemnyt csak a meghatrozott cmzett (a titkos kulcs
tulajdonosa) kpes visszafejteni./

*Szimmetrikus titkosts - az adatok tulajdonkppeni tvitele*: Miutn
az SSL kapcsolat ltrejtt, szimmetrikus titkostst hasznl az adatok
titkostsra, a CPU ciklusait felhasznlva. Szimmetrikus titkostskor
az adat ugyanazzal a kulccsal titkosthat s visszafejthet. A
szimmetrikus titkosts kulcsa a kapcsolat indtsakor kerl tadsra, a
nyilvnos-titkos kulcsprral trtn titkosts alatt.

*zenet ellenrzs* A szerver kivonatot kszt az zenetrl valamilyen
algoritmus szerint, mint pldul HMAC, SHA, MD5. Ezek alapjn ellenrzi
az adatok srtetlensgt.

------------------------------------------------------------------------


      6.2. Teszt tanstvnyok

Az Apache fordtsa kzben ltrehoztunk egy teszt tanstvnyt. A
mod-ssl csomagban lv makefile programot hasznltuk az egyni
Tanstvny ltrehozshoz. Erre a

*# make certificate TYPE=custom*

parancsot hasznltuk.

Ezt a tanstvnyt tesztelsi clokra hasznlhatjuk.

------------------------------------------------------------------------


      6.3. Tanstvnyok "zemi" hasznlatra

"zemi" hasznlathoz szksgnk lesz egy tanstvnyra valamely
Certificate Authority-tl (Tanstvny Hatsg) (ezentl CA). A CA-k a
tanstvnyt ruba bocstk, akik egy megbzhat CA listn vannak a
felhasznl bngsz kliensben. Mint azt az algoritmus titkosts
rszben emltettem, ha a CA nincs a megbzott hatsgok listjn, a
felhasznl figyelmeztet zenetet kap, amikor megprbl kapcsoldni egy
biztostott/biztonsgos helyhez.

Hasonlan a teszt tanstvnyokhoz, ez is kld egy figyelmeztet
zenetet a felhasznl bngszjnek.

------------------------------------------------------------------------


      6.4. Hogyan generljuk a CSR-t?

A CSR (TAK) vagy Certificate Signing Request-et (Tanstvny Alrsi
Krelem) el kell kldeni egy megbzott CA-nak alrsra. Ez a rsz
foglalkozik azzal, hogyan hozzunk ltre CSR-t, s kldjk egy ltalunk
kivlasztott CA-nak.


*# cd /usr/local/apache/conf/*
*# /usr/local/ssl/bin/openssl req -new -nodes -keyout private.key -out public.csr*
Generating a 1024 bit RSA private key
............++++++
....++++++
writing new private key to 'private.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:California
Locality Name (eg, city) []:San Jose
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Seagate
Organizational Unit Name (eg, section) []:Global Client Server
Common Name (eg, YOUR name) []:xml.seagate.com
Email Address []:saqib@seagate.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:badpassword
An optional company name []:

	*"PRNG not seeded" zenet*
 	

Ha nincs /dev/random knyvtr a rendszernkn, /"PRNG not seeded" /
hibazenetet kapunk. Ebben az esetben adjuk ki a kvetkez parancsot:

*# /usr/local/ssl/bin/openssl req -rand some_file.ext -new -nodes -keyout private.key -out public.csr *

A "some_file.ext" rszt cserljk ki egy rendszernkn ltez fjl
nevre. Brmilyen fjlt megadhatunk. Az Openssl ezt fogja vletlen szm
generlshoz hasznlni.

Ezen a ponton pr krdst tesz fel a szerver helyrl, hogy generlhassa
a Certificate Signing Request-et.

Megjegyzs: A Kznsges Neved a DNS neve a webszerverednek, pldul
dav.server.com. Ha mst runk oda, akkor NEM fog mkdni. Jegyezzk meg
a hasznlt jelszt, a jvbeli hasznlat rdekben.

Mihelyst befejezdtt a folyamat, lesz egy private.key s egy public.csr
fjlunk. Szksg lesz a public.csr fjlt bemutatnunk a CA-nak. Ekkor a
public.key fjl mg nem titkostott. A titkostshoz hasznljuk az

 *# mv private.key private.key.unecrpyted*
*# /usr/local/ssl/bin/openssl rsa -in private.key.unecrpyted -des3 -out private.key*

parancsokat.

------------------------------------------------------------------------


      6.5. A szerver titkos kulcsnak s tanstvnynak teleptse

Miutn a CA feldolgozta a krsnk, visszakldenek egy kdolt
tanstvnyt. Ezt kell elhelyeznnk a szerveren, s belltanunk az
Apache-ban ennek helyt.

Pldul a titkos kulcsot az /usr/local/apache2/conf/ssl.key/ knyvtrba,
a tanstvnyt pedig az /usr/local/apache2/conf/ssl.crt/ knyvtrba.

Msoljuk le a tanstvnyt egy server.crt nev fjlba, az
/usr/local/apache2/conf/ssl.crt/ knyvtrba.

Az elz lpsben generlt private.key fjlt helyezzk az
/usr/local/apache2/conf/ssl.key/ knyvtrba

Ezutn mdostsuk az /usr/local/apache2/conf/ssl.conf fjlt, hogy a
megfelel titkos kulcsra s tanstvnyra mutasson:


#   Server Certificate:
#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that a kill -HUP will prompt again.  Keep
#   in mind that if you have both an RSA and a DSA certificate you
#   can configure both in parallel (to also allow the use of DSA
#   ciphers, etc.)
*SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt*
#SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server-dsa.crt

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
*SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/private.key*
#SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server-dsa.key

------------------------------------------------------------------------


      6.6. A jelmondat (passphrase) eltvoltsa az RSA titkos kulcsbl

A webszerveren trolt RSA titkos kulcs ltalban titkostott, ezrt
szksgnk van egy jelmondatra a hasznlathoz. Ezrt kr jelmondatot,
mikor az Apache-ot modssl-el indtjuk:


*# apachectl startssl*
*Apache/1.3.23 mod_ssl/2.8.6 (Pass Phrase Dialog)*
*Some of your private key files are encrypted for security reasons.*
*In order to read them you have to provide us with the pass phrases.*
*Server your.server.dom:443 (RSA)*
*Enter pass phrase:*

Az RSA titkos kulcs titkostsa nagyon fontos. Ha valaki megkaparintja a
"titkostatlan RSA titkos kulcsot", akkor knnyen eltulajdonthatja a
webszervert. Ha a kulcs titkostott, az illet nem tud semmit tenni a
jelmondat nlkl, hacsak "nyers ervel" (brute force) fel nem tri.
Hasznljunk ers (rtsd: hossz) jelmondatot erre a clra.

A kulcs titkostsa nha kellemetlensg forrsa is lehet, mivel a
webszerver minden indtsakor kri a jelmondatot. Klnsen ha rc
szkripteket hasznlunk, a webszerver rendszerindtskor trtn
betltshez. A jelmondat bekrse problmt okozhat, mivel meglltja a
folyamatot, bemenetre vr.

Knnyen megszabadulhatunk a jelmondattl, ha visszafejtjk (decrypt) a
kulcsot. Bizonyosodjunk meg arrl, hogy senki se szerezheti meg a
kulcsot. Vegyk figyelembe a biztonsgi s vdelmi ajnlsokat, mieltt
visszafejtjk a kulcsot a webszerveren.

A kulcs visszafejtsnek mdja:

Elszr ksztsnk msolatot a titkostott kulcsrl

*# cp server.key server.key.cryp*

aztn rjuk jra a kulcsot titkostssal. Krni fogja tlnk az eredeti
titkostott kulcs jelmondatt:

*# /usr/local/ssl/bin/openssl rsa -in server.key.cryp -out server.key*
read RSA key
Enter PEM pass phrase:
writing RSA key

me egy mdja annak, miknt biztostsuk a visszafejtett titkos kulcsot.
gy csak a root felhasznl olvashatja:


*# chmod 400 server.key*

------------------------------------------------------------------------


      6.7. Trusted Certificate Authorities (Megbzott Tanstvny Hatsgok)

me a Certificate Authorities (Tanstvny Hatsgok) listja, amelyeket
a klnbz bngszk megbzhatnak minstenek:

   1.

      Baltimore <http://www.baltimore.com/>

   2.

      Entrust <http://www.entrust.com/>

   3.

      Thawte <http://www.thawte.com>

   4.

      Verisign <http://www.verisign.com>

