Certificaat voor je NAS regel je zo

Door: Gertjan Groen | 09 november 2021 09:04

How To

Zelfs als je een NAS alleen binnen je thuisnetwerk gebruikt, is het verstandig om daarmee met https te verbinden. Dat kan via een zogenoemd zelf-ondertekend certificaat, maar die geven wel (steeds meer) beperkingen. In dit artikel laten we zien hoe je een echt Let’s Encrypt-certificaat voor de encryptie gebruikt. We zetten volgens twee methodes een reverse proxy op als veilige tussenschakel, die je uiteraard ook voor andere webdiensten in kunt zetten.

Het is aan te raden om bij het benaderen van je NAS het https-adres te gebruiken. En in apps zet je een vinkje bij https. Dit beschermt je ook beter tegen cryptoware. Wel geeft je browser helaas vaak een niet zo subtiele waarschuwing dat de verbinding onveilig is en plaatst een rood uitroepteken in de adresbalk als je die negeert. In deze masterclass gaan we dat oplossen door de NAS een certificaat te geven dat door je browser en elk ander apparaat wordt geaccepteerd. Misschien heb je al eens met een zelf-ondertekend certificaat (in het Engels self signed certificate genoemd) geëxperimenteerd, waar de Chrome-browser met wat handmatige aanpassingen wel akkoord mee gaat. Maar zo’n zelf-ondertekend certificaat is een stuk lastiger of zelfs onmogelijk om ook goed op je smartphone of tablet te laten werken. Een oplossing voor dergelijke problemen is het gebruik van een echt certificaat, van bijvoorbeeld Let’s Encrypt, dat door vrijwel alle apparaten wordt geaccepteerd zonder aanpassingen. We gaan in deze masterclass een reverse proxy gebruiken als tussenschakel voor je NAS en andere webdiensten. We behandelen twee methodes. Bij de eerste gebruiken we alleen een Synology-NAS, bij de tweede methode een aparte server. Het is heel praktisch als je over een domeinnaam beschikt, zodat je voor de NAS en elke webdienst die je wilt benaderen een apart subdomein kunt gebruiken (zie het kader ‘Reverse proxy met subdomeinen’).

Reverse proxy met subdomeinen

Een reverse proxy is in feite een server die aanvragen aanneemt en doorstuurt naar een doelserver. Het doel kan bijvoorbeeld een webdienst zijn die op dezelfde server (localhost) op een ander poortnummer draait, of helemaal op een andere fysieke server. Ze worden vaak gebruikt om de prestaties van webservers te verbeteren, maar ook om de beveiliging en betrouwbaarheid te verbeteren.

In deze masterclass draait de reverse proxy of op de NAS zelf of op een andere server in het lokale netwerk. Toegang naar de reverse proxy gaat via http of https, eventueel met doorverwijzing van http naar https. We sturen via de router door portforwarding-regels poorten 80 en 443 door naar de reverse proxy. Die kan op basis van de zogenoemde hostnaam beslissen naar welke doelserver hij verzoeken moet doorsturen. Op die manier kun je handig verschillende webdiensten beschikbaar maken via diezelfde reverse proxy. Je NAS bijvoorbeeld achter ds.domein.nl en Home Assistant via hass.domein.nl.

01 Domein instellen

Wij gebruiken een domeinnaam bij domeinnaamregistratie- en webhostingbedrijf TransIP en gaan de DNS-instellingen aanpassen bij de hostingprovider via het controlepaneel. Voor het domein, in dit voorbeeld xda.nl, vullen we als naam de subdomeinnaam ds in, zodat de NAS via ds.xda.nl bereikbaar wordt. Het gaat om een A-record, waarbij we als waarde het ip-adres van de internetverbinding thuis invullen. Bewaar de aanpassingen. Het kan na een DNS-wijziging tot 24 uur duren voordat de wijzigingen merkbaar zijn, door caches van onder andere je internetprovider. Heb je geen vast ip-adres? Dan kun je dit bij veel providers op aanvraag regelen. Als alternatief kun je ook dynamisch DNS gebruiken, wat in veel routers en ook de Synology-NAS is ingebouwd. Het werkt zonder domeinnaam en kan ook met een dynamisch ip-adres overweg. Bij de NAS open je daarvoor Configuratiescherm. Ga naar Externe toegang / DDNS en klik op Toevoegen. Bij Serviceprovider kies je Synology. Voer een naam in bij Hostnaam. Hiermee zal steeds je ip-adres worden gekoppeld aan de bewuste naam (zoals naam.synology.me).

