Відкрийте порт Redis для віддалених з'єднань


118

Я можу пінг-понг Redis на сервері:

# redis-cli ping
PONG

Але віддалено у мене виникли проблеми:

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

У налаштуваннях я отримав стандартний порт:

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

Тож, можливо, я повинен відкрити порт 6379 на віддаленій машині Ubuntu? Як це зробити?


redis не слухає на віддаленій машині?
Серхіо Туленцев

можливо, як це перевірити
Максим Єфремов

Ви відключили ufw?
вступ

Відповіді:


214

Ви встановили опцію прив’язки, щоб дозволити віддалений доступ на сервер redis?

До (файл /etc/redis/redis.conf)

bind 127.0.0.1

Після

bind 0.0.0.0

і запустіть sudo service redis-server restartдля перезавантаження сервера. Якщо це не проблема, ви можете перевірити будь-які брандмауери, які можуть перекрити доступ.

Важливо: Якщо ви не використовуєте брандмауер (iptables, ufw ..) для контролю того, хто підключається до використовуваного порту, будь-хто може підключитися до цього екземпляра Redis. Без використання Redis,AUTH це означає, що кожен може отримати доступ / змінити / видалити ваші дані. Будь обережним!


2
у файл config я додав рядок bind 0.0.0.0після рядка bind 127.0.0.1. Перевтомований редис. А тепер можна підключити віддалено.
Максим Єфремов

Чи є якась різниця, якщо ми будемо використовувати bind 0.0.0.0один протиbind 127.0.0.1 0.0.0.0
Nyxynyx

1
@Nyxynyx 0.0.0.0 пов'язує всі адаптери, тому це зайве. Не варто нічого змінити.
MildlySerious

1
Чи безпечно відкривати Redis для будь-яких ip-дзвінків? Як ми можемо обмежити доступ до редакції лише з певних IP-адрес?
brsbilgic

1
@MildlySerious велике спасибі Ми витратили майже два тижні, розбираючись, чи є брандмауер, мережа чи якась інша проблема. Але ця зміна спрацювала як шампион.
kinnu

23

Для мене мені потрібно було зробити наступне:

1- Коментуйте bind 127.0.0.1

2- Змінити protected-modeнаno

3- Захистіть мій сервер за допомогою iptables( https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04 )


1
Довелося використовувати bind 0.0.0.0. "bind 127.0.0.1" не працював для мене. Мені не потрібно було встановлювати "захищений режим" на "ні". Попередження: Не залишайте порожнього місця перед тим, як "прив'язати", або сервер не запуститься. Примітка: я використовую Windows порт Redis
Josh

7

Швидке зауваження, що робити це без додаткового захисту вашого сервера Redis - це не дуже гарна ідея, оскільки це може залишати вас відкритими для атаки. Не забудьте також застосувати AUTH або іншим чином убезпечити це. Докладні відомості див. У розділі http://redis.io/topics/security .


3

1- Прокоментувати прив’язати 127.0.0.1

2-х набір вимагаєвведення пароля

потім перевірте, чи брандмауер заблокував ваш порт

iptables -L -n

сервісні iptables зупиняються


3
  1. Відкрийте $ REDIS_HOME / redis.conf та unterment і requirepass -YOUR-PASSWORD-HERE-запишіть свій пароль у зазначених рядках.

  2. Увійдіть до redis за допомогою redis-cli та підтвердьте свій пароль у базі даних за допомогою auth -YOUR-PASSWORD-HERE-команди.

  3. Вимкніть захищений режим, змінивши рядок у $ REDIS_HOME / redis.conf на protected-mode no.

  4. Шукайте всі значення прив’язаних портів та коментуйте їх. Просто додайте bind 0.0.0.0до $ REDIS_HOME / redis.conf файл.

  5. Вимкніть брандмауер або відкрийте порт Redis.

  6. Почніть використовувати Redis ./redis-server $REDIS_HOME/redis.conf.

  7. Перевірте конфігурацію через ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-.

  8. Перевірте конфігурацію через ./redis-cli -h -YOUR-IP- ping.

9
Будь ласка, ніколи не дайте поради "Вимкнути брандмауер".
Саманта Аткінс

3
  1. Відкрийте файл за адресою /etc/redis.conf

  2. Коментуйте bind 127.0.0.1

  3. Перезапустити Redis:

     sudo systemctl start redis.service
    
  4. Вимкнути Firewalld:

     systemctl disable firewalld
    
  5. Зупинити Firewalld:

     systemctl stop firewalld
    

Потім спробуйте:

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

1

Швидке зауваження, що якщо ви використовуєте екземпляр AWS ec2, є ще один додатковий крок, який, на мою думку, також є обов'язковим. Я пропустив крок 3, і мені знадобився цілий день, щоб зрозуміти, як додати вхідне правило до групи безпеки

Крок 1 (як і попередній): у зміні redis.conf змініть прив’язку 127.0.0.1 до прив’язки 0,0.0.0

Крок 2 (як і раніше): у вашому redis.conf змініть захищений режим так на захищений режим ні

важливий для екземпляра Amazon Ec2:

Крок 3. У вашій поточній машині ec2 перейдіть до групи безпеки. додайте вхідне правило для користувальницького TCP з портом 6379 та оберіть опцію "використовувати з будь-якого місця".


1

У моєму випадку я використовую стійкий до Redis

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

Відкрийте redis.conf

vim redis.conf

Змініть bind 127.0.0.1наbind 0.0.0.0

змінити protected-mode yesна protected-mode no

Перезапустіть сервер redis:

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

0

І те, і інше - захищений режим - це важливі кроки. Але якщо ufw увімкнено, вам доведеться зробити порт redis дозволити в ufw.

  1. Перевірте статус ufw,ufw status якщо Status: activeпотім дозволити redis-портufw allow 6379
  2. vi /etc/redis/redis.conf
  3. Змініть bind 127.0.0.1наbind 0.0.0.0
  4. змінити protected-mode yesнаprotected-mode no
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.