Vincent Lammens

Apache Authenticatie op verschillende manieren

2021-02-15
Tutorial
, , , ,

Er zijn verschillende manieren, de makkelijkste is om het per IP te beperken. Zo kan je bijvoorbeeld de toegang tot je site beperken tot de ip’s van de developers bijvoorbeeld.

Om dit te doen maak je een bestandje in jouw website aan met de naam .htaccess. Zet je dit in een bepaalde map, dan word de toegang tot enkel die map beperkt.

Het stukje hieronder laat enkel gebruikers toe met het IP 12.34.56.78. Wil je meer ip’s toegang geven, dan kan je ze er gewoon aan toe voegen, gesplitst met een spatie.

<RequireAll>
Require all denied
Require ip 12.34.56.78
</RequireAll>

Ook het omgekeerde is mogenlijk, bijvoorbeeld een bepaald IP de toegang beperken.

<RequireAll>
Require all granted
Require not ip 78.65.43.21
</RequireAll>

Ook hier kan je gewoon ip’s toevoegen gesplitst met een spatie.

Toegang beperken met een wachtwoord

Een bepaalde map (of de hele site) beperken in toegang met een wachtwoord kan je op 2 manieren doen: op basis van een bestand, of op basis van een database.

Met een .htaccess en .htpasswd bestand

Eerst moet je een gebruiker & wachtwoord maken. Hiervoor moet je het linux commando htpasswd gebruiken

htpasswd -cB .htpasswd gebruikersnaam

Dit zal je om een wachtwoord vragen en het in het bestand .htaccess zetten. om een 2e gebruiker toe te voegen kan je enkel htpasswd -B .htpasswd gebruiker2 gebruiken, de -c vlag maakt namelijk een nieuw bestand aan.

Om dit te doen maak je een bestandje in jouw website aan met de naam .htaccess. Zet je dit in een bepaalde map, dan word de toegang tot enkel die map beperkt, je zet er het volgende in:

AuthName "Beveiligd gedeelte" 
AuthUserFile /pad/naar/.htpasswd 
AuthGroupFile /dev/null 
AuthType Basic 
require valid-user

Je moet uiteraard het pad vervangen naar het pad naar het htpasswd bestand.

Als je hierna de site bezoekt zal je gevraagd worden om een gebruikersnaam & wachtwoord in te geven.

Met een Database

Je kan hetzelfde doen als hiervoor, maar dan tegen een database. Hiervoor zul je wel in de vhost zelf de aanpassingen moeten maken, je kan er het volgende toevoegen.

DBDriver mysql
DBDParams "dbname=apacheauth user=apache password=xxxxxx"
# mod_authn_core and mod_auth_basic configuration
# for mod_authn_dbd
AuthType Basic
AuthName "My Server"

AuthBasicProvider dbd

# Also required for caching: tell the cache to cache dbd lookups!
AuthnCacheProvideFor dbd
AuthnCacheContext my-server

# mod_authz_core configuration
Require valid-user

# mod_authn_dbd SQL query to authenticate a user
AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"

In de database kunnen de gebruikers/wachwoorden in de tabel authn staan.