SSH Toegang Beperkt Vanaf Internet (Port 22 Geblokkeerd)

💼 Management Samenvatting

Het blokkeren van SSH-toegang (TCP-poort 22) vanaf het publieke internet via netwerkbeveiligingsgroepregels voorkomt brute-force-aanvallen, credential stuffing en geautomatiseerde scans tegen Linux- en Unix-servers, waarbij veilige alternatieven zoals Azure Bastion of Just-In-Time VM Access worden gebruikt voor legitieme administratieve toegang.

Aanbeveling
IMPLEMENTEER ONMIDDELLIJK - KRITIEK
Risico zonder
Critical
Risk Score
10/10
Implementatie
0u
Van toepassing op:
Azure Virtuele Machines
Azure Virtual Networks
Netwerkbeveiligingsgroepen

SSH (Secure Shell, poort 22) is het standaardprotocol voor externe beheer van Linux- en Unix-systemen en behoort tot de meest aangevallen services op internet. Open SSH-toegang vanaf internet introduceert kritieke beveiligingsrisico's die organisaties niet kunnen negeren. Brute-force-aanvallen vormen de meest voorkomende bedreiging, waarbij aanvallers geautomatiseerde tools gebruiken om inloggegevens te raden. Deze tools kunnen duizenden inlogpogingen per minuut uitvoeren, waardoor zwakke wachtwoorden binnen uren kunnen worden gekraakt. Credential stuffing is een geraffineerde aanvalstechniek waarbij gestolen gebruikersnaam- en wachtwoordcombinaties van andere datalekken worden gebruikt om toegang te verkrijgen tot systemen waar gebruikers dezelfde inloggegevens hergebruiken. Zero-day-kwetsbaarheden in SSH-implementaties, zoals bekende bugs in OpenSSH, worden regelmatig geëxploiteerd voor externe code-uitvoering, waardoor aanvallers volledige controle over servers kunnen verkrijgen. Geautomatiseerde scans vormen een continue bedreiging: bots scannen het internet continu af naar open poort 22, vaak binnen minuten na de implementatie van een nieuwe virtuele machine. Systemen met standaard gebruikersnamen zoals root, admin of ubuntu worden direct geprobeerd met bekende wachtwoordlijsten. Na een succesvolle compromittering gebruiken aanvallers de verkregen SSH-referenties voor laterale beweging door het netwerk, waardoor ze toegang kunnen krijgen tot andere systemen en gevoelige gegevens kunnen stelen. Werkelijke gegevens tonen de omvang van het probleem: systemen met open SSH-toegang vanaf internet ontvangen honderden brute-force-pogingen per dag, vaak al binnen uren na implementatie. Shodan.io, een zoekmachine voor internetverbonden apparaten, toont meer dan 25 miljoen blootgestelde SSH-services wereldwijd. Recente datalekken illustreren de ernst: de Kaseya-ransomware-aanval maakte gebruik van gecompromitteerde SSH-toegang, de SolarWinds-aanval gebruikte SSH-sleutels voor laterale beweging, en cryptocurrency-miningbotnets infecteren systemen via brute-force-aanvallen op SSH. Azure Microsoft Defender voor Cloud detecteert dagelijks duizenden SSH brute-force-aanvallen tegen Azure VM's. Het blokkeren van SSH-toegang vanaf internet en het gebruik van veilige alternatieven is daarom absoluut noodzakelijk voor productiesystemen.

PowerShell Modules Vereist
Primary API: Azure API
Connection: Connect-AzAccount
Required Modules: Az.Accounts, Az.Network

Implementatie

Deze controle verifieert dat netwerkbeveiligingsgroepen geen inkomende toestemmingsregels bevatten voor SSH-toegang vanaf internet. Specifiek controleert de controle op regels met de volgende kenmerken: bronadres ingesteld op alles (Any), 0.0.0.0/0 of de 'Internet' servicetag, bestemmingspoort 22 (SSH), protocol TCP, richting inkomend en actie toestaan. Voor administratieve toegang zijn er verschillende veilige alternatieven beschikbaar. Azure Bastion is de aanbevolen oplossing en biedt browsergebaseerde RDP- en SSH-toegang via de Azure-portal zonder blootstelling van openbare IP-adressen. Just-In-Time VM Access biedt tijdbeperkte poortopening met MFA-verificatie via Microsoft Defender voor Cloud. VPN- of ExpressRoute-verbindingen bieden site-to-site-connectiviteit voor beheerverkeer via privéconnectiviteit. Een jump box of bastionhost is een geharde VM binnen het virtuele netwerk met beperkte bron-IP-adressen, typisch alleen voor kantoorbereiken. Best practices voor NSG-configuratie omvatten een standaard weigerbeleid voor al het verkeer vanaf internet, expliciete toestemming voor vertrouwde IP-bereiken zoals kantoren en beheerwerkstations via /32-specifieke IP-adressen, een aparte NSG voor het beheersubnet met extra restrictieve regels, en het loggen van NSG-stromen voor auditdoeleinden van verbindingspogingen. De implementatie omvat het auditen van bestaande NSG-regels via PowerShell of de portal, het verwijderen of wijzigen van regels die SSH-toegang vanaf internet toestaan, het implementeren van Azure Bastion voor veilige beheertoegang, het inschakelen van Just-In-Time VM Access waar van toepassing, en het documenteren van uitzonderingsprocessen voor het zeldzame geval dat er een legitieme behoefte bestaat voor SSH-toegang vanaf specifieke IP-adressen.

