Szyfrowanie Redis

Szyfrowanie Redis

„Redis to szeroko stosowana baza danych o wysokiej wydajności, która jest w stanie przechowywać różne struktury danych. Ponieważ jest używany przez duże aplikacje na poziomie przedsiębiorstw do dostarczania buforowania, systemów przesyłania wiadomości i pojemności bazy danych, aspekty bezpieczeństwa i szyfrowania danych są równie ważne jak wydajność. W ciągu ostatniej dekady nastąpiła rosnąca trend złośliwych ataków, które zostały wywołane w stosunku do baz danych w celu ujawnienia poufnych informacji lub zmiany danych. Tak więc ryzyko jest takie samo z aplikacjami, które korzystają z zaplecza Redis.

Redis jest zasadniczo zaprojektowany do autoryzowanych połączeń w środowiskach godnych zaufania. Dlatego zaleca się, aby nie narażać portu bazy danych Redis na ogół społeczeństwa lub Internetu i niezaufanych sieci. W większości przypadków, w których aplikacje internetowe generują treść, zapytając o sklep Redis i pchaj dane na podstawie żądań klienta, obowiązkowe jest wdrożenie warstwy pośrednie. Redis zapewnia różnorodne środki szyfrowania i bezpieczeństwa, takie jak listy kontroli dostępu (ACL), obsługa TLS i szyfrowanie w spoczynku w celu ochrony danych."

Zezwalaj na zaufany ruch dzięki uwierzytelnianiu Redis i ACL (listy kontroli dostępu)

Jak wspomniano, Redis nie jest bezpieczny do narażania na niezaufane sieci, Internet i połączenia klientów. W takim przypadku Redis zapewnia mechanizm uwierzytelniania bazy danych, w którym klienci powinni uwierzytelnić się za pomocą nazwy użytkownika i hasła. Każdy użytkownik jest powiązany z ograniczonym zestawem funkcji, klawiszy Redis i poleceń. Ograniczyłoby to niektórych klientów, mając tylko uprawnienia do wykonywania poleceń odczytu, ale nie poleceń zapisu. Ponadto ACL służy do ograniczenia poleceń wysokiego ryzyka, takich jak Flushall i FlushDB z niezaufanych źródeł. Ponadto Redis ma różne polecenia konfiguracyjne, które wprowadzono do zarządzania instancją Redis w konfiguracjach lokalnych, jak i chmurowych. Te polecenia konfiguracji nie są bardzo przydatne dla konsumentów. Tak więc ACL udaje się ukryć te polecenia przed opinią publiczną.

Uwierzytelnianie

Zwykle plik konfiguracyjny Redis zawiera linię o nazwie wymaganie które można użyć do włączenia uwierzytelniania hasła dla danej instancji bazy danych Redis. Dzięki tej opcji nieautentyczni klienci w ogóle nie uzyskają dostępu do bazy danych. Polecenie Auth jest używane do uwierzytelniania użytkowników do baz danych Redis. Jest rozszerzony z Redis wersja 6, której można użyć z dwoma parametrami w następujący sposób.

Auth

Sprawdzanie ACL pod kątem instancji Redis

Redis ACL można sprawdzić za pomocą polecenia listy ACL, jak pokazano następujące. Zasadniczo wyświetla szczegółowe informacje związane z użytkownikiem, takie jak nazwa użytkownika, status hasła (wymagany lub nie), klucze dostępu, poleceń i kanałów pub/sub.

Lista ACL



Powyższe dane wyjściowe można interpretować w następujący sposób.


Dostępne są różne reguły ACL, aby utworzyć prawidłowe użytkowników z minimalnym poziomem dostępu do instancji bazy danych Redis. Polecenie ACL Setuser może być używane do konfigurowania różnych użytkowników o różnych poziomach dostępu.

Szyfruj przesyłane dane za pomocą Redis TLS

Z wersji 6 Redis wspierano SSL/TLS. Szyfruje dane wysyłane przez wszystkie kanały komunikacji Redis, takie jak połączenia klientów, połączenia klastra, wartowniki i linki do replikacji. Ponadto Redis SSL/TLS musi być włączony w czasie kompilacji.

