Next: Az Apache fordítása Up: Az Apache konfigurálása Previous: AddType és AddHandler   Tartalomjegyzék


5.5.4        A MASCO Kft. httpd.conf fájljának beállításai

A következőkben a MASCO Kft-hez hangolom a rendszert. A cégnek profilja szerint két divíziója van: egy biztonságtechnikai és egy nyílászáró automatizálási részleg. Mivel a két divízió eléggé különböző piaccal, PR-el és termékkel rendelkezik, ezért két külön Web-helyet hozunk létre nekik. A „fő” Web-hely a cég általános információit tartalmazza és linkeket a két másik, specifikusabb hely felé. Mivel jelen esetben csak egy IP címet vásároltunk, ezért az Apache NameVirtualHost funkcióját fogjuk használni. Így képesek leszünk arra, hogy a kliens böngészője által kért Web-helyet adjuk vissza neki név szerint. Mivel az egyetlen IP címünket lefogja a NameVirtualHost, ezért a fő Web-szerver nem fog szolgáltatni ezen, csak a hurok interfészen. Ezért három virtuális szervert készítünk. Egy a főcég és kettő a két divízió tartalmát tárolja és szolgáltatja.

 Az alapbeállítás szerint az Apache csomag csak a 80-as portot használja. Mi azonban azt szeretnénk, hogy a 443-as porton SSL szolgáltatást is nyújtson a rendszer. Ha az SSL kapcsolatot akarjuk igénybe venni, akkor a http://www.masco.hu/ helyett a https://www.masco.hu/ címen kell a szerverhez fordulni.

Nem csak azokat a beállításokat fogom felsorolni, melyeket meg kell változtatni, hanem nagyrészt azokat is, melyek alapbeállításai jók. Ezt azért teszem, hogy az olvasó minél könnyebben megértse a paraméterek jelentését, és szükség szerint finomhangolhassa azt saját igényeihez. A paramétereket kommentezett megjegyzésekkel próbálom érthetővé tenni.

# - Általános beállítások----------------------------------------

ServerType Standalone       # a szerver indításkor betöltődik, nem az inetd indítja

#Port 443                   #

#Port 80                    #

Listen 443                  # ezeket a portokat figyelje a szerver, ez a https port

Listen 80                   # ez a szabványos http port

HostNameLookups off         # ne keresse meg a kliens nevét, elég az IP címe

                            # a DNS keresés nagyon lelassíthatja a működést

User nodoby

Group nobody                # milyen jogokkal fusson a szerver, semmiképp se root!

ServerAdmin admin@masco.hu # ide küldje a leveleket hiba esetén

ServerRoot /etc/httpd                 # hol vannak a konfig’ fájlok

BindAddress 212.108.200.69 # ezen a címen vagyunk elérhetőek (ha esetleg több

                                      # IP címünk is lenne – több hálókártya )

NameVirtualHost 212.108.200.69:80     # virtuális szervereink ezt az IP címet fogják

NameVirtualHost 212.108.200.69:443    # figyelni a 80-as és 443-as portokon

# ServerName                # mi legyen a fő szerver neve? - erre itt nincs szükség

UseCanonicalName on         # linkek kiegészítése a saját névvel

Timeout 300                 # kacsolat bontása másodpercben

KeepAlive on                # tartós kapcsolatok fenntartása a kliensekkel

MaxKeepAliveRequests 100    # hány db kérést tartson fenn

KeepAliveTimeout 15         # Mennyi másodpercig tartsa fenn a kapcsolatot

MinSpareServers 5           # Minimálisan hány “felesleges” szerver fusson

MaxSpareServers 10          # Maximálisan hány “felesleges” szerver fusson

StartServers 8              # Induláskor hány szervert indítson el

MaxClients 150              # Maximálisan hány kapcsolat élhet

MaxRequestsPerChild 100     # 100 kérés teljesítése után “megöli” a gyermek processzt

#---------------------- Modulok ---------------------------------

# Melyik modulokat töltsük be? Azokat, amelyeket én nem láttam szükségesnek

# kikommenteztem. Ha az olvasónak szüksége van valamelyikre, válasszon tetszés

# szerint

# A virtuális szerverek álnév támogatása

LoadModule vhost_alias_module modules/mod_vhost_alias.so

# Környezeti változók átadása CGI script-eknek

# LoadModule env_module modules/mod_env.so

# Testre szabható naplózás

LoadModule config_log_module modules/mod_log_config_ssl.so

# Objektum típus megállapítása tartalomból

LoadModule mime_magic_module modules/mod_mime_magic.so

# Objektumtípus  megállapítása fájlkiterjesztésből

LoadModule mime_module modules/mod_mime_ssl.so

# Tartalom “tárgyalás”

LoadModule negotiation_module modules/mod_negotiation.so    

# a szerver állapotának megjelenítése weblapként (autentikáció szükséges)       

LoadModule status_module modules/mod_status.so

# Szerver beállítási információk

LoadModule info_module modules/mod_info.so     

# Szerveroldalon előállított objektumok

LoadModule includes_module modules/mod_include.so                 

# Automatikus könyvtár listázás

LoadModule autoindex_module modules/mod_autoindex.so               

# Alapszintű könyvtárkezelés

LoadModule dir_module modules/mod_dir.so  

# CGI script-ek meghívása

#LoadModule cgi_module modules/mod_cgi.so                          

# Az “.asis” fájl kezelő

# LoadModule asis_module modules/mod_asis.so                        

# Kép-térkép fájlkezelő

# LoadModule imap_module modules/mod_imap.so                        

 

# A felhasználók könyvtárait kezeli (listázás, letöltés)

# LoadModule userdir_module modules/mod_userdir.so

# HTTP gyorsítótár

# LoadModule proxy_module modules/libproxy.so                      

# Álnevek és átirányítások

LoadModule alias_module modules/mod_alias.so                       

# Az access.conf értelmezéséhez

LoadModule access_module modules/mod_access.so                     

# Felhasználó azonosítás szöveg fájlokkal

LoadModule auth_module modules/mod_auth.so                      

# ftp stílusú anonimusz felhasználó azonosítás

# LoadModule anon_auth_module modules/mod_auth_anon.so             

# felhasználó azonosítás DBM fájlokkal

# LoadModule dbm_auth_module modules/mod_auth_dbm.so    

# felhasználó azonosítás a  Berkeley-féle DB (adatbázis) fájlokkal

# LoadModule db_auth_module modules/mod_auth_db.so                 

# MD5 felhasználó azonosítás

LoadModule digest_module modules/mod_digest.so                    

# Fejlécek erőforrásokhoz (pl. meddig érvényes egy oldal)

LoadModule expires_module modules/mod_expires.so   

# Tetszőleges HTTP fejlécek beépítése

LoadModule headers_module modules/mod_headers.so                  

# Felhasználó-követés sütik segítségével

# LoadModule usertrack_module modules/mod_usertrack.so              

# Környezeti változók beállítása kliens információk alapján

LoadModule setenvif_module modules/mod_setenvif.so   

# A fontos PHP3 modul

LoadModule php3_module modules/libphp3.so                           

# A Perl modul

# LoadModule perl_module modules/libperl.so

# Itt töltődik be az ssl modul

LoadModule ssl_module    modules/libssl.so    

 

#----- Naplózás -----------------------------------------------------------

# itt tárolja induláskor a folyamat azonosító számát

PidFile /var/run/httpd.pid

ErrorLog /var/log/httpd/error.log     # A hibaüzenetek ide menjenek

LogLevel warn               # mit loggoljon? debug/info/notice/warn/error/crit

# mi legyen a naplózás formája?

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %v" full   

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined     

LogFormat "%h %l %u %t \"%r\" %>s %b" common                                          

LogFormat "%{Referer}i -> %U" referer                                                 

LogFormat "%{User-agent}i" agent

 

# Egyéni naplófájlok:

# Vigyázat! Ha nagy a forgalom nagyra dagadhat a fájl. Biztonsági szempontból

# előnyös, hiszen minden egyes kérés naplózva lesz IP címmel. Ha támadás gyanú van,

# akkor mindenképp kapcsoljuk be. Továbbá a statisztikákat is ezekből készítjük.

CustomLog /var/log/httpd/access.log common  # naplózhatjuk a hozzáférést is

# Ezzel naplózzuk azt az oldalt, ahonnan idelépett a kliens

# CustomLog /var/log/httpd/referer.log referer

A kliens böngészőinformációit naplózza                            

# CustomLog /var/log/httpd/agent.log agent                                         

 

# SSL beállítások --------------------------------

#  SSL Globális környezet

AddType application/x-x509-ca-cert .crt        # A tanúsítvány mint fájl típus

AddType application/x-pkcs7-crl    .crl

SSLPassPhraseDialog  builtin            # Ezt célszerű így hagyni.

 

# Szerver gyorsító a kulcsok számára

SSLSessionCache         dbm:logs/ssl_scache    # Gyorsító

SSLSessionCacheTimeout  300                    # Időzítő

SSLMutex  file:logs/ssl_mutex                  #

SSLRandomSeed startup builtin                  #

SSLRandomSeed connect builtin                  #

 

#   Logging:

SSLLog      logs/ssl_engine_log

SSLLogLevel info

SSLCertificateFile      conf/server.crt        # A szerver igazolása

SSLCertificateKeyFile   conf/server.key        # A szerver kulcs fájlja