Vereisten

Voor het implementeren van deze controle zijn verschillende vereisten van toepassing die organisaties moeten voorbereiden voordat zij beginnen met het beperken van SSH-toegang vanaf internet. Ten eerste moeten organisaties beschikken over Azure Virtual Networks met geconfigureerde netwerkbeveiligingsgroepen. Deze NSG's vormen de basis voor het implementeren van netwerkbeveiligingsregels die SSH-toegang kunnen blokkeren of beperken. Zonder correct geconfigureerde NSG's is het niet mogelijk om inkomend verkeer te controleren en te beperken.

Organisaties moeten een volledige inventarisatie hebben van alle virtuele machines die SSH-administratieve toegang vereisen. Deze inventarisatie moet niet alleen de VM's zelf omvatten, maar ook informatie over welke beheerders toegang nodig hebben, op welke tijden deze toegang wordt gebruikt, en wat de bedrijfsrechtvaardiging is voor elke VM die SSH-toegang vereist. Deze informatie is essentieel om te bepalen welke alternatieve toegangsmethoden moeten worden geïmplementeerd en welke VM's mogelijk kunnen worden uitgeschakeld of verwijderd als de toegang niet langer nodig is.

Vanuit een technisch perspectief moeten beheerders beschikken over Contributor-rechten op zowel de netwerkbeveiligingsgroepen als de virtuele machines. Deze rechten zijn noodzakelijk om NSG-regels te kunnen wijzigen, verwijderen of toevoegen, en om eventuele configuratiewijzigingen aan VM's door te voeren die nodig zijn voor de implementatie van alternatieve toegangsmethoden. Zonder deze rechten kunnen beheerders de benodigde wijzigingen niet doorvoeren en blijft de SSH-toegang vanaf internet open staan.

Een kritieke vereiste is de beschikbaarheid van een alternatieve veilige toegangsmethode voordat SSH-toegang vanaf internet wordt geblokkeerd. Organisaties moeten kiezen tussen Azure Bastion, Just-In-Time VM Access of een site-to-site VPN-verbinding. Azure Bastion is de meest aanbevolen oplossing omdat deze volledig geïntegreerd is met de Azure-portal en geen openbare IP-adressen vereist. Just-In-Time VM Access biedt tijdbeperkte toegang met MFA-verificatie, wat ideaal is voor organisaties die incidentele toegang nodig hebben. Site-to-site VPN-verbindingen zijn geschikt voor organisaties die al een VPN-infrastructuur hebben en beheerverkeer volledig via privéconnectiviteit willen routeren.

Documentatie van legitieme administratieve toegangsvereisten is essentieel voor zowel compliance- als beveiligingsdoeleinden. Deze documentatie moet duidelijk maken waarom SSH-toegang nodig is, welke gebruikers toegang vereisen, en wat de bedrijfsrechtvaardiging is voor elke VM die SSH-toegang nodig heeft. Deze informatie helpt organisaties om te bepalen of alternatieve toegangsmethoden kunnen worden gebruikt en om uitzonderingen te documenteren wanneer SSH-toegang vanaf specifieke IP-adressen absoluut noodzakelijk is.

Communicatie naar beheerders over nieuwe SSH-toegangsprocedures is cruciaal voor een succesvolle implementatie. Beheerders moeten worden geïnformeerd over hoe zij toegang kunnen krijgen via Azure Bastion of Just-In-Time VM Access, welke stappen zij moeten volgen om toegang aan te vragen, en wat de nieuwe werkprocessen zijn. Training en documentatie moeten beschikbaar zijn om ervoor te zorgen dat beheerders vertrouwd zijn met de nieuwe toegangsmethoden voordat SSH-toegang vanaf internet wordt geblokkeerd.

Ten slotte is een testomgeving essentieel voor de verificatie van veilige toegangsmethoden voordat wijzigingen worden doorgevoerd in productieomgevingen. In deze testomgeving kunnen organisaties Azure Bastion of Just-In-Time VM Access implementeren en testen, NSG-regels configureren en verifiëren, en beheerders trainen in het gebruik van de nieuwe toegangsmethoden. Deze testomgeving helpt om problemen te identificeren en op te lossen voordat de wijzigingen worden doorgevoerd in kritieke productiesystemen, waardoor het risico op onbedoelde toegangsverlies wordt geminimaliseerd.

Implementatie

De implementatie van SSH-toegangsbeperkingen vanaf internet vereist een gestructureerde aanpak die begint met een grondige audit van de huidige SSH-blootstelling. Deze eerste stap is cruciaal omdat organisaties moeten begrijpen welke systemen momenteel kwetsbaar zijn voordat zij maatregelen kunnen nemen om deze kwetsbaarheden te verhelpen.

Gebruik PowerShell-script ssh-access-restricted.ps1 (functie Invoke-Monitoring) – PowerShell-script voor het scannen van NSG-regels met onbeperkte SSH-toegang.

