Är reverse proxy som det enda säkerhetsmåttet mot attacker på offentliga tjänster tillräckligt bra?

Jag ser många här som råder till att använda VPN med deras homelab och offentliga tjänster. Medan jag förstår att det är ett bra alternativ, skulle jag inte vilja förlita mig på ytterligare tredjepartsinstrument för att komma åt min server, än mindre betala mer för VPS. Vad jag skulle vilja veta är om Caddy (eller någon annan reverse proxy) är tillräckligt för att säkra mina saker ordentligt? Förutsatt att min SSH använder publiknyckelautentisering och det inte finns några öppna portar förutom 22, 80 och 443. Jag har ett ordentligt Authelia-system för mina webbsidor utan inloggningsformulär (dvs. startsida).

Jag ser många här som råder till att använda VPN med deras homelab och offentliga tjänster.

Jag använder VPN främst så att jag inte behöver oroa mig för att konfigurera varje tjänst för fjärråtkomst individuellt. För mig är det mer bekvämt än något annat.

Medan jag förstår att det är ett bra alternativ, skulle jag inte vilja förlita mig på ytterligare tredjepartsinstrument för att komma åt min server, än mindre betala mer för VPS.

Jag vet inte varför du betalar extra. Jag ställer in min server som VPN, det finns ingen extra tredje part involverad som jag måste betala.

Vad jag skulle vilja veta är om Caddy (eller någon annan reverse proxy) är tillräckligt för att säkra mina saker ordentligt? Förutsatt att min SSH använder publiknyckelautentisering och det inte finns några öppna portar förutom 22, 80 och 443. Jag har ett ordentligt Authelia-system för mina webbsidor utan inloggningsformulär (dvs. startsida).

Caddy och SSH med publiknyckelautentisering är mycket säkra. Se till att du håller dem uppdaterade och dra nytta av Caddys enkla certifikathantering. Jag har aldrig använt Authelia, så jag vet inte tillräckligt för att göra en informerad bedömning.

Det handlar om attackyta. Jag exponerar inget externt utom mitt VPN-ände. Jag gör det inte för att jag inte tror att jag kan säkra det då, utan mer för att skydda mot okända hot och min egen lathet. Appar i sig har hål, uppdateras ofta, och jag kanske inte är så snabb med att uppdatera som jag skulle vilja. Om ett VPN-verktyg har en säkerhetsbrist är det generellt sett ganska stort, och patchas snabbt. Appar är ofta vilda västern, där utvecklarna kanske inte bryr sig.

Titta på LastPass-hacket och hur angriparen fick masternyckeln för ett intressant exempel.

Istället för att vidarebefordra port 22 satte jag upp WireGuard (med PiVPN) på en server och vidarebefordrade en slumpmässig port. Sedan ansluter jag till det interna, fria VPN:et för åtkomst till enbart interna tjänster och SSH.

Reverse Proxy är helt okej (hur tror du att du har tillgång till reddit just nu?). Cloudflare har en gratis nivå som kan proxy-serva dina hemanvändningar och kan blockera skadliga aktörer och IP-adresser. Du kan också konfigurera din egen brandvägg för att proxy, till exempel är Sophos Home tillgängligt gratis och kan konfigureras för att utföra paketinspektion och försvara mot olika typer av attacker. Du kan till och med kedja dem tillsammans om du vill – Cloudflare till din brandvägg (reverse proxy) till din server.

Om du använder Caddy och Authelia anser jag att det räcker. Du har ersatt en tjänst som tillhandahåller autentiserad åtkomst (VPN) med en annan. Lägg till WebAuthn för 2FA, och flytta SSH:s privata nyckel till en säkerhetsnyckel för att ytterligare minska risken för att dina referenser blir stulna.

Caddy och Authelia är smarta val, eftersom båda är implementerade i ett minnessäkert språk. Det eliminerar många attackvägar.

Till skillnad från många av svaren, ja, en reverse proxy kan vara mer än tillräckligt för att skydda dina tjänster. Titta på hela INTERNET fullt av webbplatser där det inte finns någon VPN.

Kraver Google en VPN för att använda den? Kraver din bank? Nej, de använder en reverse proxy med bra autentisering.

För ett antal av mina homelab/hobbyprojekt har jag installerat Caddy Security plugin för att skapa ett skyddat frontend.

En reverse proxy är inte nödvändigtvis ett säkerhetslager framför dina tjänster.

Felkonfigurerad eller föråldrad kan den vara ett hål precis som tjänsten bakom den. Vad den gör är att du bara har en ingresspunkt att övervaka med fail2ban eller crowdsec istället för alla tjänster separat. Håll också alla tjänster och reverse proxy uppdaterade.

En VPN lägger till ett annat lager av autentisering och säkerhet ifall du till exempel skulle göra ett misstag internt och inte vet att du har något exponerat.