01 Via je hostingprovider kun je de DNS-instellingen voor het domein aanpassen.

02 Poorten doorsturen

Voor het maken van certificaten en bereiken van je NAS via internet moet je enkele poorten doorsturen vanaf je router. Onderstaande instructies zijn voor een AVM Fritz!Box, bij andere routers werkt het net wat anders. Open de gebruikersinterface en ga naar Internet / Toegang verlenen. Op het tabblad Poortvrijgaven kies je Apparaat voor vrijgaven toevoegen. Kies als apparaat de reverse proxy (je NAS of een aparte server) of voer handmatig het ip-adres in. Kies dan Nieuwe vrijgave. Nu kun je bij Toepassing direct de gewenste optie kiezen, zoals HTTP-server of HTTPS-server. Kies eerst HTTP-server. Je ziet dat zowel bij Poort op apparaat als Poort extern gewenst de waarde 80 wordt ingevuld (dat is de standaardpoort voor http-verkeer). Bij de optie HTTP-server is dat poort 443. Voeg ze beide toe zodat respectievelijk poort 80 en 443 worden doorgestuurd. Gebruik je een NAS, dan kun je met de optie Andere toepassing ook poort 5001 doorsturen voor de gebruikersinterface.

02 In je router kun je regels voor portforwarding instellen (hier in de webinterface van een Fritz!Box).

03 Externe server of NAS

Je kunt een reverse proxy op je NAS instellen, wat we als eerste methode bespreken, maar ook op een externe server. Het verschil is niet heel groot. Op de Synology-NAS draait namelijk standaard Nginx en de gebruikersinterface van DiskStation Manager (DSM) geeft je mogelijkheden om dit alles te configureren. Je kunt de NAS en diensten die daarop draaien met een certificaat beveiligen. Daarnaast kan de NAS als reverse proxy voor andere diensten in je netwerk fungeren. Hiervoor ga je in Configuratiescherm naar Toepassingsportaal / Reverse Proxy (bij DSM 7.0 Aanmeldingsportaal / Geavanceerd).

Het gebruik van een externe server geeft dezelfde mogelijkheden én extra voordelen. Zo is het veiliger, omdat bij kwetsbaarheden in de reverse proxy de achterliggende NAS buiten spel blijft. Ook is het minder belastend voor de NAS. En op het niveau van de reverse proxy kun je gemakkelijker beperkingen opleggen, zoals het blokkeren van extern verkeer.

03 Je NAS kan als reverse proxy voor andere webdiensten worden ingezet.

Gebruik van Synology-NAS

04 Certificaat maken

Bij deze eerste methode gebruiken we zoals gezegd alleen een Synology-NAS waar je poorten 80, 443 en 5001 naar doorstuurt. We gaan eerst het certificaat voor de NAS maken. Open daarvoor de webinterface van DiskStation Manger en ga naar Configuratiescherm. Zorg dat je in de Geavanceerde modus zit, indien nodig verander je dit rechtsboven. Ga vervolgens naar Beveiliging / Certificaat en kies Toevoegen. Selecteer de optie Een nieuw certificaat toevoegen en klik op Volgende. Voer een beschrijving in, bijvoorbeeld Let’s Encrypt, en selecteer daaronder Krijg een certificaat van Let’s Encrypt. Klik weer op Volgende. Bij Domeinnaam voer je vervolgens de domeinnaam in waarvoor het certificaat moet gaan gelden. In ons voorbeeld is dat ds.xda.nl. Voer ook een e-mailadres in, Let’s Encrypt bewaart dat als onderdeel van je domein. Bij Onderwerp alternatieve naam kun je meer domeinen opgeven waar het bewuste certificaat voor moet gelden, vaak ook Subject Alternative Name genoemd. Je kunt zulke subdomeinen ook altijd later (apart) toevoegen. Klik ten slotte op Toepassen. Hierna wordt het Let’s Encrypt-certificaat aangemaakt en gecertificeerd. Zorg dat poort 80 correct is doorgestuurd, anders krijg je een foutmelding.

04 Via de gebruikersinterface maken we een Let’s Encrypt-certificaat aan.

05 Certificaat configureren

Je kunt het nieuwe certificaat nu configureren. Klik erop en kies Configureren (bij DSM 7.0 Instellingen). Geef aan voor welke doeleinden de NAS dit certificaat moet gebruiken. Achter Systeemstandaard kies je het Let’s Encrypt-certificaat, zodat het voor de gebruikersinterface van DiskStation Manager wordt gebruikt.

