REDIS
Zaraz po instalacji Redis na VPS, aby bezpiecznie umożliwić dostęp z hasłem z zewnątrz, musisz wykonać trzy kluczowe kroki w pliku konfiguracyjnym (/etc/redis/redis.conf) oraz skonfigurować firewall.
1. Zmiana adresu nasłuchiwania (bind)
Domyślnie Redis słucha tylko na 127.0.0.1 (localhost). Musisz to zmienić, aby akceptował połączenia z sieci.
- Opcja zalecana (bezpieczniejsza): Dodaj adres IP swojego serwera obok localhost:
bind 127.0.0.1 <TWOJE_IP_VPS> - Opcja otwarta (mniej bezpieczna): Słuchanie na wszystkich interfejsach:
bind 0.0.0.0[1]
2. Ustawienie silnego hasła (requirepass)
To Twoja główna linia obrony. Odkomentuj linię i ustaw skomplikowane hasło: [1, 2]
text
requirepass TwojeBardzoDlugieISilneHaslo123!
Używaj kodu z rozwagą.
Redis jest bardzo szybki w sprawdzaniu haseł, więc krótkie hasło można łatwo złamać metodą brute-force. [1, 2]
3. Pozostawienie protected-mode yes
W nowych wersjach Redis (3.2+), jeśli ustawisz hasło i skonfigurujesz bind, tryb chroniony pozwoli na połączenia zewnętrzne. Nie musisz go wyłączać, co stanowi dodatkowy bezpiecznik. [1, 2]
4. Konfiguracja Firewall (UFW)
Musisz fizycznie otworzyć port w systemie, ale najlepiej zrobić to tylko dla Twojego konkretnego adresu IP (np. Twojego domu lub serwera aplikacji), zamiast otwierać go dla całego świata: [1, 2, 3]
bash
# Zezwól na dostęp tylko z Twojego IP
sudo ufw allow from <TWOJE_IP_DOMOWE> to any port 6379
sudo ufw reload
Używaj kodu z rozwagą.
5. Restart i test
Zastosuj zmiany:
bash
sudo systemctl restart redis-server
Używaj kodu z rozwagą.
Sprawdź połączenie z komputera zewnętrznego:
bash
redis-cli -h <IP_TWOJEGO_VPS> -a <TWOJE_HASLO> ping
# Oczekiwana odpowiedź: PONG
Używaj kodu z rozwagą.
Dobra praktyka: Dla maksymalnego bezpieczeństwa w środowisku produkcyjnym rozważ użycie tunelu SSH lub VPN, zamiast wystawiać port Redis bezpośrednio do internetu.
REDIS TUNEL SSH
Na serwerze produkcyjnym użycie tunelu SSH to najbezpieczniejsza metoda, ponieważ pozwala całkowicie zamknąć port 6379 dla świata w firewallu. Redis „myśli”, że łączysz się lokalnie.
Oto jak to skonfigurować krok po kroku:
1. Przygotowanie serwera VPS
Wróć do pliku /etc/redis/redis.conf i upewnij się, że Redis słucha tylko na localhost:
text
bind 127.0.0.1
Używaj kodu z rozwagą.
Następnie zamknij port 6379 w firewallu (jeśli go wcześniej otwierałeś):
bash
sudo ufw delete allow 6379/tcp
Używaj kodu z rozwagą.
Teraz Redis jest całkowicie niedostępny z zewnątrz.
2. Tworzenie tunelu z Twojego komputera
Uruchom poniższą komendę na swoim lokalnym komputerze (nie na VPS):
bash
ssh -L 6380:127.0.0.1:6379 user@ip-twojego-vps -N
Używaj kodu z rozwagą.
Co robi ta komenda?
-L 6380:127.0.0.1:6379: Przekierowuje Twój lokalny port6380na port6379serwera VPS.user@ip-twojego-vps: Twoje dane logowania do serwera.-N: Mówi SSH, aby nie uruchamiało zdalnej powłoki (tylko tunelowanie).
3. Łączenie się z Redisem przez tunel
Teraz Twoja aplikacja lub narzędzie CLI może połączyć się z Redisem, celując w Twój własny komputer na port 6380:
bash
# Jeśli masz ustawione hasło w redis.conf:
redis-cli -p 6380 -a TwojeHaslo
Używaj kodu z rozwagą.
Dlaczego to jest lepsze na produkcję?
- Szyfrowanie: Cały ruch między Tobą a Redisem jest szyfrowany przez SSH.
- Brak otwartych portów: Skanery portów nie wykryją Redisa na Twoim VPS.
- Uwierzytelnianie kluczem: Możesz logować się do tunelu za pomocą bezpiecznych kluczy SSH zamiast hasła.
Pro-tip: Tunel w tle
Jeśli chcesz, aby tunel działał stale w tle, użyj flagi -f:
bash
ssh -fN -L 6380:127.0.0.1:6379 user@ip-twojego-vps