ITE1804 - Operativsystemer og tjenestedrift Øvingsoppgave 5

Installasjon og konfigurering av webtjeneren apache

Læreboken omhandler apache webtjener i kapittel 23, les gjennom dette før lab og bruk som referanse/oppslag under labben.

Ubuntu dokumentasjon Apache installasjon

APT basert installasjon

Benytt apt for installering av apache webtjener og webalizer dersom disse ikke allerede er installert, sudo apt-get install apache2 webalizer gjør susen ! . Sjekk at den kjører ved å gå til http://localhost/  med en nettleser. Webalizer skal benyttes for å vise statistikk om trafikk til webtjeneren, det tar vi litt senere.

Oppsett av webtjeneren 

Apache konfigurasjon endres ved editering av konfigurasjonsfilene i mappen /etc/apache2/. Ubuntu bewnytter konfigurasjonsfilen apache2.conf, denne inkluderer andre filer i samme mappe og undermapper. Filen vi skal gjøre endringer i er sites-available/000-default.conf. Ubuntu benytter som standard "Virtual hosts", foreløpig har vi kun en av disse, flere settes opp senere. Mange Linux distroer benytter httpd.conf som standard, dette benyttes også i læreboka. Vær oppmerksom på det. Slike forskjeller mellom ulike linux distroer er ikke uvanlig. Webmin kan benyttes til konfigurering av Apache, men det kan være noe vanskelig å finne fram pga. alle valg og opsjoner som tilbys.

Webdelinger

Hvilken som helst katalog kan deles ut på web, men vær klar over at også alle underkataloger blir tilgjengelige. Se på filen sites-available/000-default.conf i mappen /etc/apache2/. Her er det satt opp at katalogen /var/www/ er standard webområde, DocumentRoot direktivet peker til denne katalogen, og katalogen er delt ut på web med Directory direktivet, delingen er gjort i filen apache2.conf. Du skal lage en ny webdeling og sørge for at denne er standard webområde for systemet ditt.
  1. Opprett mappen /home/www/ og del denne ut på web slik at alle kan aksessere denne. Dette gjøre ved å benytte  <Directory> direktivet isites-available/000-default.conf filen, dette direktivet har en rekke opsjoner. En enkel variant ser ut som følger:
     <Directory "/home/www">
          AllowOverride None
          Options Indexes
          Require all granted
     </Directory>
    Alias /www "/home/www/"
  2. Her er området åpent for alle og alias www er satt opp for området. 
  3. Opprett filen startsiden.html og legg inn følgende i filen <h1>Det virker !</h1>.
  4. Restart apache, må gjøres for hver endring, kommando service apache2 restart
  5. Gå til området http://localhost/www/ med en nettleser. Du burde få en oversikt over filene i mappen, se på startsiden.html.
  6. Option Indexes bestemmer om browsing av katalogen er påslått eller ikke. Dette innebærer at dersom det ikke eksisterer en startside (normalt index.htm/html/php) så vil apache tillate at katalogen browses, alle filene i katalogen listes ut. Dette kan medføre en sikkerhetsrisiko, men i enkelte tilfeller ønsker en seg dette. I pkt over fikk du en slik liste, dersom det ikke eksistere en startside.
  7. Fjern direktivet Options Indexes fra oppsettet over i sites-available/000-default.conf, restart Apache og prøv å aksessere den samme katalogen, hva skjer nå ?
  8. Kopier startsiden.html til index.html. Prøv å aksessere katalogen på nytt, og sammenlign med resultatet du fikk i puktet over.

Documentroot

Standard webområde angis med direktivet DocumentRoot,dvs. at direktivet Documentroot peker til mappen som skal være startsiden/området for denne webtjeneren. For å sette opp sitt egen standard webområde kan en endre Documentroot direktivet i config filen.
  1. Sett standard webområde til å være /home/www/
  2. Sjekk att dette virker, du skal nå kunne få opp det samme området både med  aksess av din webtjener ved kun å angi adressen http://localhost/ og ved å angi http://localhost/www/.

Brukernes hjemmeområde

Brukerne kan normalt ha egne webområder, disse ligger lagret i mappen public_html i hver brukers egen mappe. URL for aksess blit systemnavn/~brukernavn. Slå på denne funksjonaliteten ved å følge oppskriften under. Test så ut dette for en av brukerne dine.
  1. Ubuntu har to mapper under /etc/apache med navn modules-available og modules-enabled. Modulen Userdir tilbyr brukernes filer ut på web.
  2. UserDir modulen aktiveres enkelt med kommandoen a2enmod userdir. Apache må restartes deretter for at endringene skal bli aktive.
  3. Sjekk filen userdir.conf, her er det direktivet UserDir som settes til public_html, og alle public_html katalogene blir automatisk satt opp som webdelinger. Dette skjer i direktivet <Directory> for public_html katalogene, her der du katalogspesifikasjonen for hvor public_html mappen forventes å ligge. AllowOverride AuthConfig er lagt inn på public_html , dermed kan brukeren selv styre aksessen til mappen ved hjelp av en .htaccess fil, dette ser vi på litt senere.
  4. Opprett mappen public_html i hjemmekatalog for brukeren din og legg inn en fil der med navn index.html.
  5. Gå til adressen http://localhost/~ditt-brukernavn og verifiser at du får opp filen. Brukeren har nå sitt private webområde som er åpent for alle, vi skal senere begrense aksessen til dette området.

