Powrót do bloga

Jak zainstalować i zabezpieczyć Redis na Ubuntu 18.04

Jak zainstalować i zabezpieczyć Redis na Ubuntu 18.04

Redis to wydajny magazyn klucz-wartość w pamięci, który może być używany jako serwer bazy danych, pamięć podręczna i broker komunikatów. Jest powszechnie znany ze swojej wysokiej wydajności, elastyczności i obsługi wielu różnych języków. Jest to darmowe oprogramowanie o otwartym kodzie źródłowym napisane w języku programowania C. W tym poradniku dowiesz się, jak zainstalować i zabezpieczyć Redis na Ubuntu 18.04.

Wymagania wstępne

Aby móc postępować zgodnie z tym poradnikiem, musisz wcześniej przygotować kilka rzeczy. Musisz posiadać serwer Ubuntu 18.04, który możesz łatwo zainstalować, postępując zgodnie z naszym samouczkiem. Ponadto musisz mieć użytkownika innego niż root z uprawnieniami sudo oraz skonfigurowaną podstawową zaporę sieciową (firewall). Możesz to skonfigurować, postępując zgodnie z naszymi przewodnikami dotyczącymi konfiguracji pliku sudoers w systemie Linux oraz konfiguracji UFW na serwerze chmurowym Ubuntu i Debian.

Zaczynajmy!

Instalacja Redis

Redis jest bezpośrednio dostępny w oficjalnym repozytorium Ubuntu. Jest to najprostszy sposób na jego instalację i konfigurację. Zalecamy skorzystanie z tej metody, chyba że istnieją konkretne powody, aby tego nie robić. Ponieważ kod źródłowy Redis jest dostępny bezpłatnie, możliwe jest również skompilowanie go ze źródeł. Nie zalecamy jednak tego rozwiązania, ponieważ jest ono trudniejsze w zarządzaniu i aktualizacji.

Instalacja Redis z repozytorium Ubuntu

Najpierw zaktualizuj lokalną pamięć podręczną pakietów APT:

Następnie zainstaluj Redis za pomocą następującego polecenia:

Instalacja Redis ze źródeł

Ubuntu domyślnie nie zawiera narzędzi do kompilacji ani niezbędnych bibliotek. Poniższe polecenie zainstaluje wszystkie narzędzia niezbędne do skompilowania Redis:

Do skompilowania Redis wymagane są dwie dodatkowe zależności. Są one niezbędne do skompilowania Redis z dodatkowymi funkcjami, na przykład obsługą TLS, integracją z systemd itp. Aby skompilować Redis z obsługą TLS, zainstaluj pakiet „libssl-dev”. Aby skompilować Redis z obsługą systemd, zainstaluj pakiet „libsystemd-dev”:

Kod źródłowy Redis jest dostępny w serwisie GitHub. Zobacz stronę Redis na GitHubie. Następnie pobierz kod źródłowy:

Redis GitHub page

Zmień bieżący katalog roboczy na katalog z kodem źródłowym Redis:

Następnie uruchom narzędzie make, aby rozpocząć kompilację. Skompiluje ono Redis bez żadnych dodatkowych elementów:

Aby włączyć obsługę TLS (zakładając, że pakiet „libssl-dev” jest zainstalowany), użyj zamiast tego następującego polecenia:

Aby włączyć obsługę systemd (zakładając, że pakiet „libsystemd-dev” jest zainstalowany), użyj następującego polecenia:

Następnie przetestuj, czy kompilacja zakończyła się pomyślnie. Pamiętaj, że uruchomienie testu może wymagać dodatkowego pakietu „tcl-dev” i powiązanych z nim zależności:

Na koniec zainstaluj Redis, uruchamiając następujące polecenie:

Jeśli Redis został skompilowany z obsługą TLS, uruchomienie serwera będzie musiało odbyć się w następujący sposób:

Konfiguracja Redis

Po zakończeniu instalacji nadszedł czas na konfigurację Redis. Otwórz plik konfiguracyjny Redis w edytorze tekstu i przewiń w dół do sekcji „supervised”:

secure redis 1

Zmień wartość „supervised” na „systemd”. Zapewni to, że usługa Redis będzie zarządzana przez systemd. Aby zmiany weszły w życie, zrestartuj usługę Redis:

Testowanie Redis