Het auditproces begint met het uitvoeren van het PowerShell-script dat alle netwerkbeveiligingsgroepen in de Azure-omgeving scant op regels die SSH-toegang vanaf internet toestaan. Het script identificeert specifiek regels die poort 22 openstellen voor verkeer vanaf het internet, ongeacht of dit via de servicetag 'Internet', het IP-adresbereik 0.0.0.0/0, of een wildcard-bronadres is geconfigureerd. Na het uitvoeren van het script moeten organisaties alle virtuele machines identificeren die momenteel blootgestelde SSH-toegang hebben. Voor elke geïdentificeerde VM moet de bedrijfsrechtvaardiging worden gedocumenteerd, indien deze aanwezig is. Deze documentatie helpt organisaties om te bepalen of de SSH-toegang daadwerkelijk nodig is of dat alternatieve toegangsmethoden kunnen worden gebruikt. Op basis van deze informatie kunnen organisaties prioriteiten stellen voor de verhelping, waarbij systemen met kritieke gegevens of hoge blootstelling de hoogste prioriteit krijgen.

De tweede stap in het implementatieproces omvat het implementeren van een veilige alternatieve toegangsmethode. Organisaties moeten één van de drie beschikbare opties kiezen, afhankelijk van hun specifieke behoeften en bestaande infrastructuur. Azure Bastion is de meest aanbevolen oplossing en biedt browsergebaseerde RDP- en SSH-toegang via de Azure-portal zonder dat openbare IP-adressen nodig zijn. De implementatie van Azure Bastion is relatief eenvoudig: via de Azure-portal navigeren beheerders naar de optie om Azure Bastion aan te maken, selecteren het virtuele netwerk waarop Bastion moet worden geïmplementeerd, en voltooien de implementatie, wat typisch 10 tot 15 minuten duurt. Om verbinding te maken met virtuele machines via Bastion, navigeren beheerders naar de VM in de portal, selecteren de optie Verbinden, kiezen voor Bastion, en voeren de benodigde inloggegevens in. De voordelen van Azure Bastion zijn aanzienlijk: er is geen blootstelling van openbare IP-adressen, toegang is volledig browsergebaseerd zonder extra clientsoftware, meervoudige authenticatie wordt ondersteund, en alle toegang wordt volledig gelogd voor auditdoeleinden.

Just-In-Time VM Access biedt een alternatieve benadering waarbij poorten tijdelijk worden geopend wanneer toegang nodig is. Deze functie is beschikbaar via Microsoft Defender voor Cloud en kan worden ingeschakeld op individuele virtuele machines. Wanneer een beheerder toegang nodig heeft, moet hij of zij een toegangsverzoek indienen waarbij een tijdvenster wordt opgegeven (tussen 1 en 24 uur) en het bron-IP-adres wordt gespecificeerd. Na het verstrijken van het tijdvenster wordt de poort automatisch gesloten, waardoor de blootstellingstijd wordt geminimaliseerd. De voordelen van Just-In-Time VM Access omvatten tijdbeperkte toegang die de aanvalsoppervlakte minimaliseert, MFA-verificatie voor extra beveiliging, en automatische opruiming die ervoor zorgt dat poorten niet per ongeluk open blijven staan. Deze oplossing is ideaal voor organisaties die incidentele toegang nodig hebben en niet willen investeren in een permanente Bastion-infrastructuur.

Voor organisaties die al beschikken over een site-to-site VPN- of ExpressRoute-verbinding, kan beheerverkeer volledig via deze privéconnectiviteit worden gerouteerd. Deze aanpak vereist de implementatie van een VPN-gateway voor veilige connectiviteit tussen de on-premises omgeving en Azure. Beheerders krijgen toegang via interne virtuele netwerk-IP-adressen zonder enige blootstelling aan het publieke internet. Het voordeel van deze aanpak is dat al het beheerverkeer via privéconnectiviteit loopt, wat de beveiliging verder verbetert en compliance-vereisten kan helpen vervullen voor organisaties die strenge netwerksegmentatie vereisen.

De derde stap in het implementatieproces omvat het bijwerken van netwerkbeveiligingsgroepregels om SSH-toegang vanaf internet te blokkeren. Via de Azure-portal navigeren beheerders naar netwerkbeveiligingsgroepen, selecteren de relevante NSG, en openen de inkomende beveiligingsregels. Hier moeten zij zoeken naar SSH-toestemmingsregels die poort 22 openstellen met een bron ingesteld op alles of internet. De aanbevolen aanpak is om deze regels volledig te verwijderen wanneer Azure Bastion of Just-In-Time VM Access wordt gebruikt, omdat deze alternatieven geen openbare SSH-toegang vereisen. Als alternatief kunnen organisaties ervoor kiezen om de bron te beperken tot specifieke vertrouwde IP-adressen, waarbij /32-adressen worden gebruikt voor individuele werkstations. Het is cruciaal om ervoor te zorgen dat weigerregels een lager prioriteitsnummer hebben dan toestemmingsregels, omdat NSG-regels worden geëvalueerd op basis van prioriteit en de eerste overeenkomende regel wordt toegepast. Na het opslaan van de wijzigingen moeten organisaties verifiëren dat SSH-verbindingen vanaf internet worden geblokkeerd, terwijl toegang via Azure Bastion of Just-In-Time VM Access nog steeds functioneert.

De vierde en laatste stap in het implementatieproces omvat het verharden van de SSH-configuratie voor eventuele resterende toegestane SSH-toegang. Dit is belangrijk voor het zeldzame geval dat organisaties legitieme SSH-toegang vanaf specifieke IP-adressen moeten toestaan. De eerste en meest kritieke hardeningsmaatregel is het uitschakelen van wachtwoordauthenticatie en het vereisen van sleutelgebaseerde authenticatie. Dit wordt geconfigureerd in het bestand /etc/ssh/sshd_config door de optie PasswordAuthentication in te stellen op 'no'. Sleutelgebaseerde authenticatie is aanzienlijk veiliger omdat het niet kwetsbaar is voor brute-force-aanvallen op wachtwoorden. Het uitschakelen van root-login is eveneens essentieel en wordt geconfigureerd door PermitRootLogin in te stellen op 'no'. Dit voorkomt dat aanvallers direct als root kunnen inloggen, zelfs als zij in het bezit zijn van geldige referenties. Hoewel het gebruik van een niet-standaard poort (bijvoorbeeld poort 2222 in plaats van 22) de zichtbaarheid kan verminderen, is dit een vorm van security through obscurity en mag het niet worden beschouwd als primaire verdediging. Het implementeren van fail2ban biedt automatische IP-blokkering na mislukte inlogpogingen, wat helpt om brute-force-aanvallen te beperken. Ten slotte moeten organisaties sterke sleutelalgoritmen gebruiken, waarbij SSH-sleutels minimaal 4096-bit RSA of Ed25519 moeten gebruiken om voldoende cryptografische sterkte te garanderen.

Monitoring

Gebruik PowerShell-script ssh-access-restricted.ps1 (functie Invoke-Monitoring) – Continue monitoring van NSG-regels voor onbeperkte SSH-toegang.

Continue monitoring van SSH-toegangsbeperkingen is essentieel om ervoor te zorgen dat de geïmplementeerde beveiligingsmaatregelen effectief blijven en dat nieuwe kwetsbaarheden snel worden geïdentificeerd. Monitoring moet worden beschouwd als een continu proces dat meerdere lagen van verificatie en detectie omvat, niet als een eenmalige controle.

Wekelijks moeten organisaties het PowerShell-script uitvoeren om alle netwerkbeveiligingsgroepregels te auditen op open SSH-toegang. Deze regelmatige controles helpen om nieuwe regels te identificeren die mogelijk per ongeluk zijn toegevoegd of die zijn geïmplementeerd zonder de juiste goedkeuring. Het script moet worden uitgevoerd als onderdeel van een geautomatiseerd proces dat resultaten rapporteert aan het beveiligingsteam, zodat afwijkingen snel kunnen worden opgemerkt en verholpen.

Azure Policy biedt een krachtige manier om compliance te handhaven door automatisch te controleren of beheerspoorten zijn gesloten op virtuele machines. Organisaties moeten het ingebouwde beleid 'Beheerspoorten moeten gesloten zijn op uw virtuele machines' toewijzen, of een aangepast beleid maken dat specifiek is gericht op poort 22. Deze beleidsregels kunnen worden geconfigureerd om automatisch te waarschuwen wanneer nieuwe resources worden gemaakt die niet voldoen aan de beveiligingsvereisten, of om automatisch corrigerende maatregelen te nemen wanneer mogelijk. Door beleidsregels te gebruiken, kunnen organisaties proactief voorkomen dat nieuwe systemen worden geïmplementeerd met onbeveiligde SSH-toegang.

Microsoft Defender voor Cloud biedt aanbevelingen die specifiek gericht zijn op de beveiliging van beheerspoorten. Organisaties moeten regelmatig de aanbeveling 'Beheerspoorten van virtuele machines moeten worden beschermd met just-in-time netwerktoegangscontrole en authenticatie' controleren en actie ondernemen op eventuele waarschuwingen. Deze aanbevelingen helpen organisaties om te identificeren welke virtuele machines mogelijk nog steeds kwetsbaar zijn en welke stappen moeten worden ondernomen om deze kwetsbaarheden te verhelpen.

NSG Flow Logs bieden gedetailleerde inzichten in alle verbindingspogingen naar poort 22, inclusief pogingen die worden geblokkeerd door netwerkbeveiligingsgroepregels. Deze geblokkeerde verbindingen zijn vaak aanvalspogingen, en het monitoren ervan helpt organisaties om te begrijpen welke bedreigingen hun systemen proberen te bereiken. Door regelmatig flow logs te analyseren, kunnen organisaties trends identificeren, zoals toename van aanvalspogingen na een bekend datalek, of geografische patronen die kunnen wijzen op gecoördineerde aanvallen.

Log Analytics biedt geavanceerde querycapaciteiten voor het analyseren van SSH-verbindingspogingen. Organisaties kunnen queries gebruiken zoals 'AzureNetworkAnalytics_CL | waar DestPort == 22 en FlowStatus_s == 'Denied'' om specifieke informatie te extraheren over geblokkeerde SSH-verbindingspogingen. Deze queries kunnen worden geautomatiseerd en geconfigureerd om waarschuwingen te genereren wanneer bepaalde drempelwaarden worden overschreden, zoals een plotselinge toename van verbindingspogingen of pogingen vanaf specifieke IP-adresbereiken.