SSLCACertificatePath    conf/ssl.crt           # A szerver CA igazolásának helye

SSLCACertificateFile    conf/ssl.crt/ca.crt    # A szerver CA igazolása

 

# SSLVerifyClient beállításai

# 0 ha nincs szükség igazolásra

# 1 ha a kliens adhat igazolást

# 2 ha a kliensnek kötelező az igazolás

SSLVerifyClient 0                              # A kliens ellenőrzés típusa

SSLVerifyDepth  10

 

# SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars

 

# SSL tranzakciók naplózása

CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

 

                                                                                      

# ---Virtuális gépek ------------------------

# Itt definiáljuk a két tevékenységi kör külön oldalait

<VirtualHost www.masco.hu:80>         # virtuális szerver ezen a néven a 80-as porton

#ServerAdmin                          # lehetne külön webmestere mindnek

SSLDisable                            # itt kikapcsoljuk az SSL-t

DocumentRoot /home/masco/httpd/html   # mindenkinek a saját gyökerét

ServerName www.masco.hu     # és a saját nevét adjuk meg

ServerAlias masco.hu *.masco.hu # az erre hivatkozókat is ide irányítjuk

# külön is kérhetjük a log-okat.

ErrorLog /var/log/httpd/masco-error.log

# Az összes kérést és forgalmat is lehet külön naplózni,

# ebből készülnek a statisztikák.

CustomLog /var/log/httpd/masco-access.log common

#TransferLog /var/log/httpd/masco-access.log

</VirtualHost>

 

<VirtualHost www.masco.hu:443>        # ugyanazt kikínáljuk SSL-el is

SSLEnable

DocumentRoot /home/masco/httpd/html

ServerName www.masco.hu

ServerAlias masco.hu *.masco.hu

ErrorLog /var/log/httpd/masco-ssl-error.log

CustomLog /var/log/httpd/masco-ssl-access.log common

</VirtualHost>

 

<VirtualHost www.gateautomation.hu:80>  # ezek a kapumozgatással foglalkozó

DocumentRoot /home/ateautomation/httpd/html    # oldalak

SSLDisable

ServerName www.gateautomation.hu

ServerAlias gateautomation.hu *.gateautomation.hu

ErrorLog /var/log/httpd/gateautomation-error.log

CustomLog /var/log/httpd/gateautomation-access.log common

</VirtualHost>

 

<VirtualHost www.gateautomation.hu:443>

SSLEnable

DocumentRoot /home/gateautomation/httpd/html

ServerName www.gateautomation.hu

ServerAlias gateautomation.hu *.gateautomation.hu

ErrorLog /var/log/httpd/gateautomation-ssl-error.log

CustomLog /var/log/httpd/gateautomation-ssl-access.log common

</VirtualHost>

 

<VirtualHost www.mascosecurity.hu:80>   # ezek a biztonságtechnikai oldalak

DocumentRoot /home/mascosecurity/httpd/html

SSLDisable

ServerName www.mascosecurity.hu

ServerAlias mascosecurity.hu *.mascosecurity.hu

ErrorLog /var/log/httpd/mascosecurity-error.log

CustomLog /var/log/httpd/mascosecurity-access.log common

</VirtualHost>

 

<VirtualHost www.mascosecurity.hu:443>

SSLEnable

DocumentRoot /home/mascosecurity/httpd/html

ServerName www.mascosecurity.hu

ServerAlias mascosecurity.hu *.mascosecurity.hu

ErrorLog /var/log/httpd/mascosecurity-ssl-error.log

CustomLog /var/log/httpd/mascosecurity-ssl-access.log common

</VirtualHost>

Minden könyvtárra külön szabályokat állíthatunk fel. Az itteni beállítások is a httpd.conf fájlba kerülnek.

<Directory /home/httpd>

# none: semmi, all: az összes következő, Indexes: a kliens listázhatja,

# Includes: futtathat szerver-oldali scripteket,

# FollowSymlinks: követi a szimbolikus linkeket – veszélyes lehet!

# ExecCGI: CGI scripteket futtathatunk innen – veszélyes!

# olvassuk el a dokumentációt! /usr/share/doc/apache/manual/mod/core.html#options

Options none

AllowOverride none # olvassuk el a dokumentációt!

Order deny,allow

# deny from gonosz.betörő.domén

allow from all

</Directory>

 

#A CGI-ket tartalmazó könyvtár. Nézzük meg mi van benne. Ha üres, akkor

# kommentezzük ki innen is.

<Directory /home/httpd/cgi-bin>

AllowOverride None

Options ExecCGI FollowSymLinks

</Directory>

Az alkönyvtárak ezeket a beállításokat öröklik. Az alkönyvtárak beállításait egyenként felülbírálhatjuk.

