...

Redis-säkerhet: Undvik öppna portar och oskyddade instanser

Öppna portar och oskyddade instanser är de vanligaste ingångarna när det gäller Redis-säkerhet Det går. Jag visar tydligt hur jag stänger portar, säkrar instanser och med några få ändringar i redis.conf minskar risken avsevärt.

Centrala punkter

För att du ska komma igång snabbt sammanfattar jag de viktigaste aspekterna kortfattat och prioriterar vad som bör göras först. Jag tar upp typiska felkonfigurationer som leder till öppna portar och ger praktiska inställningar för en säker driftsmiljö. Dessutom lägger jag tonvikten på autentisering, kryptering och strikta nätverksbegränsningar så att attacker inte når sitt mål. Följande punkter utgör din snabbstartplan innan jag går in mer i detalj på exempel och detaljer.

  • Nätverk Isolera: Redis får aldrig exponeras offentligt, åtkomst endast från privata nätverk.
  • Konfiguration härda: ställa in bind, protected-mode, Ports och Rename-Commands korrekt.
  • Autentisering tvinga fram: requirepass plus ACL:er för finjusterad behörighetshantering.
  • Kryptering Aktivera: TLS för transport, OS-kryptering för persistens.
  • Övervakning & Uppdateringar: Loggar, varningar, säkerhetskopior, installation av regelbundna versioner.

Jag prioriterar först att avsluta de öppna Portar, sedan autentisering och därefter kryptering. Därefter tar jag hand om loggning, säkerhetskopiering och uppdateringar, så att säkerhetsåtgärderna ger bestående effekt. På så sätt minimeras attackytan och instansen förblir under din kontroll.

Öppna portar: Risker och vanliga angreppsvägar

En öppen standardport 6379 fungerar som en skylt med texten „Vänligen kontrollera här“. Angripare skannar automatiskt internet och testar oskyddade Instanser på några sekunder. Utan autentisering kan de läsa data, ställa in nycklar eller ladda in moduler. I praktiken leder detta ofta till dataläckage eller att kryptomining sätts igång. Jag eliminerar denna risk genom att strikt begränsa åtkomsten och endast tillåta definierade källadresser.

Ställ in nätverksavskiljning och bindningar korrekt

Jag kopplar in Redis lokal värd eller till en privat IP-adress i det interna subnätet. På så sätt förhindrar nätverksarkitekturen att tjänsten är direkt ansluten till det offentliga internet. I distribuerade konfigurationer placerar jag noderna i ett privat VLAN eller en VPC och tillåter åtkomst endast via VPN eller interna peering-anslutningar. På så sätt stannar varje paket inom kontrollerade segment. Denna enkla åtskillnad minskar risken avsevärt.

Konfiguration i redis.conf: bind, Port, protected-mode

Jag börjar vid redis.conf, eftersom några få rader ofta gör den avgörande skillnaden. Med bind 127.0.0.1 eller bind 127.0.0.1 10.0.x.y begränsar jag gränssnitten. Jag ändrar standardporten för att försvåra triviala skanningar och lämnar protected-mode yes aktiverat. Dessutom byter jag namn på farliga kommandon eller inaktiverar dem. Följande tabell hjälper mig med vanliga felkonfigurationer.

Inställning Risk vid felaktig konfiguration Rekommenderad åtgärd Exempel
bind Offentliga Tillgänglighet för varje värd Binda endast till localhost/privat IP-adress bind 127.0.0.1 10.0.1.50
port Enkel skanning till 6379 Ställa in alternativ port port 6389
skyddat läge Obegränsad åtkomst vid öppen IP Lämna aktiv protected-mode ja
rename-kommando Missbruk av kritiska Kommandon Byta namn eller stänga av rename-command CONFIG „“
tls-port/port Klartext-Trafik tillgänglig Använd endast TLS-porten tls-port 6379 / port 0

För mer ingående information om felaktiga konfigurationer hänvisar jag till denna översikt över Undvika konfigurationsfel. Jag ser dessutom till att filen är överskådlig genom att lägga till kommentarer, så att framtida granskningar går snabbare. En välordnad konfiguration sparar tid och förhindrar driftstopp. Små säkerhetsåtgärder ger stor effekt här. Det lönar sig direkt.

Använd autentisering och ACL:er konsekvent

Jag satsar på en stark Autentisering alltid, även i interna nätverk. Med requirepass tvingar jag fram AUTH-handskakningen, och jag byter lösenord regelbundet. Sedan Redis 6 använder jag åtkomstkontrolllistor: På så sätt kan jag skapa användare, endast tillåta nödvändiga kommandon och begränsa nyckelområden. Detta separerar åtkomst till produktion, administration och analys på ett tydligt sätt. Färre behörigheter innebär mindre skada i händelse av en incident.

Avaktiverar farliga kommandon

Många attacker inleds via kraftfulla Kommandon som CONFIG, MODULE LOAD eller SLAVEOF/REPLICAOF. Jag begränsar standardanvändarnas åtkomst via ACL och inaktiverar känsliga kommandon med rename-command genom att ställa in dem på en tom sträng. På så sätt eliminerar jag hela angreppsvägar. Där jag verkligen behöver funktioner dokumenterar jag dem och begränsar åtkomsten till administratörskonton. På så sätt förblir instansen hanterbar och säker.

Aktivera transportkryptering med TLS

Jag aktiverar TLS så att ingen kan Trafik kan läsa av eller manipulera. I konfigurationen ställer jag in tls-port, inaktiverar porten för klartext med port 0 och anger certifikat, nyckel och CA. Som tillval kontrollerar jag klientcertifikat för att ytterligare verifiera åtkomst från enheter. Moderna klienter hanterar TLS utan större problem. Därefter går alla anslutningar via en säker kanal.

Göra det omöjligt att dekryptera data i viloläge

När det gäller persistensfiler förlitar jag mig på Kryptering i filsystemet. RDB och AOF lagras då säkert på hårddisken, även om någon skulle läsa av lagringsutrymmet. Känsliga värden krypterar jag dessutom i applikationen innan jag överför dem till Redis. På så sätt behöver jag inte ha klartext i cachen. Det minskar risken vid stöld eller felaktiga säkerhetskopior.

Nätverkssäkerhet och brandväggar i praktiken

Jag aktiverar värdbrandväggen och låter Redis-Port endast för definierade IP-intervall. I molnet kompletterar jag detta med säkerhetsgrupper som exakt anger protokoll, portar och källnät. Dessutom kör jag regelbundna portskanningar för att hitta glömda öppningar. Jag stänger av onödiga tjänster så att inga skuggportar förblir öppna. En praktisk guide hittar du här: Brandväggskonfigurationer.

Inför övervakning, loggning och uppdateringar

Jag analyserar Redis-loggarna centralt och ställer in Varningar efter misslyckade inloggningar eller misstänkta kommandon. Jag upptäcker avvikelser tidigt genom att hålla koll på nyckeltal som antal anslutningar, kommandon per sekund eller fördröjningar. Jag planerar regelbundna säkerhetskopieringar och testar återställningen. Jag installerar säkerhetsuppdateringar snabbt, eftersom de ofta täpper till kritiska säkerhetsluckor. Dessutom kontrollerar jag konfigurationerna med jämna mellanrum och dokumenterar avvikelser.

Roller, behörigheter och arbetsflöden

Jag startar Redis med ett Serviceanvändare Utan root-behörighet, så att ett intrång inte drabbar hela systemet. Jag håller strikt isär rollerna: administratörer, utvecklare och operatörer får endast de behörigheter de behöver. Applikationskonton ligger i egna ACL-profiler och ser endast sina nyckelprefix. Jag dokumenterar ändringar på ett spårbart sätt så att revisioner blir enkla. Denna struktur skapar ordning och minskar risken för felhantering.

Välja säkra hostade miljöer

När det gäller hanterade tjänster kontrollerar jag om brandväggsskydd, Nätverksisolering, där TLS och ACL:er är aktiverade som standard. Dessutom ser jag till att uppdateringarna sker regelbundet och att övervakningen är tillförlitlig. Den som behöver bättre prestanda och större kontroll bör överväga alternativ som Delad Redis kontra dedikerad Redis titta på. Rätt plattform minskar arbetsinsatsen och fyller typiska luckor. På så sätt kan fokus ligga kvar på applikationen och data.

Säker drift av replikering, kluster och Sentinel

Jag säkerställer replikering och klusterkommunikation med samma strikta säkerhetsåtgärder som för klientåtkomst. Detta innefattar autentisering, kryptering och korrekta anmälningar av ändpunkterna.

  • Replikation: Jag sätter replica-read-only ja, så att replikerna inte tillåter skrivåtkomst. För autentisering lagrar jag masteruser och masterauth på replikerna och använder egna ACL-användare med minimala behörigheter för detta.
  • Föråldrade data: Med replica-serve-stale-data nej På så sätt förhindrar jag att en isolerad replik levererar föråldrade data. Detta skyddar dataintegriteten och minskar attackytan i partitionerna.
  • Kluster: Jag aktiverar tls-cluster ja, så att Gossip-bussen körs krypterat. Dessutom ställer jag in kluster-meddelande-ip, kluster-meddelande-port och kluster-meddelande-buss-port till interna adresser/portar. På så sätt undviker jag att noder annonserar sina offentliga IP-adresser.
  • Sentinel: Även Sentinel körs endast i privata nätverk. För övervakade master använder jag sentinel auth-user och sentinel auth-pass. Jag exponerar inte administratörsgränssnittet utåt och tillåter endast definierade IP-intervall för operatörer.
  • Tillgänglighet kontra säkerhet: Jag kalibrerar min-repliker-att-skriva och min-replicas-max-lag, så att skrivåtkomst begränsas försiktigt vid partiella avbrott. Detta är visserligen främst ett skydd för konsistensen, men förhindrar också missbruk vid nätverksfel.

Skydd mot DoS-attacker och resursbegränsningar i konfigurationen

Förutom autentisering och nätverksbegränsningar säkrar jag Redis mot överbelastning och minnesattacker. På så sätt förblir tjänsten stabil, även om klienter uppför sig felaktigt eller illvilligt.

  • maxclients: Jag begränsar antalet samtidiga anslutningar till ett realistiskt värde med en buffert. På så sätt förhindrar jag att systemet överbelastas av anslutningsspam.
  • klientutgångsbuffertgränsFör normal, pubsub och replika Jag sätter strikta gränser. Det skyddar mot okontrollerad lagringsökning orsakad av långsamma användare.
  • timeout och tcp-keepalive: Jag kopplar automatiskt bort inaktiva anslutningar så att inga ”zombie”-anslutningar tar upp resurser.
  • tröskelvärde för latensövervakning och slowlog: Jag aktiverar mätpunkter för att tidigt upptäcka missbruksmönster (t.ex. KEYS-skanningar). Varningar om ovanligt långa kommandokörningstider underlättar tidig upptäckt.
  • maxminne och policy: Jag inför en maxminne-gräns och en lämplig eviction-policy. Detta är inte en säkerhetsfunktion i sig, men skyddar hela miljön mot OOM och nödstartar.

ACL-Design: Praktiska mönster och säker förvaring

Jag ser till att ACL:er är enkla, reproducerbara och kan versioneras. Jag fastställer inte bara reglerna vid körning, utan sparar dem i en fil och tilldelar den restriktiva filbehörigheter.

  • Bas: Jag stänger av standardanvändaren (användarinställning avstängd). För applikationer skapar jag särskilda användarkonton som endast får tillgång till de kommandokategorier som verkligen behövs (+@läs, +@write, -@dangerous).
  • Scopes: Jag avgränsar nyckelområden med prefix, t.ex. ~app:*. På så sätt kan en applikation inte av misstag påverka andra namnutrymmen.
  • Exempel: användarapp på >S3cur3P@ss ~app:* +@read +@write -@dangerous -config -module -eval -evalsha och en separat administratörsanvändare med +@alla, som endast är tillgänglig via Bastion-värdar.
  • Uthållighet: Jag använder aclfile /etc/redis/users.acl och ställ in filen med behörighetsnivå 600. Jag sparar ändringarna med ACL SAVE och dokumentera dem i ändringsloggen.
  • Rotation: Jag byter lösenord regelbundet och versionerar ACL-ändringar så att jag snabbt kan återställa dem om en incident skulle inträffa.

Kontrollera skript och moduler

Jag minskar angreppsyta för Lua-skript och Moduler Konsekvent. Onödiga funktioner tas bort, och farliga kommandon är förbjudna för appanvändare.

  • EVAL endast vid behov: Jag tar bort åtkomsten för användare som inte är administratörer till EVAL och EVALSHA. Skript körs annars med den anropande användarens behörigheter och kan flytta stora mängder data.
  • Lua-begränsningarMed lua-time-limit förhindrar jag att felaktiga skript blockerar servern under en längre tid. Vid behov avbryter jag med SCRIPT KILL från.
  • Härda moduler: MODULINLÄSNING Jag inaktiverar det via rename-kommando eller låt endast administratörer göra det. Moduler laddar jag uteslutande vid uppstart från en pålitlig, skrivskyddad sökväg.
  • Farliga kategorier: Istället för att blockera enskilda kommandon, tar jag bort -@dangerous hela riskgrupper (t.ex. DEBUG, CONFIG, MODULE, SHUTDOWN). Det är överskådligt och robust.

Säker driftsättning av container- och Kubernetes-miljöer