Onmiddellijke waarschuwingen moeten worden geconfigureerd voor nieuwe netwerkbeveiligingsgroepregels die SSH-toegang vanaf internet toestaan. Deze waarschuwingen moeten worden beschouwd als beveiligingsincidenten en moeten leiden tot onmiddellijke actie, omdat het toevoegen van dergelijke regels een schending van het beveiligingsbeleid is. Waarschuwingssystemen moeten worden geconfigureerd om meerdere belanghebbenden te informeren, inclusief het beveiligingsteam, netwerkbeheerders en compliance-officers, zodat snelle corrigerende maatregelen kunnen worden genomen.

Maandelijks moeten organisaties de gebruikerslogboeken van Azure Bastion en Just-In-Time VM Access controleren om patronen in administratieve toegang te identificeren. Deze analyse helpt organisaties om te begrijpen hoe vaak toegang wordt aangevraagd, welke gebruikers toegang nodig hebben, en of er ongebruikelijke patronen zijn die kunnen wijzen op misbruik of onjuiste configuratie. Deze informatie kan ook worden gebruikt om de effectiviteit van de geïmplementeerde alternatieve toegangsmethoden te evalueren en om verbeteringen te identificeren die kunnen worden doorgevoerd.

Remediatie

Gebruik PowerShell-script ssh-access-restricted.ps1 (functie Invoke-Remediation) – Herstellen van SSH-toegangsproblemen.

Wanneer open SSH-toegang wordt gedetecteerd, moet dit worden beschouwd als een kritieke bevinding die onmiddellijke actie vereist. De remediatieprocedure moet worden uitgevoerd volgens een gestructureerd incidentresponsplan dat ervoor zorgt dat alle aspecten van de kwetsbaarheid worden aangepakt en dat toekomstige incidenten worden voorkomen.

De eerste en meest kritieke actie is het onmiddellijk blokkeren van SSH-toegang vanaf internet in de netwerkbeveiligingsgroep. Dit kan worden bereikt door de bron van de regel te wijzigen naar specifieke IP-adressen of door de regel volledig te verwijderen als alternatieve toegangsmethoden beschikbaar zijn. Deze actie moet binnen minuten na detectie worden uitgevoerd, niet uren of dagen, omdat elke minuut dat SSH-toegang open staat het risico op compromittering aanzienlijk verhoogt.

Na het blokkeren van de toegang moet een grondige beoordeling van de blootstelling worden uitgevoerd. Organisaties moeten de NSG Flow Logs controleren om te bepalen of SSH daadwerkelijk is benaderd, vanaf welke IP-adressen deze toegang heeft plaatsgevonden, en wanneer deze toegang heeft plaatsgevonden. Deze informatie is essentieel voor het begrijpen van de omvang van de blootstelling en voor het bepalen van de volgende stappen in het incidentresponsproces.

Een diepgaand onderzoek moet worden uitgevoerd door de SSH-authenticatielogboeken te controleren. Op Linux-systemen bevinden deze logboeken zich typisch in /var/log/auth.log en bevatten gedetailleerde informatie over geslaagde en mislukte inlogpogingen. Deze logboeken kunnen onthullen of er daadwerkelijk ongeautoriseerde toegang heeft plaatsgevonden, welke gebruikersaccounts zijn geprobeerd, en welke IP-adressen de toegangspogingen hebben uitgevoerd. Deze informatie is cruciaal voor het bepalen of het systeem is gecompromitteerd en welke corrigerende maatregelen moeten worden genomen.

Als ongeautoriseerde toegang wordt gedetecteerd, moet een volledig beveiligingsincidentresponsproces worden geactiveerd. Dit proces omvat het isoleren van de betrokken virtuele machine om verdere schade te voorkomen, het uitvoeren van forensisch onderzoek om de omvang van de compromittering te bepalen, en het roteren van alle referenties op de betrokken systemen. Het incidentresponsproces moet worden uitgevoerd door getrainde beveiligingsprofessionals die ervaring hebben met het omgaan met gecompromitteerde systemen en die de juiste procedures volgen om bewijs te behouden voor eventuele juridische of compliance-doeleinden.

Het identificeren van de hoofdoorzaak is essentieel om te voorkomen dat vergelijkbare incidenten in de toekomst plaatsvinden. Organisaties moeten onderzoeken hoe de NSG-regel is aangemaakt: was het een configuratiefout, een gebrek aan beleid dat dergelijke regels had moeten voorkomen, of menselijke fout? Deze analyse helpt organisaties om systeemfouten te identificeren en te corrigeren, zoals het ontbreken van automatische controles of het ontbreken van goedkeuringsprocessen voor netwerkconfiguratiewijzigingen.

Als onderdeel van de remediatie moet Azure Bastion worden geïmplementeerd voor veilige toekomstige toegang. Dit zorgt ervoor dat beheerders toegang kunnen krijgen tot virtuele machines zonder dat SSH-toegang vanaf internet nodig is. De implementatie van Bastion moet worden beschouwd als een permanente oplossing, niet als een tijdelijke maatregel, en moet worden geconfigureerd volgens best practices om maximale beveiliging te garanderen.

Alle referenties op betrokken virtuele machines moeten onmiddellijk worden geroteerd. Dit omvat zowel SSH-sleutels als wachtwoorden, zelfs als er geen bewijs is van daadwerkelijke compromittering. Het roteren van referenties is een preventieve maatregel die ervoor zorgt dat eventuele gestolen referenties niet langer bruikbaar zijn. Het proces moet worden uitgevoerd voor alle gebruikersaccounts die toegang hebben tot de betrokken systemen, niet alleen voor accounts waarvan bekend is dat ze zijn gecompromitteerd.

Systemen moeten worden bijgewerkt om ervoor te zorgen dat de SSH-daemon up-to-date is en geen bekende kwetsbaarheden bevat. Dit omvat het installeren van de nieuwste beveiligingspatches en het controleren op bekende kwetsbaarheden in de gebruikte SSH-implementatie. Regelmatige patchbeheerprocessen moeten worden geïmplementeerd om ervoor te zorgen dat systemen in de toekomst up-to-date blijven.

SSH-hardening moet worden geïmplementeerd voor eventuele resterende toegestane SSH-toegang. Dit omvat het configureren van sleutelgebaseerde authenticatie als enige toegestane methode, het uitschakelen van root-login, en het implementeren van fail2ban voor automatische IP-blokkering na mislukte inlogpogingen. Deze hardeningsmaatregelen helpen om het risico te minimaliseren, zelfs als SSH-toegang om legitieme redenen moet worden toegestaan.

Ten slotte moeten Azure-beleidsregels worden geïmplementeerd om toekomstige schendingen te voorkomen. Deze beleidsregels moeten automatisch controleren of nieuwe resources voldoen aan beveiligingsvereisten en moeten waarschuwingen genereren of automatisch corrigerende maatregelen nemen wanneer schendingen worden gedetecteerd. Door beleidsregels te gebruiken, kunnen organisaties proactief voorkomen dat nieuwe systemen worden geïmplementeerd met onbeveiligde SSH-toegang, waardoor het risico op toekomstige incidenten aanzienlijk wordt verminderd.

Voor het zeer zeldzame geval dat er een legitieme bedrijfsbehoefte bestaat voor SSH-toegang vanaf internet, moet een strikt uitzonderingsproces worden gevolgd. Ten eerste moet de bedrijfsrechtvaardiging volledig worden gedocumenteerd, waarbij duidelijk wordt uitgelegd waarom SSH-toegang vanaf internet absoluut noodzakelijk is en waarom alternatieve oplossingen zoals VPN, Azure Bastion of Just-In-Time VM Access niet kunnen worden gebruikt. Alle alternatieve oplossingen moeten eerst grondig worden onderzocht voordat een uitzondering wordt overwogen.

Als SSH-toegang vanaf internet werkelijk noodzakelijk is, moet de bron worden beperkt tot specifieke /32 IP-adressen die alleen worden gebruikt voor beheerwerkstations. Deze beperking minimaliseert het aanvalsoppervlak door alleen toegang toe te staan vanaf bekende, vertrouwde locaties. Compenserende controles moeten worden geïmplementeerd, waaronder uitsluitend sleutelgebaseerde SSH-authenticatie, fail2ban voor automatische IP-blokkering, snelheidsbeperking om brute-force-aanvallen te voorkomen, en SIEM-monitoring om alle SSH-toegangspogingen te loggen en te analyseren.

Risicoacceptatie moet formeel worden gedocumenteerd en goedgekeurd door het beveiligingsteam. Deze documentatie moet duidelijk maken welk risico wordt geaccepteerd, waarom dit risico acceptabel is gezien de bedrijfsbehoeften, en welke maatregelen zijn genomen om het risico te minimaliseren. Uitzonderingen moeten een vervaldatum hebben en moeten kwartaal worden beoordeeld om te bepalen of de uitzondering nog steeds nodig is of dat alternatieve oplossingen in de tussentijd beschikbaar zijn gekomen. Dit proces zorgt ervoor dat uitzonderingen tijdelijk blijven en niet permanent worden, waardoor de algehele beveiligingspostuur van de organisatie wordt behouden.

Compliance en Auditing

Deze controle is kritiek voor compliance met verschillende beveiligingsframeworks die worden gebruikt door Nederlandse overheidsorganisaties en bedrijven die werken met gevoelige gegevens. Het beperken van SSH-toegang vanaf internet is niet alleen een best practice, maar ook een expliciete vereiste in meerdere compliance-standaarden die organisaties moeten naleven om te voldoen aan regelgevende verplichtingen en om hun beveiligingspostuur te demonstreren aan auditors en stakeholders.

De CIS Azure Foundations Benchmark v3.0.0 bevat specifieke controles die betrekking hebben op het beperken van beheerspoorten. Controle 6.1 vereist expliciet dat SSH-toegang is beperkt vanaf het internet, terwijl controle 6.2 een vergelijkbare vereiste stelt voor RDP-toegang. Deze controles maken deel uit van een reeks netwerkbeveiligingsaanbevelingen die zijn ontworpen om de blootstelling van Azure-omgevingen aan internetbedreigingen te minimaliseren. Organisaties die de CIS-benchmark volgen, moeten kunnen aantonen dat zij deze controles hebben geïmplementeerd en dat zij regelmatig controleren of de implementatie effectief blijft.