Ha egyes könyvtárakhoz való hozzáféréshez felhasználó azonosítást szeretnénk, megtehetjük az adott könyvtárban elhelyezett .htaccess rejtett fájlban is. A kódoláshoz és azonosításhoz több féle authentikációs modul használható:

mod_auth

alapfunkciós, crypt() függvényt használ

mod_digest

MD5 kódolást használ

mod_auth_sys

a /etc/passwd fájlt használja

mod_auth_pam

a PAM függvényeit használja

47 . ábra Autentikációs modulok

Nekünk a PAM lenne jobb, de az /etc/shadow fájlt nem látja, ezért azt olvashatóvá kellene tenni az Apache számára, ami komoly veszélyeket rejt magában. Az árnyékjelszó miatt az auth_sys sem működik sajnos. Az MD5-ös kódolás jó választás lenne, de a legtöbb böngésző (pl. Netscape 4.x) még nem támogatja. Így kénytelenek vagyunk a hagyományos azonosítást használni. Itt használhatunk sima szöveges, DB és DBM formátumú fájlokat is. Mivel nem sok felhasználót kell tárolnunk, megfelel a szöveges fájlt is.

Ha betöltöttük a status modult, akkor Weben keresztül is lekérdezhető a szerver állapota. Vigyázat, ennek nyilvánossá tétele megkönnyíti a betörők helyzetét! Alkalmazzunk SSL-es kódolást és azonosítást. Csak a rendszer és Web-gazdák tekinthessék meg a szerver állapotát. Ehhez először is létre kell hoznunk egy jelszófájlt. Ez a fájl nem lehet a /home/httpd könyvtár alatt, hiszen ekkor azt mások könnyen meg tudják szerezni. Helyezzük el az /etc/httpd/conf könyvtárban, pl. info.pwf néven. Így hozhatjuk létre:

htpasswd –c jelszófájl felhasználó

chmod 0640 jelszófájl

chgrp nobody jelszófájl

Vigyázzunk, hogy ha más authentikációs modul is be van töltve, az lesz érvényes és ezért esetleg nem fog helyesen működni a mod_auth.

<Location /server-status>

SetHandler server-status    # ez esetben a server-status modul veszi át a tartalmat

order deny,allow

#deny from all  

allow from all # ide azt írjuk be, hogy honnan lehessen lekérdezni.

SSLRequireSSL               # ide csak SSL-el lehet belépni

# AuthPam_Enable off        # ha betöltöttük a mod_auth_pam modult, most kapcs. ki

AuthType Basic              # crypt() függvényt használó azonosítás

AuthName Status             # ez jelenik meg a jelszó kérésekor

AuthGroupFile /dev/null     # a csoport lista most üres (nem kötelező)

AuthUserFile /etc/httpd/conf/info.pwf # ebben a fájlban tároljuk a jelszavakat

require user rgazda wgazda  # csak ezek a felhasználók férhetnek hozzá az infókhoz

</Location>

 

# A szerver beállításait tartalmazó információkkal is ugyanígy járjunk el:

<Location /sever-info>

SetHandler server-info

order deny,allow

#deny from all  

allow from all # ide azt írjuk be, hogy honnan lehessen lekérdezni.

SSLRequireSSL               # ide csak SSL-el lehet belépni

# AuthPam_Enable off        # ha betöltöttük a mod_auth_pam modult, most kapcs. ki

AuthType Basic

AuthName Info                                                   

AuthUserFile /etc/httpd/conf/info.pwf

require user rgazda wgazda

</Location>

 

# Ez a phf típusú betörési kísérleteket naplózza

Location /cgi-bin/phf*>

deny from all

ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi

</Location>

 

# Kiadhatjuk a dokumentációt, hogy könnyebb legyen a konfigurálás.

<Directory /home/httpd/html/manual>

Options Indexes FollowSymLinks

AllowOverride None

order allow,deny

allow from 127.0.0.1 “rendszergazdaIP-je”

deny from all

SSLRequireSSL               # ide csak SSL-el lehet belépni

AuthType Basic

AuthName Documents                                             

AuthUserFile /etc/httpd/conf/info.pwf

require user rgazda wgazda

</Directory>

 

#A felhasználók – bár nem lesznek - ne tudjanak symlink-támadást csinálni.

<DirectoryMatch ^/home/.*/public_html>

Options Indexes SymLinksIfOwnerMatch

AllowOverride None

</DirectoryMatch>

 

# Biztonsági okokból ezeknek a fájloknak a forgalmát letilthatjuk

<Files .htaccess>

order allow,deny

deny from all

</Files>

<Files .htpasswd>

order allow,deny

deny from all

</Files>


Next: Az Apache fordítása Up: Az Apache konfigurálása Previous: AddType és AddHandler   Tartalomjegyzék

 
Misóka Zoltán 2000. 10. 05.