Precis som många av er driver jag några tjänster på min hemmaserver och vill exponera vissa av dem, såsom nextcloud, wallabag, plex etc, så att jag, min familj och andra jag litar på kan nå dem utifrån nätverket. Jag har läst mycket i denna subreddit och andra resurser om hur man gör detta på ett säkert sätt, med VPN eller VPS och så vidare. Dessa trådar sammanfattas nästan alltid genom att klassificera om en viss konfiguration är säker eller inte utan fler detaljer. Eftersom jag inte är expert på IT eller hacker är jag inte alltid säker på vilka risker jag kan bli utsatt för.
Eftersom det inte skulle vara bekvämt för mig och ännu mer för min familj att etablera en VPN-anslutning varje gång vi vill få tillgång till en tjänst, är VPN inget alternativ. Därför planerar jag att endast möjliggöra åtkomst via https och låta port 443 vara öppen (eller kanske en annan). Den inkommande trafiken kommer att dirigeras till ett dedikerat vlan (separerat från resten av nätverket) och proxas av Cloudflare. I detta fall kan jag begränsa den inkommande trafiken till endast Cloudflares IP-adresser, så att även om någon lyckas hitta min IP och försöker komma åt mitt nätverk via denna port, kommer det att blockeras av routerns brandvägg.
Med tanke på att mina lösenord är tillräckligt starka för att brute force-attacker inte är realistiska, vilka risker är min konfiguration exponerad för i detta läge? Jag skulle också uppskatta om ni förklarar ert svar i detalj, så att jag och andra liknande mig kan få mer kunskap inom detta ämne.
Jag har alltid använt web application firewalls som ett sätt att komma åt mina tjänster utifrån.
Jag har en offentlig domän registrerad, och förfrågningar till mina namngivna tjänster dirigeras till mitt hem, och sedan NATas till en brandväggs-VM som är värd på min server.
Brandväggs-VM hanterar TLS-anslutningar och vidarebefordrar baserat på domännamn till tjänsten i bakgrunden. De flesta webbapplikationsbrandväggar kommer med regelverk som skyddar mot vanliga attacker.
Den största försvarslinjen är geo-blockering. Att begränsa anslutningar till det land du befinner dig i minskar kraftigt antalet skanningar och attacker som lyckas ta sig igenom.
Det ‘säkraste’ alternativet är att inte göra det alls. Men om det inte är tillräckligt, är det ens ett alternativ? Samma gäller för att använda VPN.
iptables kan filtrera efter MAC-adress, så du kanske kan vitlista enheter.
iptables kan avvisa DoS, flooding och andra attacker, med olika moduler för rate-limiting, och genom att kasta dåliga protokoll och tillstånd. Fail2ban fungerar genom att implementera iptables-regler och är utmärkt som en fallback för oförutsedda eller kantfall. Man kan inte förvänta sig en helt automatiserad iptables-implementation. Bättre att definiera reglerna tydligt från början.
TCP-wraps kan hjälpa, men är bara ett lager av säkerhet.
Sänk hotytan genom att inaktivera IPv6.
En mängd kernelalternativ kan begränsa anslutningar, förkorta timeout och göra maskinen mer kräsen.
Du kan virtualisera en daemon på en egen VM, och låta värden stänga ner den under vissa förhållanden.
Det verkar som om de flesta svar här inte riktigt adresserar frågan, och kan till och med vara lite farliga. Farliga, eftersom de på ett sätt avfärdar det verkliga problemet som frågan presenterar. Så här går jag…
Svaret på frågan, som ställdes, är att det inte finns någon egentlig risk. VPN:er är mycket överhypade. Att koppla till en internet-åtkomlig plats (som ditt hemserver i framtiden) med en icke-VPN-anslutning är inget annat än att komma åt vilken internetplats som helst utan VPN. Det du behöver oroa dig för innan du gör ditt hemserver tillgänglig på internet är hur du säkrar själva servern. Att leta efter VPN är att gå på fel spår, och du måste få hela idén ur huvudet, för det gör dig extremt sårbar.
För att utveckla detta, låt oss först titta på vad en VPN faktiskt gör och när den är användbar. En VPN kan vara användbar för att koppla till ditt hemnätverk om du inte har något annat sätt att faktiskt koppla till ditt hemnätverk externt. Det vill säga, om du använder din VPN i den bokstavliga meningen av frasen VIRTUAL PRIVATE NETWORK. Hemnätverket är annars otillgängligt för internet, och blir bara tillgängligt när du loggar in på VPN:en. Resultatet är att ditt privata nätverk förlängs på ett sätt som inte längre är en privat anslutning, men förblir de facto privat, för alla avsikter och syften. Och för att inte glömma, när du fjärransluter till ditt hemnätverk via en VPN, kan din internetleverantör fortfarande titta på datatrafiken.
Å andra sidan, om du ska göra ditt hemserver de jure tillgänglig för internet, då blir VPN meningslös och oväsentligt. Det som nu spelar roll är säkerheten för din server. Om en VPN är en säker tunnel genom vilken trafik färdas, är serverns säkerhet som att ha ett lås på ytterdörren till ditt hus. Det finns inget en VPN kan göra för att skydda din server. Bara för att du använder en VPN för att nå din osäkra server offentligt gör inte att en illa inställd aktör inte kan ta sig in. Så att leta efter en VPN för det du beskriver i ditt inlägg är som att ha en privat tunnel att köra från ditt jobb till din uppfart, men låta ytterdörren till ditt hus vara öppen.
Det finns mycket du kan göra med geo-blockering. Eller till och med bara vitlista AS-benägenheten som du behöver för åtkomst. Det minskar kraftigt antalet hackningar och portscanningar.
Eftersom du redan använder Cloudflare, överväg att aktivera mTLS på deras sida och utfärda klientcertifikat till behöriga enheter. Detta förhindrar enheter från att ens nå dina tjänster innan de är behöriga, så även om det finns en sårbarhet är det mycket svårt för en aktör att utnyttja den direkt.
När jag skrev detta inlägg var jag mer orolig för om de tjänster jag är värd för är tillräckligt säkra för att exponeras. Är de det? Jag är fortfarande inte säker.
Men om jag förstår er rätt, innebär en VPN-server, precis som en reverse proxy, att åtminstone en port måste öppnas. Denna gång är min oro att säkra dessa slutpunkter, annars är risken densamma. Berätta gärna om det är något annat ni menar.
Finns det några rekommenderade metoder som inte nämns här?
Det är bra, men om jag förstår det rätt måste jag tillhandahålla nycklar för varje enhet jag vill tillåta att få tillgång till mina tjänster. Det kan vara enkelt för Windows, Linux och Android, men jag är osäker på smarta tv-apparater (för plex) osv.
En ‘'’web application firewall (WAF)’’’ är en brandvägg för HTTP-applikationer. Den tillämpar ett antal regler på en HTTP-konversation. Generellt täcker dessa regler vanliga attacker som Cross-site Scripting (XSS) och SQL-injektion.
Medan proxyer generellt skyddar klienter skyddar WAF:ar servrar. En WAF är utformad för att skydda en specifik webbapplikation eller ett set av webbapplikationer. En WAF kan betraktas som en reverse proxy.
WAF:ar kan komma i form av en apparat, server-plugin eller filter, och kan anpassas till en applikation. Ansträngningen att anpassa detta kan vara betydande och kräver underhåll i takt med att applikationen förändras.”
Jag har inte konfigurerat inloggning på WAF:en, men jag har SSO för alla mina appar med 2FA.
I en värld där Donald Trump kan väljas till president är popularitet ett förolämpning. Så jag inbjuder alla att nedrösta varje kommentar jag någonsin gjort, och varje kommentar jag gör i framtiden.
Kanske borde du gå ut och leka så att du får en bättre förståelse för vad som verkligen betyder något i livet. Hitta något sätt att validera ditt liv som inte skiter i om anonyma människor online nedröstar en reddit-kommentar. Om en miljon personer säger något dumt är det fortfarande något dumt.
Cloudflare har bra dokumentation.. Sammanfattning: du genererar ett klientcertifikat på deras webbplats, aktiverar mTLS för din domän, och lägger till en brandväggsregel som avvisar personer som inte har ett giltigt certifikat.