Het Baseline Informatiebeveiliging Overheid (BIO) framework bevat in norm 13.01.03 specifieke vereisten voor het beveiligen van netwerken, waaronder de segregatie van netwerken en de restrictie van toegang. Deze norm vereist dat organisaties netwerken segmenteren en dat beheerinterfaces worden beschermd tegen onbevoegde toegang. Het beperken van SSH-toegang vanaf internet is een directe implementatie van deze vereiste, omdat het ervoor zorgt dat beheerinterfaces niet rechtstreeks vanaf het internet toegankelijk zijn. Nederlandse overheidsorganisaties die het BIO-framework volgen, moeten kunnen aantonen dat zij deze norm hebben geïmplementeerd en dat zij regelmatig controleren of de implementatie nog steeds effectief is.

ISO 27001:2022 bevat meerdere controles die relevant zijn voor het beperken van SSH-toegang. Controle A.8.20 vereist dat beheerinterfaces worden beperkt, wat direct van toepassing is op SSH-toegang vanaf internet. Controle A.13.1.3 vereist segregatie in netwerken, met specifieke aandacht voor de isolatie van beheernetwerken. Deze controles maken deel uit van een bredere set netwerkbeveiligingsmaatregelen die zijn ontworpen om de beveiliging van informatiebeheersystemen te waarborgen. Organisaties die ISO 27001-certificering nastreven of behouden, moeten kunnen aantonen dat zij deze controles hebben geïmplementeerd en dat zij regelmatig controleren of de implementatie nog steeds effectief is.

De NIS2-richtlijn, die van toepassing is op essentiële en belangrijke entiteiten in de Europese Unie, bevat in artikel 21 specifieke vereisten voor netwerktoegangscontrole en authenticatie, evenals de bescherming van beheerinterfaces. Deze vereisten zijn ontworpen om ervoor te zorgen dat essentiële en belangrijke entiteiten adequate beveiligingsmaatregelen implementeren om hun netwerken en informatiesystemen te beschermen tegen cyberbedreigingen. Het beperken van SSH-toegang vanaf internet is een directe implementatie van deze vereisten, omdat het ervoor zorgt dat beheerinterfaces worden beschermd tegen onbevoegde toegang. Organisaties die onder de NIS2-richtlijn vallen, moeten kunnen aantonen dat zij deze vereisten hebben geïmplementeerd en dat zij regelmatig controleren of de implementatie nog steeds effectief is.

PCI-DSS vereist in requirement 1.3.2 dat organisaties inkomend verkeer van niet-vertrouwde netwerken beperken. Hoewel deze vereiste primair is gericht op organisaties die creditcardgegevens verwerken, illustreert het het belang van het beperken van netwerktoegang als fundamenteel beveiligingsprincipe. Het beperken van SSH-toegang vanaf internet is een directe implementatie van deze vereiste, omdat het ervoor zorgt dat alleen vertrouwde netwerken toegang hebben tot beheerinterfaces. Organisaties die PCI-DSS-compliance moeten handhaven, moeten kunnen aantonen dat zij deze vereiste hebben geïmplementeerd en dat zij regelmatig controleren of de implementatie nog steeds effectief is.

Het NIST Cybersecurity Framework bevat in de functie Protect, categorie PR.AC-5, vereisten voor netwerkintegriteit die worden beschermd door netwerksegregatie. Deze vereisten maken deel uit van een bredere set beveiligingsmaatregelen die zijn ontworpen om de beveiliging van informatiesystemen te waarborgen. Het beperken van SSH-toegang vanaf internet is een directe implementatie van deze vereisten, omdat het ervoor zorgt dat netwerken worden gesegmenteerd en dat beheerinterfaces worden beschermd tegen onbevoegde toegang. Organisaties die het NIST-framework volgen, moeten kunnen aantonen dat zij deze vereisten hebben geïmplementeerd en dat zij regelmatig controleren of de implementatie nog steeds effectief is.

Voor auditdoeleinden moeten organisaties kunnen aantonen dat zij deze controles hebben geïmplementeerd en dat zij regelmatig controleren of de implementatie nog steeds effectief is. Dit omvat het documenteren van de geïmplementeerde maatregelen, het bijhouden van regelmatige controles en verificaties, en het kunnen produceren van bewijs dat aantoont dat SSH-toegang daadwerkelijk is beperkt vanaf het internet. Auditors zullen typisch vragen om bewijs zoals geëxporteerde NSG-configuraties, PowerShell-scriptoutput die aantoont dat er geen regels zijn die SSH-toegang vanaf internet toestaan, en logboeken die aantonen dat alternatieve toegangsmethoden worden gebruikt. Organisaties moeten ervoor zorgen dat deze documentatie up-to-date is en gemakkelijk toegankelijk is voor auditdoeleinden.

Compliance & Frameworks

Automation

Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).

