- Ansvarlig:
- Ole Haakon Neskvern (ole.h.neskvern@hiof.no)
- Innledning:
- Tidligere har den ofisielle webtjeneren ved skolen, edmund.hiof.no vært en HP-UX UNIX maskin som kjørte CERN-HTTPd webserver programvare. Pga. manglende kapasitet på HP-UX maskinen ble den erstattet av en ny maskin, også kalt edmund, som er en PC basert Linux maskin som kjører Apache-HTTPd webserver programvare. Det ble også bestemt at nye edmund skulle være vert for flere av skolens større web prosjekter.
- Hva har vi gjort:
- Selv om Apache-HTTPd programvaren følger med Red Hat installasjonen og nærmest blir fullstendig installert uten innblanding fra bruker, har det blitt gjort mange endringer og tilføyelser i oppsettet for å få tilpassede innstillinger for de forskjellige tjenestene som blir kjørt på maskinen. Det var nødvendig å kopiere alle HTML dokumentene over fra den gamle maskinen til den nye. De Perl programmene som blir brukt måtte også editeres for å reflektere den nye maskinen de ligger på.
Apache har en stor forbedring i forhold til den gamle CERN baserte webtjeneren. Med Apache kan man sette opp serveren til å fungere som mange virtuelle servere. Det vil si at at en nettadresse kan for omverdenen se ut som mange ulike nettadresser. På nye edmund har dette ført til at det har blitt opprettet en rekke nye nettadresser. Hvor vi tidligere kun hadde www.hiof.no, har vi nå:
- www.hiof.no – Informasjon tilgjengelig for hele verdenen
- intern.hiof.no – Informasjon forbeholdt skolens elever og ansatte
- fag.hiof.no – Informasjon forbeholdt skolens ansatte
- almashriq.hiof.no – Prosjekt som tar for seg Libanon og området rundt
- theband.hiof.no – Prosjekt som tar for seg gruppen "The Band"
- jenter.hiof.no – En tjeneste rettet mot it-aut avdelingens jenter, men for det meste åpen for hele verden
- Tidligere har www.hiof.no vært helt åpen for alle rundt om i hele verden. Men de nye tjenestene intern.hiof.no og fag.hiof.no setter nye krav. Disse skal kun være åpne for skolens elever og/eller skolens ansatte. Vi har av den grunn satt opp tilgangskontroll på disse to tjenerene. intern.hiof.no har blitt sperret for alle nett utenom skolens eget nett. fag.hiof.no krever enda mer sikkerhet og har blitt sperret for bruk kun på skolens undernett for ansatte og administrasjon, samtidig som det kreves brukernavn og passord for å komme til informasjon forbeholdt en avdeling eller administrasjonen.
cat /var/run/httpd.pid returnerer httpd prosessens ID (PID)
kill <PID>
cd /etc/httpd/conf
/usr/sbin/httpd
MERK: Apache må startes fra /etc/httpd/conf!
For å forenkle omstartingen har vi laget et lite shell-script:
/usr/local/bin/restarteHttpd
Scriptet kjøres som root-bruker og tar ingen parametre.
- Konfigurere Apache:
- Konfigureringen av Apache skjer med editering av tekstfiler i konfigurasjons
katalogen,
- httpd.conf
- access.conf
- srm.conf
Disse filene ligger under /etc/httpd/conf/
Filen httpd.conf er Apaches hoved konfigurasjonsfil. Her skjer all konfigurering som har med generelle instillinger, samt virtuelle servere å gjøre. De fleste punktene i denne filen kan en la stå uten å måtte foreta forandringer.
Apache har mulighet for å la en maskin fremstå som flere individuelle maskiner. Dette gjøres via såkalte virtuelle servere. Siden edmund kjører flere slike virtuelle servere, er det noen punkter som kreveren gjennomgang. For å forenkle forklaringen velger vi å ta utgangspunkt i en nedkortet versjon av konfigurasjons delen til den virtuelle serveren www.hiof.no i httpd.conf filen på edmund.
<VirtualHost www.hiof.no>
ServerAdmin webmaster@hiof.no
DocumentRoot /www/www/htdocs
ServerName www.hiof.no
ErrorLog /www/www/logs/error_log
TransferLog /www/www/logs/access_log
ScriptAlias /cgi-bin /www/www/cgi-bin
# Midlertidig redirect for AlMashriq
Redirect /almashriq http://almashriq.hiof.no
#Mapper www.hiof.no/~<BRUKERNAVN> til gyda
Userdir http://www-ia.hiof.no/~*/
Alias /CU /www/www/htdocs/smm
</VirtualHost>
Brakettene <VirtualHost www.hiof.no> og </VirtualHost> brukes for å avgrense innstillinger som er forbeholdt en navngitt virtuell server. Den navngitte serveren må finnes i skolens DNS register som et alias til edmund for at dette skal virke.
ServerAdmin webmaster@hiof.no - brukes for å angi en person som har ansvar for serveren og som skal motta mulige feilmeldinger.
DocumentRoot /www/www/htdocs - viser hvor den virtuelle serveren skal ta utgangspunkt (root) for tilgjengelige data.
ServerName www.hiof.noangir navnet på den virtuelle serveren.
ErrorLog /www/www/logs/error_log viser hvor feilmeldingslogger skal genereres.
TransferLog /www/www/logs/access_log viser hvor Apache skal lagre informasjon om aktivitet på den virtuelle serveren.
ScriptAlias /cgi-bin /www/www/cgi-bin viser hvor den virtuelle serveren
skal ta utgangspunkt for sin /cgi-bin.
Redirect /almashriq http://almashriq.hiof.no Redirect er en vennlig måte å vise brukerene av den virtuelle serveren at informasjonen de søker i en angitt katalog har blitt flyttet og ikke eksisterer der lenger.
Userdir http://www-ia.hiof.no/~*/- Userdir brukes for å vise hvor brukerdata ligger. I dette tilfellet peker vi til en annen server, og om noen skriver f.eks. www.hiof.no/~kjetilei/ vil de bli flyttet til www-ia.hiof.no/~kjetilei/. Det er også mulig å peke til en annen plass på edmund, f.eks /home/*, angitt med fysisk sti, og ikke via en URL.
Alias /CU /www/www/htdocs/smm Alias brukes for å gjøre informasjon tilgjengelig på andre plasser enn der informasjonen egentlig ligger. For brukeren vil URLen: www.hiof.no/CU bli oppfattet som en eksisterende katalog, mens den egentlig bare er et speilbilde av hva som befinner seg på katalogen /www/www/htdocs/smm på edmund.
Filen access.conf tar for seg tilgangskontroll til serveren (se Access control).
Filen srm.conf brukes for å stille inn hvilke grafikk filer som skal brukes til standard oppgaver som f.eks. katalog utlistinger. Man kan også stille inn hvordan feilmeldinger skal håndteres. Denne filen kan også inneholde opplysninger om redirecter. srm.conf behøver stort sett ikke forandres.
MERK: For at forandringene skal tre til, må apache-serveren omstartes (se Starte/omstarte webserveren).
- Access control:
- For å avgrense brukertilgangen til kataloger og sider, kan man legge inn sperringer i Apache. Det er to måter å gjøre dette på: ved å angi tilgangsrettigheter etter IP-adresse/domenenavn eller via brukernavn og passord. Den vanligste måten er å bruke IP-adresser, og ved å bruke IP-adresser kan en enkelt tillate/sperre ute mange maskiner. Ulempen er at personer som ikke har tilgang bare trenger å finne en maskin som er gitt tilgang.
Hvis man velger å avgrense etter brukernavn og passord må man først opprette en brukerdatabase. Den vanligste måten å gjøre dette på er å bruke en tekstfil kalt .htpasswd som inneholder brukernavn og kodet passord. Brukere blir lagt til ved å kjøre kommandoen:
htpasswd c /www/<NAVN>/ <BRUKERNAVN>
Argumentet -c brukes kun for å opprette .htpasswd filen og er ikke nødvendig når flere brukere skal tilføyes. Programmet kan også brukes for å forandre eksisterende brukeres passord.Det gjøres ved å kjøre programmet med en eksisterende bruker, og man vil da få mulighet til å forandre passordet
MERK: .htpasswd filen må ikke ligge i htdocs katalogen ellerdens underkataloger!
Tilgangskontrollen konfigureres på to måter, enten via filen access.conf som ligger i Apaches konfigurasjonskatalog /etc/httpd/conf/, eller i .htaccess filer som plasseres i de katalogene en vil ha kontroll over. Direktivene som blir gitt for en katalog gjelder automatisk for dens underkataloger. Dette kan oppheves med å legge inn en .htaccess fil med andre regler for de underkatalogene dette er ønskelig.
Bruker man access.conf filen til å legge inn tilgangskontroll, kan
det se slikt ut på slutten av filen:
<Directory /www/fag/htdocs>
AuthGroupFile /dev/null
AuthUserFile /www/fag/.htpasswd
AuthName Fag
AuthType Basic
order allow,deny
#Tillater kun subnet for ansatte
#halden-gw
allow from 158.36.47
allow from 158.36.51
require valid-user
</Directory>
Brakettene <Directory /www/fag/htdocs> og </Directory> brukes for å avgrense innstillinger som er forbeholdt en katalog og dens underkataloger.
AuthGroupFile /dev/null AuthGroupFile viser hvor filen for gruppeoversikter er plassert. Finnes ikke en slik fil, angis /dev/null istedenfor. Vi bruker ikke grupper siden det er så få brukere på fag.hiof.no (hver avdeling har en bruker).
AuthUserFile /www/fag/.htpasswd viser hvor filen med brukere og passord
er plassert. Finnes ingen slik fil kan en kommentere ut denne linjen.
AuthName Fag brukes bare for å gi et navn på den innlagte sperren.
AuthType Basic brukes for å angi hvilken brukerbekreftelse som skal brukes. I skrivende stund er kun BASIC standarisert.
order allow,deny angir i hvilken rekkefølge IP-adresser skal bli
sjekket.
require valid-user require brukes for å angi hvilke brukere, basert på brukernavn og passord, som skal ha tilgang. Hvis kun enkelte godkjente brukere skal ha tilgang bytter en ut valid-user med user <BRUKERNAVN>, hvor brukerne skilles med mellomrom.
Siden vi i dette eksempelet har implementert sjekk på IP-adresse og passord, vil kun de brukerene på nett som er godkjente og som har et gyldig brukernavn og passord få tilgang. Det er i Apache ikke mulig å angi at brukere på maskiner med tilatte IP-adresser skal slippe rett inn og at brukere uten tilgang på IP-adresse må spesifisere brukernavn og passord.
For å kunne bruke .htaccess filer må man editere access.conf til å tillate dette. I <Directory> delen til den virtuelle serveren som skal sikres tilføyes det:
AlowwOverride AuthConfig
I .htaccess filen legger man så inn direktivene på samme måte som i access.conf filen med den forskjell at man utelukker <Directory /www/fag/htdocs> og </Directory> avgrensningene.
For mer informasjon om hva som er mulig, finnes det en utmerket artikkel: http://www.apacheweek.com/features/userauth.
- Innstallert programvare:
-
- Erfaringer:
- Siden Apache serveren følger med Red Hat installasjonen, var selve innstallasjonen ikke noe problem. Det som uventet viste seg å bli et problem er at edmund kjører mange virtuelle servere. Dvs. at edmund fremstår som flere maskiner på web'en. Problemet er at vi kun bruker en IP-addresse for alle virtuelle servere. For gamle nettlesere som ikke støtter HTTP/1.1 byr dette på problemer siden disse bruker IP-addressen og ikke navnet på serveren (eks. www.hiof.no). Disse nettleserene får dermed kun tilgang til edmund.hiof.no som er "eier" av IP-addressen, og ikke de virtuelle serverene som kjører på edmund.
Dokumentasjonen til Apache, som finnes på www.apache.org, er veldig dårlig satt opp. Etter mye slit med denne fant vi etterhvert en annen kilde som er mye mer oversiktlig. www.apacheweek.com tilbyr bra dokumentasjon om mange vanlige emner ved Apache-HTTPd.
Noen dokumenter har en tendens til å bli vist på nettlesere med fullt av spesialtegn (søppel) på de første linjene av dokumentet. En oppdatering av siden (reload) pleier å fikse dette problemet. Hva problemet skyldes er usikkert, men sannsynligvis er dette en liten svakhet i Apache.
- Mulige forbedringer:
- Det bør sterkt vurderes å flytte virtuelle servere som trenger mer sikkerhet over på en annen maskin/andre maskiner. I dag er det for mange brukere som har tilgang til informasjon på serveren via konto og telnet, som ikke ville ha hatt denne muligheten via en nettleser. Problemet er størst med fag.hiof.no, som på web'en er forbeholdt ansatte, men som via telnet kan nås av alle med adgang til edmund.
Det er mulig å fikse problemet med virtuelle servere og gamle nettlesere ved å installere flere nettverkskort i maskinen, eller eventuellt bygge inn flere IP-addresser i Linux kernelen. Vi har valgt å ikke gjøre dette siden vi har lagt kravene til nettleser på Netscape 3 Eller Internet Explorer 3 som begge støtter denne funksjonaliteten.
- Prosjektfakta:
- Lokalisering:
- Hjemmeområde: /home/webern/data
- Område for HTML-dokumenter: /www/<NAVN>/htdocs/
- GLIMPSE søkedatabase: /www/<NAVN>/htdocs/
- CGI-scripts: /www/<NAVN>/cgi-bin/
- HTTPd-logger: /www/<NAVN>/logs
- Apache konfigurasjonsfiler: /etc/httpd/conf
- Apache server: /usr/sbin
- Tidsestimering:
- 36 timer (inkludert support for de andre gruppene og drift av gamle edmund)
- Ressurspersoner:
- Apache webserver: Halvor Kise
- Linux: Halvor Kise
- Generell UNIX-drift: Annette Stavem
- Ressurssteder:
- Programvare: