Esittely
Verkkopalvelimen perustamisen yhteydessä sivustolla on usein osioita, joiden käyttöä halutaan rajoittaa. Verkkosovellukset tarjoavat usein omat todennus- ja valtuutusmenetelmänsä, mutta verkkopalvelinta itseään voidaan käyttää pääsyn rajoittamiseen, jos nämä ovat riittämättömiä tai niitä ei ole saatavilla.
Tässä oppaassa näytämme, miten voit suojata resursseja salasanalla Apache-verkkopalvelimella, joka toimii Ubuntu 14.04:ssä.
Edellytykset
Aloittaaksesi tarvitset pääsyn Ubuntu 14.04-palvelinympäristöön. Tarvitset muun kuin root-käyttäjän, jolla on sudo
-oikeudet, jotta voit suorittaa hallintatehtäviä. Saat lisätietoja tällaisen käyttäjän luomisesta seuraamalla Ubuntu 14.04 -palvelimen alkuasennusoppaamme.
Asenna Apache Utilities Package
Luoaksemme tiedoston, johon tallennetaan salasanat, joita tarvitaan rajoitetun sisällön käyttämiseen, käytämme apuohjelmaa nimeltä htpasswd
. Se löytyy apache2-utils
-paketista Ubuntun arkistoista.
Päivitä paikallinen pakettivälimuisti ja asenna paketti kirjoittamalla tämä komento. Tässä yhteydessä nappaamme myös Apache2-palvelimen, jos sitä ei ole vielä asennettu palvelimelle:
- sudo apt-get update
- sudo apt-get install apache2 apache2-utils
Luo salasanatiedosto
Meillä on nyt käytössämme komento htpasswd
. Sen avulla voimme luoda salasanatiedoston, jota Apache voi käyttää käyttäjien todentamiseen. Luomme tätä tarkoitusta varten piilotetun tiedoston nimeltä .htpasswd
konfiguraatiohakemistomme /etc/apache2
sisälle.
Kun käytämme tätä apuohjelmaa ensimmäistä kertaa, meidän on lisättävä -c
-optio määritellyn tiedoston luomiseksi. Määritämme käyttäjänimen (tässä esimerkissä sammy
) komennon lopussa luodaksemme uuden merkinnän tiedostoon:
- sudo htpasswd -c /etc/apache2/.htpasswd sammy
Pyydetään antamaan ja vahvistamaan käyttäjän salasana.
Jätä -c
-argumentti pois, jos haluat lisätä lisäkäyttäjiä:
- sudo htpasswd /etc/apache2/.htpasswd another_user
Jos tarkastelemme tiedoston sisältöä, näemme kunkin tietueen käyttäjänimen ja salatun salasanan:
- cat /etc/apache2/.htpasswd
Outputsammy:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.
Apachen salasanatodennuksen konfigurointi
Nyt kun meillä on tiedosto, jossa on käyttäjämme ja salasanamme sellaisessa muodossa, että Apache pystyy lukemaan ne, meidän on konfiguroitava Apache tarkistamaan tämä tiedosto ennen suojatun sisällön tarjoamista. Voimme tehdä tämän kahdella eri tavalla.
Ensimmäinen vaihtoehto on muokata Apachen konfiguraatiota ja lisätä salasanasuojauksemme virtuaali-isäntätiedostoon. Tämä antaa yleensä paremman suorituskyvyn, koska näin vältetään hajautettujen konfiguraatiotiedostojen lukemisesta aiheutuvat kustannukset. Jos sinulla on tämä mahdollisuus, tätä tapaa suositellaan.
Jos sinulla ei ole mahdollisuutta muokata virtuaalista isäntätiedostoa (tai jos käytät jo .htaccess files for other purposes), you can restrict access using an
.htaccessfile. Apache uses
.htaccess` -tiedostoja salliaksesi tiettyjen konfiguraatiokohtien asettamisen sisällönhakemistossa olevan tiedoston sisällä. Haittapuolena on, että Apachen on luettava nämä tiedostot uudelleen jokaisen hakemistoa koskevan pyynnön yhteydessä, mikä voi vaikuttaa suorituskykyyn.
Valitse alla olevasta vaihtoehdosta tarpeisiisi parhaiten sopiva.
Käyttäytymisen hallinnan määrittäminen virtuaalisen isännän määrittelyssä
Aloita avaamalla virtuaalisen isännän tiedosto, johon haluat lisätä rajoituksen. Esimerkissämme käytämme 000-default.conf
-tiedostoa, joka sisältää Ubuntun apache-paketin kautta asennetun oletusarvoisen virtuaalisen isännän:
- sudo nano /etc/apache2/sites-enabled/000-default.conf
Tiedoston sisällä, kommentit poistettuina, tiedoston pitäisi näyttää samankaltaiselta kuin tämä:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined</VirtualHost>
Käyttäytymisen tunnistautuminen tapahtuu hakemistokohtaisesti. Jotta voit asettaa todennuksen, sinun täytyy kohdistaa <Directory ___>
-lohko siihen hakemistoon, jota haluat rajoittaa. Esimerkissämme rajoitamme koko dokumentin juurta, mutta voit muokata tätä listausta kohdistamaan vain tiettyyn hakemistoon verkkoavaruuden sisällä:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory "/var/www/html"> </Directory></VirtualHost>
Tässä hakemistolohkossa määrittele, että haluamme asettaa Basic
-todennuksen. Valitse AuthName
-kenttään realm-nimi, joka näytetään käyttäjälle, kun hän kysyy tunnuksia. Käytä AuthUserFile
-direktiiviä osoittamaan Apache luotuun salasanatiedostoon. Lopuksi vaadimme valid-user
pääsyä tähän resurssiin, mikä tarkoittaa, että kuka tahansa, joka voi todentaa henkilöllisyytensä salasanalla, pääsee sisään:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory "/var/www/html"> AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory></VirtualHost>
Tallenna ja sulje tiedosto, kun olet valmis. Käynnistä Apache uudelleen ottaaksesi salasanakäytäntösi käyttöön:
- sudo service apache2 restart
Määrittämäsi hakemiston pitäisi nyt olla suojattu salasanalla.
Käytönvalvonnan määrittäminen .htaccess-tiedostojen avulla
Jos haluat määrittää salasanasuojauksen sen sijaan .htaccess
-tiedostojen avulla, aloita muokkaamalla Apachen pääasetustiedostoa niin, että se sallii myös .htaccess
-tiedostot:
- sudo nano /etc/apache2/apache2.conf
Etsi dokumentin juurihakemistoa sisältävää hakemistohakemiston /var/www
lohko <Directory>
. Ota .htaccess
-käsittely käyttöön muuttamalla kyseisen lohkon sisällä oleva AllowOverride
-direktiivi ”None” (ei mitään) ”All” (kaikki):
. . .<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted</Directory>. . .
Tallenna ja sulje tiedosto, kun olet valmis.
Seuraavaksi meidän on lisättävä .htaccess
-tiedosto hakemistoon, jota haluamme rajoittaa. Demonstraatiossamme rajoitamme koko asiakirjan juurta (koko verkkosivustoa), joka sijaitsee osoitteessa /var/www/html
, mutta voit sijoittaa tämän tiedoston mihin tahansa hakemistoon, johon haluat rajoittaa pääsyn:
- sudo nano /var/www/html/.htaccess
Määritä tässä tiedostossa, että haluamme ottaa käyttöön Basic
-todennuksen. Valitse AuthName
-kenttään reaalimaailman nimi, joka näytetään käyttäjälle, kun häntä pyydetään antamaan tunnukset. Käytä AuthUserFile
-direktiiviä osoittamaan Apache luotuun salasanatiedostoon. Lopuksi vaadimme valid-user
pääsyä tähän resurssiin, mikä tarkoittaa, että kuka tahansa, joka voi todentaa henkilöllisyytensä salasanalla, pääsee sisään:
AuthType BasicAuthName "Restricted Content"AuthUserFile /etc/apache2/.htpasswdRequire valid-user
Tallenna ja sulje tiedosto. Käynnistä verkkopalvelin uudelleen suojatakseen salasanalla kaiken sisällön, joka on .htaccess
-tiedoston sisältämässä hakemistossa tai sen alapuolella:
- sudo service apache2 restart
Vahvista salasanan todennus
Vahvistaaksesi, että sisältösi on suojattu, yritä päästä rajoitettuun sisältöön verkkoselaimella. Sinun pitäisi saada näyttöön käyttäjätunnuksen ja salasanan kehote, joka näyttää tältä:
Jos annat oikeat tunnistetiedot, saat pääsyn sisältöön. Jos syötät väärät tunnistetiedot tai painat ”Peruuta”, näyttöön tulee ”Unauthorized”-virhesivu:
Johtopäätös
Sinulla pitäisi nyt olla kaikki, mitä tarvitset perustodennuksen määrittämiseen sivustollesi. Muista, että salasanasuojaus tulisi yhdistää SSL-salaukseen, jotta tunnistetietojasi ei lähetetä palvelimelle pelkkänä tekstinä. Jos haluat oppia luomaan itse allekirjoitetun SSL-varmenteen Apachen kanssa käytettäväksi, seuraa tätä opasta. Kaupallisen varmenteen asentaminen opitaan tässä oppaassa.