Otwórz port Redis dla połączeń zdalnych


118

Mogę pingować ponga Redis na serwerze:

# redis-cli ping
PONG

Ale zdalnie mam problemy:

$ src/redis-cli -h REMOTE.IP ping
Could not connect to Redis at REMOTE.IP:6379: Connection refused

W config mam standardowy port:

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

Więc może powinienem otworzyć port 6379 na zdalnym komputerze Ubuntu? Jak mam to zrobić?


redis nie nasłuchuje na zdalnym komputerze?
— Sergio Tulentsev

może, jak to sprawdzić
— Maxim Yefremov

Czy wyłączyłeś ufw?
— insign

Odpowiedzi:


214

Czy ustawiłeś opcję bind, aby umożliwić zdalny dostęp na serwerze redis?

Przed (plik /etc/redis/redis.conf)

bind 127.0.0.1

Po

bind 0.0.0.0

i uruchom, sudo service redis-server restartaby zrestartować serwer. Jeśli to nie jest problem, możesz sprawdzić zapory, które mogą blokować dostęp.

Ważne: jeśli nie używasz zapory (iptables, ufw ..) do kontrolowania, kto łączy się z używanym portem, KAŻDY może połączyć się z tą instancją Redis. Bez korzystania z RedisAUTH oznacza to, że każdy może uzyskać dostęp / zmienić / usunąć Twoje dane. Bądź bezpieczny!


2
w pliku konfiguracyjnym dodałem ciąg bind 0.0.0.0po napisie bind 127.0.0.1. Zrestartowano redis. A teraz może łączyć się zdalnie.
— Maxim Yefremov

Czy jest jakaś różnica, jeśli użyjemy bind 0.0.0.0samotnie vsbind 127.0.0.1 0.0.0.0
— Nyxynyx

1
@Nyxynyx 0.0.0.0 wiąże się ze wszystkimi adapterami, więc jest to niepotrzebne. Nie powinno to jednak robić różnicy.
— MildlySerious

1
Czy otwieranie redis dla jakichkolwiek wywołań IP jest bezpieczne? Jak możemy ograniczyć dostęp do redis tylko z niektórych adresów IP?
— brsbilgic

1
@MildlySerious wielkie dzięki. Zmarnowaliśmy prawie 2 tygodnie, zastanawiając się, czy zapora ogniowa, sieć lub inny problem. Ale ta zmiana zadziałała jak mistrz.
— kinnu

23

W moim przypadku musiałem wykonać następujące czynności:

1- Komentarz bind 127.0.0.1

2- Zmień protected-modenano

3- Chroń mój serwer za pomocą iptables( https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04 )


1
Musiałem użyć bind 0.0.0.0. „bind 127.0.0.1” nie działa dla mnie. Nie musiałem ustawiać „trybu chronionego” na „nie”. Ostrzeżenie: nie zostawiaj pustego miejsca przed "bind", bo serwer się nie uruchomi. Uwaga: używam portu Windows Redis
— Josh

7

Krótka uwaga, że ​​zrobienie tego bez dalszego zabezpieczania serwera Redis nie jest dobrym pomysłem, ponieważ może wystawić cię na atak. Pamiętaj, aby również zaimplementować AUTH lub w inny sposób to zabezpieczyć. Szczegółowe informacje można znaleźć pod adresem http://redis.io/topics/security .


3

1- Komentarz w powiązaniu 127.0.0.1

2- ustaw requirepass yourpassword

następnie sprawdź, czy firewall zablokował twój port

iptables -L -n

usługa iptables zatrzymuje się


3
  1. Otwórz $ REDIS_HOME / redis.conf, odkomentuj requirepass -YOUR-PASSWORD-HERE-i zapisz swoje hasło w określonych wierszach.

  2. Zaloguj się do redis za pomocą redis-cli i zweryfikuj swoje hasło w bazie danych za pomocą auth -YOUR-PASSWORD-HERE-polecenia.

  3. Wyłącz tryb chroniony, zmieniając jego ciąg w $ REDIS_HOME / redis.conf na protected-mode no.

  4. Wyszukaj wszystkie wartości portów wiązania i skomentuj je wszystkie. Po prostu dodaj bind 0.0.0.0do pliku $ REDIS_HOME / redis.conf.

  5. Wyłącz zaporę lub otwórz port Redis.

  6. Zacznij redis za pomocą ./redis-server $REDIS_HOME/redis.conf.

  7. Sprawdź konfigurację za pomocą ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-.

  8. Sprawdź konfigurację za pomocą ./redis-cli -h -YOUR-IP- ping.

9
Nigdy nie udzielaj rady „Wyłącz zaporę sieciową”.
— Samantha Atkins

3
  1. Otwórz plik w lokalizacji /etc/redis.conf

  2. Skomentować bind 127.0.0.1

  3. Uruchom ponownie Redis:

     sudo systemctl start redis.service
    
  4. Wyłącz Firewalld:

     systemctl disable firewalld
    
  5. Zatrzymaj Firewalld:

     systemctl stop firewalld
    

Więc spróbuj:

redis-cli -h 192.168.0.2(ip) -a redis(username)

1

Krótka uwaga, że ​​jeśli używasz instancji AWS ec2, jest jeszcze jeden dodatkowy krok, który moim zdaniem jest również obowiązkowy. Przegapiłem krok 3 i zajęło mi cały dzień wymyślenie dodania reguły ruchu przychodzącego do grupy bezpieczeństwa

Krok 1 (jak poprzednio): w zmianie redis.conf powiąż 127.0.0.1 z bind 0.0.0.0

Krok 2 (jak poprzednio): w swoim redis.conf zmień tryb chroniony tak na tryb chroniony nie

ważne dla instancji Amazon Ec2:

Krok 3: Na obecnym komputerze ec2 przejdź do grupy bezpieczeństwa. dodaj regułę przychodzącą dla niestandardowego TCP z portem 6379 i wybierz opcję „używaj z dowolnego miejsca”.


1

W moim przypadku używam redis-stable

Go to redis-stable path 
 cd /home/ubuntu/software/redis-stable

Otwórz plik redis.conf

vim redis.conf

Zmień bind 127.0.0.1nabind 0.0.0.0

zmień protected-mode yesna protected-mode no

Zrestartuj serwer redis:

/etc/init.d/redis-server stop
 redis-server redis.conf

0

Wiązanie i tryb chroniony są podstawowymi krokami. Ale jeśli ufw jest włączony, będziesz musiał zezwolić na port redis w ufw.

  1. Sprawdź status ufw,ufw status jeśli Status: activenastępnie zezwól na redis-portufw allow 6379
  2. vi /etc/redis/redis.conf
  3. Zmień bind 127.0.0.1nabind 0.0.0.0
  4. zmień protected-mode yesnaprotected-mode no
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.