Het is verstandig om het nieuwe Let’s Encrypt-certificaat hierna nog als standaardcertificaat in te stellen. Op die manier zetten we het Synology-com-certificaat buitenspel, dat (door de browser) als onveilig wordt beschouwd. Klik daarvoor weer op het Let’s Encrypt-certificaat en klik op het pijltje bij Toevoegen / Bewerken (bij DSM 7.0 Actie / Bewerken). Zet een vinkje bij Instellen als standaardcertificaat en klik op OK.

Verder raden we je aan om http-verkeer om te leiden naar https. Hiervoor ga je in DSM 6.2 in Configuratiescherm naar Netwerk / DSM-instellingen. Zet een vinkje bij Automatisch de http-verbinding omleiden naar https. Bij DSM 7.0 kies je in Configuratiescherm de opties Aanmeldingsportaal / DSM en selecteer je Automatisch de http-verbinding omleiden naar https. Klik dan op Toepassen.

05 We stellen het Let’s Encrypt-certificaat in als standaardcertificaat.

06 Toegang tot de NAS

Standaard wacht de NAS op poort 5001 op versleutelde verbindingen via https://diskstation:5001 of een andere naam afhankelijk van wat je hebt ingesteld. Omdat het certificaat is gemaakt voor ds.xda.nl zul je echter dat adres moeten gebruiken, dus https://ds.xda.nl:5001, anders krijg je alsnog een certificaatfout. Hierbij is toegang op afstand ook mogelijk, buiten je lokale netwerk. We gaan ervan uit dat je dat ook wilt. Maar wil je dat liever niet, dan zou je dat met een eigen DNS-server kunnen oplossen. Je moet er dan voor zorgen dat de domeinnaam (in ons voorbeeld ds.xda.nl) via je eigen DNS-server direct naar het ip-adres van de NAS verwijst (in ons voorbeeld 10.0.10.202). Je kunt er vervolgens, via de instellingen van je router, voor zorgen dat alle clients in het netwerk (via DHCP) die DNS-server gebruiken. Dit valt buiten het bestek van deze masterclass. Gaat het bijvoorbeeld alleen om een pc, dan kun je het eventueel zonder DNS-server regelen via het hosts-bestand (zie het kader ‘Directe toegang tot NAS via hosts-bestand’). Bij de tweede methode die we hierna bespreken kun je eventueel wél, op de reverse-proxy-server zelf, verkeer buiten je lokale netwerk tegenhouden.

06 Benader je de NAS via de lokale netwerknaam, dan geeft de browser alsnog een certificaatfout.

Directe toegang tot NAS via hosts-bestand

Wil je dat het internetadres (ds.xda.nl) direct naar het ip-adres van de NAS verwijst? Zonder eigen DNS-server? Dan kun je dat eventueel op de clients zelf instellen. Onder Windows gaat dat via het hosts-bestand. Open daarvoor de map C:\Windows\System32\drivers\etc. Kopieer het bestand hosts naar een bestandslocatie waar je dit mag bewerken. Open het met bijvoorbeeld Kladblok en voeg een regel toe met het ip-adres van de NAS gevolgd door de domeinnaam, bijvoorbeeld:

10.0.10.202ds.xda.nl

Kopieer het bestand weer terug naar de genoemde locatie. Als je nu https://ds.xda.nl:5001 bezoekt, dan word je direct naar de NAS in het lokale netwerk gebracht. Het certificaat blijft geldig, het ip-adres heeft daar geen invloed op. Via de Opdrachtprompt kun je met ping ds.xda.nl of nslookup ds.xda.nl controleren dat het lokale ip-adres wordt gebruikt. Een DNS-server is praktischer, omdat het meteen voor elk apparaat in je netwerk werkt, als je de DNS-server kenbaar maakt via DHCP.

Via het hosts-bestand kan de domeinnaam direct naar het interne ip-adres verwijzen.

Handmatige methode

07 Server-installatie

Bij de handmatige methode ga je Nginx als reverse proxy installeren, waarna je de certificaten op deze server regelt. Zorg er voor dat poorten 80 en 443 naar deze server worden doorgestuurd. Voor de NAS en elke webdienst die je via de reverse proxy wilt benaderen, kun je vervolgens een configuratiebestand met alle vereiste details maken. Eventueel kun je alles in één configuratiebestand zetten, maar aparte bestanden zijn overzichtelijker, zeker bij veel extra opties. Op basis van de hostnaam kun je diensten van elkaar onderscheiden. En als je dat prettig vindt, kun je de toegang op allerlei manieren beperken en bijvoorbeeld gebruikers buiten je lokale netwerk uitsluiten. Dit alles maakt de methode veiliger dan de voorgaande. Nginx is voor veel platforms beschikbaar. Hier gaan we uit van een server met Ubuntu 20.04, maar een Raspberry Pi met het besturingssysteem Raspberry Pi OS is bijvoorbeeld ook een prima optie. Het kan geen kwaad als er al andere toepassingen op draaien, zolang die niet de http-poort (80) en https-poort (443) claimen.