Det skyddar också din offentliga IP, vilket hjälper mot folk som skannar för att se om du har missat att konfigurera något.

Du behöver inte det – men det hjälper.

  1. Dölja din domänregistrering.
  2. Höjlåt tillgång till hanteringsgränssnitt/portar.
  3. Begränsa din offentliga IP till att inte vara alltför synlig för trafik.
  4. Lägg till MFA där det är möjligt.
  5. Begränsa åtkomstregionen till de publikt tillgängliga tjänster du är värd för.
  6. Blockera kända dåliga aktörer från källan/aktiviteten.
  7. Loggövervakning och koordinering av motåtgärder.
  8. Ta bort applikationer som är utformade för att äventyra din integritet.
  9. Lägg till säkerhet i nätverket/servern/slutpunkter.

VPN, systemhantering. Personligen skulle jag använda en bra brandvägg som inkluderar WireGuard eller har en bra SSL-baserad VPN. Gör så att din SSH-port bara är tillgänglig där. Använd ett bra centraliserat ID-hanteringssystem som också fångar inloggningsförsök. Extra poäng för MFA.

Dölja din offentliga IP från DNS-poster med en proxy/public DNS-tjänst som Cloudflare hjälper till att hindra de dåliga grabbarna från att koppla samman punkterna.

Sedan dirigerar du till din reverse proxy. Personligen skulle jag använda NGINX. Det finns ett tillägg som ger dig möjlighet att lägga till tvåfaktorsautentisering till din NGINX-installation. Det finns också bra dokumentation för hur man integrerar med andra tjänster som fail2ban.

Begränsa källorna till endast platser du ansluter från via din brandvägg. En bra NGFW kan införa geofencing i anslutningsfiltret. Blockera kända dåliga aktörslistor med din NGFW med hjälp av publika listor.

Ange ett sekretess-VPN på din brandvägg så att all utgående trafik routas via den så att din offentliga IP är dold.

Ställ in centraliserad DNS på din brandvägg och konfigurera den för att bara tillåta DOH eller DOT till Internet. Blockera DNS, DOT, DOH-åtkomst utanför din godkända metod.

Sätt upp fail2ban för att läsa alla dina åtkomstloggar, på VPN och dina sub-tjänster och åtkomstlager. Blockera dålig åtkomst efter ett antal misslyckade försök under en viss tid.

Ta bort alla sekretesskränkande webbläsare i ditt nätverk. https://privacytests.org/

Efter det skulle jag se till att installera IPS och ha ett bra antivirusprogram på alla dina servrar och slutpunkter. Då bör du vara ganska säker.

Nej, inte riktigt. Det bästa du kan göra är att läsa på om bästa praxis för cybersäkerhet för att fullt ut förstå syftet med varje säkerhetslager, och varför vi alla förespråkar olika varianter av samma lösning.

Jag förstår att en reverse proxy ensam kan verka som att den kan hantera de mest akuta behoven av att exponera dina tjänster, men tänk på att den bara kommer att vara så stark som dess konfiguration, dess underhåll, och tjänsterna som sitter bakom den/deras konfigurationer.

Du kan också själv hosta din VPN-lösning istället för en tredje part, om du verkligen vill.

Personligen ser jag så många inlägg om detta som kan kokas ner till “Hur mycket arbete vill du lägga ner för att inte vara beroende av tredje part.” Och i så fall, hur mycket exponering/risk är du villig att ta med kanske obekräftade/free lösningar som kan eller inte kan vara säkra.

Detta är varför jag alltid rekommenderar folk att köra sina tjänster bakom en reverse proxy. Sedan kan du öka med CF tunnel, lägga till regional och e-postautentisering, peka CF-tunneln till din interna DNS för reverse proxy, och gå vidare med ditt liv.

Det är inte helt ofelbart men tyngden av ett företag som CF ger en viss tyngd till säkerheten som tunneln tillhandahåller, och de ytterligare lagren av reverse proxy, TLS/SSL, regionala krav, och tunneln gör det mycket säkrare än att bara exponera tjänster direkt till internet.

Titta på https://www.shodan.io och du kommer hitta många tjänster exponerade till internet, du kan kontrollera port 22 i ditt land och du kommer se att internet är fullt av idioter som borde behöva ett “körkort” innan de hostar saker.

Du blandar också ihop två olika koncept, en reverse proxy och en VPN är inte samma sak och deras användningsområden är väldigt olika.

I ditt fall bör du fråga dig själv:

  • Om jag installerar en reverse proxy och publicerar den på internet, och den blir komprometterad, vad är den värsta saken som kan hända? Har reverse proxy access till alla dina servrar?

  • Om jag installerar en VPN-server och publicerar den på internet, och den blir komprometterad, vad är den värsta saken som kan hända? Har VPN-servern tillgång till alla dina servrar?

Att sätta en box framför en annan gör inget säkrare.