Domyślnie serwery Redis działają w trybie normalnym, który nie obsługuje szyfrowania SSL/TLS. Dlatego musisz wyraźnie uruchomić instancję Redis w trybie TLS, jak pokazano następujące.

REDIS-SERVER-TLS-Port 6379 --port 0-TLS-CERT-FILE ./reditls/tls/redis.CRT--TLS-KLEY ./reditls/tls/redis.Key-TLS-CA-CERT-PILLE ./reditls/tls/ca.crt


Zakładamy, że wszystkie certyfikaty i klucze SSL są dostępne. Podobnie, aby zainicjować połączenie klienta, powinniśmy użyć flagi -TLS wraz z niezbędnymi klawiszami SSL i certyfikatami w następujący sposób.

Redis-cli--tls--Cert ./reditls/tls/redis.CRT -Key ./reditls/tls/redis.Klucz -Cacert ./reditls/tls/ca.crt


Ponadto instancję Redis należy skonfigurować z x.509 certyfikat i klucz prywatny.

Szyfrowanie SSL/TLS w replikacji, Sentinel i Cluster Communication

Replikacja

W Redis, gdy replikacja jest włączona, instancja główna używa TLS-Port I TLS-Auth-Clients Opcje poinformowania klientów portu, który akceptuje połączenia TLS i czy uwierzytelnianie klienta jest wymagane, czy nie. Podobnie w instancjach repliki zaleca się stosowanie szyfrowania SSL/TLS do połączeń wychodzących w kierunku instancji głównych. W takim przypadku Replikacja TLS opcja powinna być ustawiona na Tak.

Posterunek

Ilekroć Redis Sentinel był włączony dla potrzeb wysokiej dostępności, Replikacja TLS Opcja decyduje o tym, czy połączenie TLS lub inne niż TLS musi być używane podczas łączenia się z serwerami głównymi. Podobnie ta sama dyrektywa reguluje połączenia przychodzące z innych wartowników to SSL/TLS. Jeśli Replikacja TLS dyrektywa ustawia się na tak, TLS-Port Opcja powinna być również przypisana do odpowiedniego portu.

Grupa

Gdy klastry są używane w Redis, zaleca się dostarczanie bezpiecznych kanałów komunikacji dla autobusów klastrowych i linków do klastra. Redis zapewnia TLS-klaster Dyrektywa w celu ustalenia obsługi szyfrowania SSL/TLS wśród węzłów klastrów. Ta dyrektywa powinna być ustawiona na Tak Gdy potrzebujesz połączenia TLS, aby wysłać dane z jednego węzła do drugiego.

Szyfrowanie w spoczynku

Redis jest wdrażany zarówno w środowisku lokalnym, jak i chmurowym. Wdrożem w chmurze reszta komunikacja jest zawsze szyfrowana. Główni dostawcy chmur, tacy jak AWS, Azure i GCP Redis wdrożenia za pośrednictwem szyfrowanych kanałów. Ponadto Amazon Cloud zapewnia funkcje szyfrowania w transporcie, które są wymienione poniżej.

    • Master-Replica Communication jest szyfrowana w AWS wdrożonych instancji Redis.
    • Połączenia serwera i klienta SSL i połączenia klienta
    • Obsługa uwierzytelniania klienta i serwera za pomocą polecenia Redis Auth omówione we wcześniejszej sekcji.

Wniosek

Podsumowując, Redis nie jest zaprojektowany w celu ujawnienia swojego portu TCP na niezaufane połączenia klientów w niewiarygodnych środowiskach. Według projektu został opracowany tylko dla zaufanych źródeł. Jak wspomniano, w przypadku Redis wystawionych na rzecz publiczności za pośrednictwem aplikacji internetowej należy zaimplementować dodatkową warstwę bezpieczeństwa między połączeniami kliencką a instancją Redis. Zgodnie z tym artykułem Redis obsługuje listy kontroli dostępu (ACLS), wsparcie TLS i szyfrowanie w spoczynku, aby złagodzić złośliwe ataki. Ponadto omówiliśmy obsługę SSL/TLS dla klastra Redis, repliki i komunikacji Sentinel. Ogólnie zaleca się ćwiczenie powyższych technik, ilekroć instancja Redis jest narażona na społeczeństwo.