07 Nginx kun je ook installeren op een Raspberry Pi met bijvoorbeeld Raspberry Pi OS.

08 Installatie Nginx

Zorg na de installatie van het besturingssysteem dat je bent ingelogd middels ssh. Vervolgens installeer je Nginx met het commando:

sudo apt-get install nginx

Start de webserver met:

sudo service nginx start

Bezoek het ip-adres van de server en controleer of de welkomstpagina van Nginx verschijnt. Voor het maken van Let’s Encrypt-certificaten gaan we Certbot gebruiken. De instructies voor de installatie voor jouw webserver en besturingssysteem vind je hier. Die instructies gaan bij Ubuntu uit van een installatie via Snap. Hier kiezen we voor de mogelijk iets oudere versie van Certbot uit de repository’s van Ubuntu. Je installeert Certbot met het commando:

sudo apt-get install certbot python3-certbot-nginx

Als eerste maken we een configuratiebestand voor de NAS. De standaardmap waarin je deze maakt is /etc/nginx/conf.d. Blader naar de map met de opdracht:

cd /etc/nginx/conf.d

En maak het configuratiebestand met:

nano ds.conf

In eerste instantie hoef je hier alleen onderstaande regels in te zetten:

server {

listen 80;

server_name ds.xda.nl;

}

Controleer de configuratie met:

nginx -t

08 Via de website van Certbot vind je instructies voor de installatie per platform.

09 Certificaat maken

We kunnen nu het certificaat maken. Start daarvoor Certbot met certbot. Hierna wordt je e-mailadres gevraagd en moet je akkoord gaan met de gebruiksvoorwaarden. Vervolgens kun je kiezen voor welke servernaam je het certificaat wil maken. Voer het getal in bij het domein, in dit voorbeeld kiezen we 1 voor ds.xda.nl. Als laatste kun je kiezen of http-verkeer moet worden doorgestuurd naar https. Als je daarvoor kiest, en dat raden we aan, zal Certbot de configuratie daarop aanpassen.

Open daarna het configuratiebestand met nano en bekijk wat is toegevoegd:

nano ds.conf

Als laatste stap moeten we alleen nog de regels voor de reverse proxy hieraan toevoegen. Er zijn twee blokken omsloten door server {}. Het onderste blok bevat de doorverwijzing van http naar https. In het bovenste blok voegen we aan de onderkant de volgende regels toe. Achter proxy_pass zet je uiteraard het adres van je NAS.

location / {

proxy_pass https://10.0.10.202:5001;

proxy_redirect http:// https://;

}

Na het maken van deze aanpassing moet je Nginx even herstarten met:

service nginx reload

09 Door enkele vragen te beantwoorden kun je het certificaat voor je NAS maken.

10 Controleer de configuratie

In afbeelding 10 zie je hoe de complete configuratie er uit ziet. Om je NAS te bezoeken, kun je rechtstreeks https://ds.xda.nl gebruiken. Intern zal de reverse proxy met poort 5001 verbinden. Wil je de toegang om veiligheidsredenen beperken tot gebruikers op het lokale netwerk? Dan kun je in het configuratiebestand binnen het blok van de reverse proxy het volgende toevoegen:

allow 10.0.0.0/24;

deny all;

Hier geven we eerst aan vanaf welke netwerken verkeer wordt geaccepteerd. In dit voorbeeld is dat 10.0.0.0/24 (in CIDR-notatie) maar in jouw situaties kan het bijvoorbeeld ook 192.168.1.0/24 zijn. We blokkeren daarna al het andere verkeer.

Een laatste stap is het automatisch vernieuwen van de certificaten. Voor daarvoor dit commando uit:

crontab -e

En voeg deze regel toe:

0 12 * * * /usr/bin/certbot renew --quiet

10 Het configuratiebestand met de reverse proxy voor onze NAS.

0 Reactie(s) op: Certificaat voor je NAS regel je zo

  • Om te reageren moet je ingelogd zijn. Nog geen account? Registreer je dan en praat mee!
  • Er zijn nog geen reacties op dit artikel.

Wanneer je een reactie plaatst ga je akoord
met onze voorwaarden voor reacties.