I containrar och på Kubernetes gäller samma principer – kompletterade med plattformskontroller. Jag förhindrar offentlig exponering, minimerar behörigheter och reglerar datavägar.

  • Nätverkspolicyer: Jag tillåter endast trafik mellan podar inom godkända namnutrymmen/distributioner. Tjänster för Redis körs internt; ingen NodePort/LoadBalancer ansluts till internet.
  • Pod-säkerhet: Redis körs runAsNonRoot, med readOnlyRootFilesystem och minimala Linux-funktioner. Jag aktiverar Seccomp/AppArmor-profiler och sätter resursbegränsningar.
  • Hemligheter: Lösenord och certifikat sparas som Hemlighet-Volym med begränsade behörigheter – ingår varken i containerbilden eller i loggarna. Rotationen sker automatiskt.
  • Volymer: Jag håller data och konfiguration tydligt åtskilda. Endast datavolymen är skrivbar, medan konfigurationsmonteringarna förblir skrivskyddade.
  • Livsförmåga/beredskap: Jag autentiserar hälsokontroller (t.ex. via en ACL-användare med läsbehörighet) för att förhindra att prober blir en bakdörr.

Automatisering, Systemd-sandboxing och säker distribution

Jag bygger in säkerhet i automatiseringen så att varje instans driftsätts på exakt samma sätt och på ett säkert sätt. Avvikelser upptäcks då omedelbart.

  • Mallar: redis.conf, ACL-filen och systemd-enheten versioneras som kod. Innan varje lansering kontrollerar jag bind, Ports, TLS och ACL:er automatiskt.
  • Säkerhetsförstärkning av systemd: I enheten aktiverar jag NoNewPrivileges=yes, PrivateTmp=yes, ProtectSystem=strikt, ProtectHome=ja och ställa in UMask=027. Detta begränsar effektivt åtkomst till filer och körningsrättigheter.
  • CICD-Gates: Pipelines avbryts om en port är offentligt exponerad, om certifikat saknas eller om riskfyllda kommandon inte har bytt namn. På så sätt förhindrar jag regressioner.
  • Bilder och paket: Jag skannar containerbilder och operativsystempaket för att upptäcka sårbarheter. Jag genomför uppdateringar stegvis och mäter samtidigt nyckeltal och felbudgetar.

Förberedelser inför incidenter: strukturerad åtgärdsplan

Jag planerar för en krissituation innan den inträffar. På så sätt kan jag reagera snabbt, begränsa skadorna och återuppta driften på ett smidigt sätt.

  • begränsa: Jag spärrar omedelbart nätverksvägarna (säkerhetsgrupper, brandvägg), stoppar offentlig exponering och fryser misstänkta instanser för att säkra bevis.
  • IdentifieraMed INFO kunder, ACL-LISTA, ROLL, CONFIG GET och MODULFÖRTECKNING kontrollerar jag status, aktiva användare, replikering och laddade moduler.
  • Rotera inloggningsuppgifter: Jag anger nya lösenord/ACL-nycklar och spärrar misstänkta användare (ACL SETUSER user off) och drar in rättigheterna tills saken är utredd.
  • Städning: Jag identifierar otillåtna nyckelrum med hjälp av en prefixstrategi, tar bort skadliga moduler offline och jämför konfigurationen med referensläget.
  • Restaurering: Jag återställer systemet från verifierade säkerhetskopior, installerar uppdateringar och implementerar säkerhetsoptimerade konfigurationer. Därefter följer en efteranalys med tydliga åtgärder.

Praktisk tillämpning: Checklista i ord

Jag börjar med att söka efter öppna Portar och begränsar åtkomsten omedelbart om 6379 är synligt för allmänheten. Därefter kopplar jag Redis till localhost eller en privat IP-adress och konfigurerar både värd- och molnbrandväggen. I nästa steg aktiverar jag requirepass, byter lösenord och konfigurerar ACL:er för användare och arbetsbelastningar. Därefter inaktiverar eller byter jag namn på känsliga kommandon, aktiverar TLS och stänger av klartextporten. Till sist sätter jag upp loggning, varningar, säkerhetskopior, regelbundna uppdateringar och återkommande konfigurationskontroller.

Kortfattat sammanfattat

Redis förblir säkert om jag Attackyta håller systemet litet, begränsar åtkomsten och krypterar kommunikationen. Kombinationen av nätverksisolering, stark autentisering och restriktiva kommandorättigheter stoppar vanliga attacker effektivt. Med TLS skyddar jag överföringen, med operativsystemskryptering skyddar jag datans beständighet. Övervakning, säkerhetskopiering och uppdateringar säkerställer den dagliga driften. Den som konsekvent genomför dessa åtgärder undviker öppna portar, skyddar känslig data och håller instanserna under tillförlitlig kontroll.

Aktuella artiklar