Begrensning av aksess

Begrensing av aksess basert på IP-nummer for klient gjøres ved å legge inn IP-nummer evt. IP-nett som har aksess til webområde, evt. som stenges ute fra webområde. Se læreboka s. 90-91 
  1. <Directory> direktivet benyttet over kan modifiseres til å inneholde IP adresser som angir hvem som får tilgang, f.eks.

           <Directory "/home/www">
          AllowOverride None
          Options Indexes
          Require ip 127.0.0.1
         </Directory>

  2. Verifiser at du får aksess til webområdet fra en webleser fra ditt system, benytt adresse http://127.0.0.1/. Har du kun konsolltilgang benytt kommandoen wget http://127.0.0.1/ og verifiser at du får lastet ned filen index.html. Prøv deretter å aksessere webområdet fra Windows, f.eks. http://din-IP-adresse/. Du må da benytte den eksterne IP adressen til Linux systemet, benytt kommandoen ifconfig på Linux for å finne IP adressen. Spørsmål: Fungerer begrensningene ? Hvilken feilmelding får du ?
  3. Fjern IP begrensningene når du har verifisert at dette virker.
  4. Du skal nå teste aksess basert på brukernavn og passord.  Du må opprette en .htaccess fil i den katalogen som skal beskyttes. Vi skal her beskytte  en mappe med navn lukket under public_html katalogen til brukeren din. 
  5. .htaccess filen inneholder en peker til en passord database og den inneholder de brukerne som har aksess til området.Programmet htpasswd benyttes for å opprette passord databasen og legge inn brukere og passord. Passord databasen skal ikke ligge på et område som er tilgjengelig fra web.  
  6. Hver bruker kan ha sin passordfil, opprette en passordfil i hjemmekatalog til din bruker med kommando htpasswd  -c /home/ditt-brukernavn/.htpasswd student. Denne kommandoen oppretter passordfilen .htpasswd i din hjemmekatalog og legger inn brukeren med navn student. Angi passordet for student brukeren.
  7. Apache webtjener må ha leseaksess til denne filen
  8. Opprett mappen lukket under brukeren din sin public_html mappe og opprett en .htaccess fil i denne mappen, filen skal inneholde følgende:

    AuthName "Min lukkede mappe"
    AuthType Basic
    AuthUserFile /home/ditt-brukernavn/.htpasswd
    require user student

    student er her brukernavnet for den brukeren som skal ha aksess.
  9. Prøv å aksesser webområdet nå. Spørsmål: Hva skjer ?
  10. Prøv å logge deg på med en gyldig og ugyldig bruker og verifiser at du får tilgang/ikke tilgang.

Loggfiler

Apache logger all trafikk som standard,  feilmeldinger logges også. Filene ligger i mappen /var/log/apache2/. Se på access.log filen, her ser du all aksess av webområdet og hvilke webdokumenter som er forespurt.
  1. Sjekk loggfilen for webtjeneren. 
  2. Beskriv hvilken informasjon som logges for hver klient som aksesserer webtjeneren.
  3. Hvilke feilmeldinger inneholder denne for brukeren som ikke fikk  tilgang  i oppgaven over ?

Installajson av PHP modul

Installer php7 og php7 apache modulen ved hjelp av apt. Benytt følgende kommandoer:

apt-get install php7.0 libapache2-mod-php7.0

Restart Apache og sjekk at PHP virker ved hjelp av et lite skript som starter funksjonen phpinfo(). Opprett filen phpinfo.php i mappen /home/www/. Test deretter dette ved å aksessere http://localhost/phpinfo.php. Du skal da få opp informasjon om PHP miljøet på systemet.

Innhold i filen phpinfo.php:
<?php
phpinfo();
?>

Spørsmål:

  1. PHP virker sannsynlig uten problemer, hvordan kan dette ha seg ? (Restart Apache dersom PHP skriptet ikke kjører.)
  2. Hvilken fil er det som laster støtte for PHP i Apache. Tips: Se i mappen modules-available/
  3. Hva er navnet på modulen som lastes ?

Statistikk over bruk (frivillig)

Webalizer kan benyttes for å hente ut statistikk over bruk av webområdet, de som har lyst kan prøve dette. Webalizer er installert med apt, det som må gjøres er fortelle webalizer hvor aksessfilene til apache ligger, dette gjøres i .conf filen for webalizer. Deretter kjøres kommando webalizer, denne produserer .html filer over statistikk for din webtjener.

Besvarelse

Alle og filer opprettet/endret leveres i et PDF dokument, følgende inkluderes i dokumentet: NB! Ikke som vedlegg.

  1. alle .conf filer du har opprettet/endret
  2. .htaccess & .htpasswd filene
  3. En beskrivelse av apache installasjonen med eventuelle problemer/utfordringer