PowerShell
<# ================================================================================ AZURE POWERSHELL SCRIPT - Nederlandse Baseline voor Veilige Cloud ================================================================================ .SYNOPSIS SSH Access Restricted .DESCRIPTION CIS Azure Foundations Benchmark - Control 6.24 Controleert dat SSH toegang (22) restrictief is geconfigureerd. .NOTES Filename: ssh-access-restricted.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 CIS Control: 6.24 #> #Requires -Version 5.1 #Requires -Modules Az.Accounts, Az.Network [CmdletBinding()] param([Parameter()][switch]$Monitoring) $ErrorActionPreference = 'Stop' $PolicyName = "SSH Access Restricted" function Connect-RequiredServices { if (-not (Get-AzContext)) { Connect-AzAccount | Out-Null } } function Test-Compliance { $nsgs = Get-AzNetworkSecurityGroup -ErrorAction SilentlyContinue $result = @{ TotalNSGs = $nsgs.Count; WithUnrestrictedSSH = 0 } foreach ($nsg in $nsgs) { $sshRules = $nsg.SecurityRules | Where-Object { ($_.DestinationPortRange -eq '22' -or $_.DestinationPortRange -contains '22') -and ($_.SourceAddressPrefix -eq '*' -or $_.SourceAddressPrefix -eq '0.0.0.0/0' -or $_.SourceAddressPrefix -eq 'Internet') -and $_.Direction -eq 'Inbound' -and $_.Access -eq 'Allow' } if ($sshRules) { $result.WithUnrestrictedSSH++ } } return $result } try { Connect-RequiredServices if ($Monitoring) { $r = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "Total NSGs: $($r.TotalNSGs)" -ForegroundColor White Write-Host "With Unrestricted SSH: $($r.WithUnrestrictedSSH)" -ForegroundColor $(if ($r.WithUnrestrictedSSH -eq 0) { 'Green' } else { 'Red' }) if ($r.WithUnrestrictedSSH -gt 0) { Write-Host "`n⚠️ KRITIEK: Onbeperkte SSH toegang vanaf internet!" -ForegroundColor Red Write-Host "Gebruik Azure Bastion of beperk tot specifieke IPs" -ForegroundColor Yellow } } else { $r = Test-Compliance Write-Host "`nUnrestricted SSH: $($r.WithUnrestrictedSSH)/$($r.TotalNSGs) NSGs" } } catch { Write-Error $_; exit 1 } # ================================================================================ # Standaard Invoke-* Functions (Auto-generated) # ================================================================================ function Invoke-Implementation { <# .SYNOPSIS Implementeert de configuratie #> [CmdletBinding()] param() Invoke-Remediation } function Invoke-Monitoring { <# .SYNOPSIS Controleert de huidige configuratie status #> [CmdletBinding()] param() $Monitoring = $true try { Connect-RequiredServices if ($Monitoring) { $r = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "Total NSGs: $($r.TotalNSGs)" -ForegroundColor White Write-Host "With Unrestricted SSH: $($r.WithUnrestrictedSSH)" -ForegroundColor $(if ($r.WithUnrestrictedSSH -eq 0) { 'Green' } else { 'Red' }) if ($r.WithUnrestrictedSSH -gt 0) { Write-Host "`n⚠️ KRITIEK: Onbeperkte SSH toegang vanaf internet!" -ForegroundColor Red Write-Host "Gebruik Azure Bastion of beperk tot specifieke IPs" -ForegroundColor Yellow } } else { $r = Test-Compliance Write-Host "`nUnrestricted SSH: $($r.WithUnrestrictedSSH)/$($r.TotalNSGs) NSGs" } } catch { Write-Error $_; exit 1 } } function Invoke-Remediation { <# .SYNOPSIS Herstelt de configuratie naar de gewenste staat .DESCRIPTION Dit is een monitoring-only control, remediation delegeert naar monitoring #> [CmdletBinding()] param() Write-Host "[INFO] Dit is een monitoring-only control" -ForegroundColor Yellow Write-Host "[INFO] Running monitoring check..." -ForegroundColor Cyan Invoke-Monitoring }

Risico zonder implementatie

Risico zonder implementatie
Critical: Open SSH-toegang vanaf internet resulteert in honderden brute-force-aanvallen per dag. Geautomatiseerde scans zoeken continu naar open poort 22. Recente datalekken zoals Kaseya en REvil ransomware maakten gebruik van gecompromitteerde SSH-toegang. Shodan toont meer dan 25 miljoen blootgestelde SSH-services wereldwijd. Gecompromitteerde SSH-toegang leidt tot volledige servertoegang, laterale beweging door het netwerk en ransomware-aanvallen. De gemiddelde kosten van een datalek bedragen €4,4 miljoen. NIS2-boetes kunnen oplopen tot €10 miljoen. Compliance-vereisten omvatten CIS 6.1, BIO 13.01, ISO 27001 A.8.20 en PCI-DSS. Het risico is kritiek.

Management Samenvatting

SSH-toegang beperkt: BLOKKEER SSH (poort 22) vanaf internet in alle NSG's. Gebruik Azure Bastion of Just-In-Time VM Access. Er is geen legitieme reden om SSH vanaf internet open te hebben. Activering: NSG weiger poort 22 vanaf 0.0.0.0/0 → Implementeer Bastion. Verplicht voor CIS 6.1, BIO 13.01, PCI-DSS. Implementatie: 1-2 uur. KRITIEKE onmiddellijke verhelping vereist.