Tot nu toe is de Pi-Hole software niet afgeschermd door een paswoord. In deze blog leg ik uit hoe je dit alsnog voor elkaar krijgt.

Zoals ik in een vorige blog heb beschreven gebruik ik een Raspberry Pi met daarop Pi-Hole software om advertenties en malware te blokken. Het voordeel van deze manier is, dat ik dit dan op 1 centrale plaats instel voor mijn gehele netwerk aan apparaten

Pi-Hole heeft ook een web-based configuratie scherm dat je typisch niet zomaar van buitenaf beschikbaar wilt stellen daar dan de gehele wereld je browse geschiedenis kan inzien. Verder kun je tegenwoordig de Pi-Hole functionaliteit in het configuratie-scherm (tijdelijk) uit/inschakelen.

Aangezien Pi-Hole met de huidige versie (2.9.5) nog geen paswoord protectie heeft voor zijn configuratie-scherm is het niet verstandig om een port forward in te stellen op je router naar het IP-adres van je Raspberry Pi met Pi-Hole om bovenstaande redenen.

Soms is het echter wel handig dat je vanaf buitenaf bij het configuratie-scherm van Pi-Hole kunt. Nu kun je erg eenvoudig een paswoord protectie inschakelen met de Lighttpd webserver software waarvan Pi-Hole gebruikt maakt. Volg hiervoor de onderstaande stappen.

Creëer een verborgen .htpasswd directory:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo mkdir /etc/lighttpd/.htpasswd
sudo mkdir /etc/lighttpd/.htpasswd
sudo mkdir /etc/lighttpd/.htpasswd

Creëer nu een script (bijvoorbeeld ‘hash.sh’) waarmee we het paswoord van de gebruiken gaan hashen. Zet hierin de volgende inhoud:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/bin/sh
user=$1
realm=$2
pass=$3
hash=`echo -n "$user:$realm:$pass" | md5sum | cut -b -32`
echo "$user:$realm:$hash"
#!/bin/sh user=$1 realm=$2 pass=$3 hash=`echo -n "$user:$realm:$pass" | md5sum | cut -b -32` echo "$user:$realm:$hash"
#!/bin/sh
user=$1
realm=$2
pass=$3
hash=`echo -n "$user:$realm:$pass" | md5sum | cut -b -32`
echo "$user:$realm:$hash"

Make deze file ‘hash.sh’ uitvoerbaar met het volgende commando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chmod 755 ./hash.sh
chmod 755 ./hash.sh
chmod 755 ./hash.sh

Voer vervolgens dit script uit met als argumenten je gebruikers-naam, realm en een paswoord

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
./hash.sh 'username' 'myrealm' 'password'
./hash.sh 'username' 'myrealm' 'password'
./hash.sh 'username' 'myrealm' 'password'

Dit zal de volgende output geven:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
username:myrealm:<lange_string_met_nummers_en_letters>
username:myrealm:<lange_string_met_nummers_en_letters>
username:myrealm:<lange_string_met_nummers_en_letters>

Creëer nu een paswoord-file and copieer de inhoud van hierboven hierin:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo vi /etc/lighttpd/.htpasswd/lighttpd-htdigest.user
sudo vi /etc/lighttpd/.htpasswd/lighttpd-htdigest.user
sudo vi /etc/lighttpd/.htpasswd/lighttpd-htdigest.user

Voeg vervolgens de volgende regels toe aan de file ‘/etc/lighttpd/lighttpd.conf’ (vervang myrealm met jouw gekozen realm).

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/.htpasswd/lighttpd-htdigest.user"
auth.require = ( "/admin/" =>
(
"method" => "digest",
"realm" => "myrealm",
"require" => "valid-user"
),
)
auth.backend = "htdigest" auth.backend.htdigest.userfile = "/etc/lighttpd/.htpasswd/lighttpd-htdigest.user" auth.require = ( "/admin/" => ( "method" => "digest", "realm" => "myrealm", "require" => "valid-user" ), )
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/.htpasswd/lighttpd-htdigest.user"
auth.require = ( "/admin/" =>
   (
     "method" => "digest",
     "realm" => "myrealm",
     "require" => "valid-user"
   ),
)

Start tenslotte de Lighttpd service opnieuw:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo service lighttpd restart
sudo service lighttpd restart
sudo service lighttpd restart

Als je nu met je webbrowser naar het IP-adres van je Raspberry Pi met Pi-Hole erop browsed wordt er eerst om een Username en Password gevraagd.




Zeer waarschijnlijk zal deze mogelijkheid binnenkort standaard worden ingebouwd in Pi-Hole, maar op dit moment kun je bovenstaande methode gebruiken.