Zawsze warto przetestować, czy Redis działa poprawnie, zanim zacznie się go używać na szerszą skalę. Oto kilka sposobów na przetestowanie działania Redis. Pierwszym krokiem jest sprawdzenie, czy usługa Redis jest uruchomiona i działa:

W tym miejscu Redis już działa. Domyślnie usługa Redis uruchamia się przy starcie systemu. Jeśli usługa Redis ma być uruchamiana ręcznie, należy ją wyłączyć:

Kolejnym testem jest sprawdzenie działania za pomocą konsoli Redis. Uruchom klienta wiersza poleceń Redis:

Uruchom polecenie „ping”:

Wynik potwierdza, że połączenie z serwerem jest nadal aktywne. Kolejnym testem jest sprawdzenie, czy pozwala on na ustawianie kluczy. Utwórz klucz „temp” o wartości „hello world”:

Pobierz wartość za pomocą polecenia „get”:

Jeśli do tej pory wszystko działa poprawnie, Redis powinien bez problemu zwrócić wartość klucza. Zamknij klienta wiersza poleceń Redis:

Redis command-line

Ostatnim testem jest sprawdzenie, czy Redis potrafi zachować dane nawet po zatrzymaniu lub ponownym uruchomieniu. Uruchom ponownie usługę Redis:

Jeśli podczas uruchamiania powyższego polecenia wystąpi błąd, użyj polecenia “systemctl enable redis-server”:

Uruchom klienta wiersza poleceń Redis i pobierz wartość utworzonego wcześniej klucza „temp”:

To kończy testowanie bazy Redis. Twój serwer Redis jest teraz gotowy do użycia w pożądanym celu.

Zabezpieczanie Redis

W tym momencie Redis jest w pełni operacyjny. Jednak niektóre z jego domyślnych konfiguracji nie zapewniają najlepszego bezpieczeństwa. Jeśli nie zostaną zaktualizowane, każdy złośliwy podmiot może to wykorzystać, aby uzyskać dostęp do serwera i jego danych. Ta sekcja pokaże, jak ograniczyć te zagrożenia. Chociaż te kroki są opcjonalne, zdecydowanie zaleca się ich wykonanie w celu zwiększenia bezpieczeństwa systemu.

Wiązanie z localhost

Domyślnie Redis jest dostępny tylko z poziomu localhost. Jeśli jednak Redis został skonfigurowany na zdalnym serwerze, konfiguracja musi zostać zaktualizowana, aby umożliwić połączenie z dowolnego miejsca. Może to jednak nie być tak bezpieczne, jak powiązanie z localhost. Aby ponownie powiązać Redis z localhost, otwórz plik konfiguracyjny Redis w edytorze tekstu:

Przewiń w dół i znajdź poniższą linię. Upewnij się, że nie jest zakomentowana:

Binding to localhost

Zapisz i zamknij plik. Następnie uruchom ponownie usługę Redis, aby upewnić się, że zmiana wejdzie w życie natychmiast:

Zweryfikuj, czy zmiana zakończyła się sukcesem:

Jeśli otrzymasz błąd ‘netstat: command not found’, użyj polecenia do zainstalowania net-tools “sudo apt-get install net-tools”. Wynik potwierdza, że „redis-server” został pomyślnie powiązany z localhost (127.0.0.1), co odzwierciedla ostatnio wprowadzoną zmianę. Jeśli widoczny jest inny adres IP (na przykład 0.0.0.0), sprawdź ponownie plik konfiguracyjny i ponownie uruchom serwer Redis.

Konfigurowanie hasła Redis

Skonfigurowanie hasła umożliwia korzystanie z wbudowanej funkcji bezpieczeństwa Redis – polecenia „AUTH”. Wymaga ono od klientów uwierzytelnienia w celu uzyskania dostępu do bazy danych. Domyślnie Redis nie ma skonfigurowanego hasła. Hasło musi zostać zadeklarowane w pliku konfiguracyjnym Redis. Otwórz plik konfiguracyjny w edytorze tekstu:

Następnie przewiń w dół do poniższej linii i usuń znak komentarza:

Po odkomentowaniu domyślnym hasłem będzie „foobared”. Zmień je na wybrane przez siebie hasło. W przypadku Redis siła hasła jest bardzo istotnym czynnikiem. Ponieważ Redis jest serwerem o wysokiej wydajności, potencjalnie łatwiej go zaatakować metodą brute-force. Z tego powodu plik konfiguracyjny zawiera bezpośrednio następujące ostrzeżenie. Oto szybki przykład generowania bardzo silnego losowego hasła. Użyjemy polecenia OpenSSL do wygenerowania losowego ciągu znaków:

Po skonfigurowaniu nowego hasła zrestartuj usługę Redis, aby zmiany weszły w życie:

Czas sprawdzić, czy hasło zostało pomyślnie zastosowane. Uruchom konsolę wiersza poleceń Redis:

Następnie spróbuj ustawić nowy klucz:

Redis odrzuci żądanie, ponieważ brak jest uwierzytelnienia dla tej akcji. Aby wykonać jakąkolwiek akcję na serwerze, użytkownik musi najpierw zostać autoryzowany. Autoryzuj użytkownika za pomocą następującego polecenia:

Jeśli hasło było poprawne, Redis potwierdzi akcję. Teraz Redis zezwoli na dostęp do funkcji swojego serwera:

Na razie nasza praca z konsolą Redis jest zakończona. Możesz zamknąć konsolę:

Zmiana nazw niebezpiecznych poleceń

Redis umożliwia zmianę nazwy lub całkowite wyłączenie niektórych poleceń, które są uważane za niebezpieczne. To kolejna ważna wbudowana funkcja bezpieczeństwa systemu Redis. Dlaczego polecenia są uznawane za niebezpieczne? Jeśli zostaną uruchomione przez nieuprawnionego użytkownika, mogą one zmienić konfigurację, zniszczyć lub usunąć dane na serwerze. Powszechną praktyką jest wyłączanie/zmiana nazw wielu niebezpiecznych poleceń Redis. Należy pamiętać, że zagrożenie bezpieczeństwa ze strony polecenia zależy od sytuacji. Na przykład niektóre z poniższych poleceń mogą być potrzebne na co dzień. W takich przypadkach ich wyłączenie nie jest zalecane. W takiej sytuacji korzystniejsza może okazać się zmiana nazwy polecenia. Oto krótka lista poleceń, które są uznawane za niebezpieczne. Jest to dobry punkt wyjścia do zwiększenia bezpieczeństwa serwera Redis:

  • FLUSHDB
  • FLUSHALL
  • KEYS
  • PEXPIRE
  • DEL
  • CONFIG
  • SHUTDOWN
  • BGREWRITEAOF
  • BGSAVE
  • SAVE
  • SPOP
  • SREM
  • RENAME
  • DEBUG

Aby zmienić nazwę lub wyłączyć polecenie, należy je zadeklarować w pliku konfiguracyjnym Redis. Otwórz plik konfiguracyjny Redis i dodaj następujące linie. Tutaj „rename-command” służy do zmiany nazwy poleceń na pusty ciąg znaków. Dodaj tyle wpisów, ile to konieczne:

Podobnie możliwe jest również zmiana nazwy poleceń na inną. W niektórych sytuacjach może to zapewnić większą elastyczność:

rename-command

Zapisz plik i wyjdź z edytora. Aby zmiany weszły w życie, zrestartuj usługę Redis:

Zweryfikuj zmiany. Następnie uruchom konsolę Redis i uwierzytelnij dostęp:

Załóżmy, że polecenie „CONFIG” zostało wyłączone lub zmieniono jego nazwę. Spróbuj użyć następującego polecenia „CONFIG”. Zakończy się ono niepowodzeniem:

Jeśli polecenie zostało wyłączone, nie będzie można uzyskać do niego dostępu, dopóki nie zostanie ponownie włączone. Jeśli jednak zmieniono jego nazwę, użyj nowego aliasu:

command_4

Podsumowanie

Ten samouczek pokazuje, jak zainstalować, zabezpieczyć, skonfigurować i zweryfikować instalację Redis. Pokazuje również, jak korzystać z wbudowanych funkcji bezpieczeństwa Redis, aby uczynić go mniej podatnym na ataki. Jeśli jednak ktoś jest już zalogowany na serwerze, dość łatwo jest obejść funkcje bezpieczeństwa specyficzne dla Redis. Dlatego posiadanie zapory sieciowej (firewalla) chroniącej dostęp do serwera Redis ma kluczowe znaczenie.

Miłej pracy!

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.