Brukerautentisering i Apache

En kort innføring i å sette opp bruker-autentisering via Apache-webserver på Linux plattform.

Apache har vært den mest populære webserveren på Internett siden April 1996. Netcraft February 2000 Web Server Survey fant ut at over 58% av websidene på Internett ligger på Apache webserver. Dette viser at den er mer brukt enn alle de andre tilsammen. Dette kan forklares ved det faktum at Apache tilbyr en robust og kommersielt annerkjent implementasjon av Hypertext Transfer Protocol (HTTP). I tillegg er den driftssikker, konfigurerbar, skikkelig skalerbar, godt dokumentert, Open Source, og gratis.

sillyrodent
Creative Commons License photo credit: scottobear

Komme igang

Først må du ha Apache og htpasswd vertøyet installert på din Linux-maskin. Dersom du ikke har det, kan den siste versjonen lastes ned fra Apache-organisasjonens webside (http:www.apache.org), og installere denne på din maskin. htpasswd kommer med Apache.

Autentiseringsprosessen

Autentisering er et enkelt men veldig viktig prinsipp – klienten sender sitt navn og passord til serveren (se figur 1).
Apache sjekker om informasjonen er gyldig, og dersom de er det, returneren den den forespurte siden. Dersom brukeren ikke har lov til å lese siden, eller passordet er ugyldig, returnerer Apache en 401 status side (unauthorized access). Nettleseren vi da spørre brukeren om han vil prøve å logge seg på igjen på nytt.

Metoder for å begrense tilgangen

Å begrense tilgangen til dokumenter blir som regel gjort basert på nettleserens hostname eller brukerens brukernavn og passord. Hvilken av disse du bør bruke, kommer an på i hvilken sammenheng det skal benyttes. For eksempel, dersom du ønsker å begrense tilgangen til dokumenter til et begrenset miljø, for eksempel et fakultet eller en avdeling, kan en sjekke på klientens (nettleserens) nettadresse. Eller, dersom du vil begrense tilgangen på individuell basis, eller om personer som skal ha tilgang er spredt, vil du benytte deg av brukerens brukernavn og passord.

Begrense tilgang ved brukernavn og passord

For å benytte brukerautentisering ved hjelp av brukernavn og passord, må vi gjøre to ting. Først må vil lage en fil som inneholder brukernavnene og passordene. Så må vi informere serveren om hvilke ressurser som skal beskyttes og hvilken bruker som skal få tilgang til de. Det første en må gjøre for å konfigurere tilgangskontroll er å sette opp en liste over brukerne og deres tilhørende passord. Denne listen lagres i en fil, feks. kalt ‘users’. Denne bør du ikke lagre under root-katalogen av sikkerhetsmessige årsaker. Derfor, i mitt oppsett, lagret jeg denne i /etc/httpd. For et organisert oppsett kan du lage en katalog under /etc/httpd, kanskje kalt user-files, og lagre filen i den. Filformatet er det samme som på den standard UNIX passwd-filen, bestående av en liste med brukernavn og dets krypterte passord, separert med kolon.

Mini-HOWTO på htpasswd vertøyet

htpasswd er en del av Apache pakken og dette verktøyet tillater oss å lage en fil med brukernes passord og gir oss muligheten til å legge til og endre disse. På de siste Redhat-distribusjonene (og andre) er Apache og htpasswd installert som en del av standard-oppsettet. For å se hvordan htpasswd fungerer, skriv htpasswd i shell-promptet ohg du vil motta følgende beskjed:


Usage:
        htpasswd [-cmdps] passwordfile username
        htpasswd -b[cmdps] passwordfile username password

 -c  Create a new file.
 -m  Force MD5 encryption of the password.
 -d  Force CRYPT encryption of the password (default).
 -p  Do not encrypt the password (plaintext).
 -s  Force SHA encryption of the password.
 -b  Use the password from the command line rather than ...
On Windows and TPF systems the '-m' flag is used by default.
On all other systems, the '-p' flag will probably not work.

I følge bruksanvisningen må vi skrive følgende for å opprette en ny brukerfil og legge brukeren pedro til filen /etc/httpd/users:

htpasswd -c -b /etc/httpd/users pedro WebDir-91

-c flagget brukes bare første gangen vi bruker htpasswd for å opprette en ny user passord-fil. Når vi kjører htpasswd med -b flagget, vil vi ikke bli spurt om å legge inn et passord for brukeren pedro siden dette sendes med fra kommandolinjen. Andre brukere kan kan legges til den eksisterende filen på samme måte, bortsett fra at -c flagget ikke er nødvendig, da filen finnes fra før. Dersom dette flagget blir brukt når det legges til andre brukere, vil den eksisterende filen bli overskrevet og de eksisterende brukerne bli borte.

Eksempel på Bruker Passord-fil

Etter at jeg laget en “web-konto” til meg selv, la jeg til et par andre brukere og min /etc/httpd/users fil så sånn ut:

pedro:KjdfjHe%djfs3
botros:jkKghfHghf?k/
angelio:PekT!6hbej2k)Kmn

Server-konfigurasjon

Nå som passord-filen er laget, må serveren bli gjort oppmerksom på at tilgangen må bli begrenset basert på brukernavnene og passordene som finnes i denne filen (/etc/httpd/users). Denne metoden muliggjør beskyttelse av individuelle filer, kataloger og deres underkataloger. Direktivene for å opprette disse beskyttede områdene kan enten plasseres i en .htaccess fil i katalogene som skal beskyttes, eller i en <Directory> modul i access.conf (lokalisert i /etc/httpd/conf).


Write a Comment

Take a moment to comment and tell us what you think. Some basic HTML is allowed for formatting.

Reader Comments

Be the first to leave a comment!