Как отключить ‘protected-mode’ в Redis?

Вопрос или проблема

Я хотел бы отключить protected-mode на моем производственном Redis. Относительно следующей ошибки, которую я получил от другого экземпляра Redis-Sentinel, я мог отключить его в реальном времени, подключившись к Redis с основного компьютера, на котором он работает.

ОТКАЗАНО Redis работает в защищенном режиме, потому что защищенный режим включен, адрес привязки не был указан, клиентам не запрашивается пароль аутентификации. В этом режиме подключения принимаются только с интерфейса обратной связи. Если вы хотите подключиться к Redis с внешних компьютеров, вы можете воспользоваться одним из следующих решений:

1) Просто отключите защищенный режим, отправив команду ‘CONFIG SET protected-mode no’ с интерфейса обратной связи, подключившись к Redis с того же хоста, на котором работает сервер, однако УБЕДИТЕСЬ, что Redis не доступен из интернета, если вы это сделаете. Используйте CONFIG REWRITE, чтобы сделать это изменение постоянным.

2) В качестве альтернативы вы можете просто отключить защищенный режим, отредактировав конфигурационный файл Redis и установив параметр защищенного режима в ‘no’, а затем перезапустив сервер.

3) Если вы запустили сервер вручную только для тестирования, перезапустите его с параметром ‘–protected-mode no’.

4) Настройте адрес привязки или пароль аутентификации.

ПРИМЕЧАНИЕ: Вам нужно сделать только одну из вышеуказанных вещей, чтобы сервер начал принимать соединения извне.

Но когда я подключаюсь и пытаюсь отключить его, я получаю ошибку (error) ERR Unsupported CONFIG parameter: protected-mode.

Аутентификация не настроена и ничего другого – вся безопасность управляется правилами брандмауэра. Файл redis.conf почти по умолчанию.

Демо

root@svim-redis03 /etc/redis # redis-cli

127.0.0.1:6379> CONFIG GET protected*
(пустой список или набор)
127.0.0.1:6379> CONFIG GET bind*
1) "bind"
2) "127.0.0.1"
127.0.0.1:6379> CONFIG SET protected-mode no
(error) ERR Unsupported CONFIG parameter: protected-mode
127.0.0.1:6379> exit

root@svim-redis03 /etc/redis # redis-server --version
Redis server v=3.2.9 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=86450d2ba8219c1e

Есть ли что-то, что мне нужно проверить или изменить перед этим? Я не смог найти никакой подсказки в документации или в вопросах на GitHub.

Обновление 01

Не удается даже изменить адрес привязки или любой другой параметр конфигурации. Мне нужно сначала включить изменения конфигурации?

127.0.0.1:6379> config set bind "127.0.0.1 11.12.13.14"
(error) ERR Unsupported CONFIG parameter: bind

Оказывается, что текущий запущенный сервер не той же версии, что и бинарный файл, который я установил.

Как воспроизвести это?

Просто подключитесь через redis-cli к вашему экземпляру redis и введите INFO server, что вернет кучу информации.

127.0.0.1:6379> INFO server
# Сервер
redis_version:3.0.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:869e89100d5ea8c2
redis_mode:standalone
os:Linux 4.2.0-35-generic x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.4
process_id:26720
run_id:6645270dd2ac6a7f96caa054f9dbba9e66566755
tcp_port:6379
uptime_in_seconds:10971777
uptime_in_days:126
hz:10
lru_clock:6676576
config_file:/etc/redis/redis.conf

Как вы можете видеть, этот экземпляр redis работает почти 127 дней и использует redis_version:3.0.7.

Как это исправить?

Перезапустите сервер и убедитесь, что вы действительно его перезапустили! Например, в большинстве дистрибутивов Linux вы можете сделать это, выполнив следующие команды.

root@svim-redis03 ~ # service redis-server stop
Остановка redis-server: redis-server.

Проверьте, действительно ли он отключен, пытаясь подключиться с помощью redis-cli. Если вы все еще можете подключиться, экземпляр все еще работает. Проверьте это, поиск активных процессов redis.

root@svim-redis03 ~ # ps -efl |grep redis
1 S redis    12418     1  0  80   0 - 10673 ep_pol  2016 ?        05:33:17 /usr/bin/redis-server 127.0.0.1:6381
1 S redis    12442     1  0  80   0 - 11697 ep_pol  2016 ?        05:33:46 /usr/bin/redis-server 127.0.0.1:6382
1 S redis    12453     1  0  80   0 - 10673 ep_pol  2016 ?        05:40:17 /usr/bin/redis-server 127.0.0.1:6383
4 S root     16570 16386  0  80   0 -  2489 wait_w 10:42 pts/7    00:00:00 tail -f /var/log/redis/redis-server-6379.log
0 S root     17064 12637  0  80   0 -  3617 pipe_w 10:47 pts/1    00:00:00 grep --color=auto redis
1 S redis    26720     1  0  80   0 - 453041 ep_pol Mar07 ?       08:37:01 /usr/bin/redis-server 127.0.0.1:6379

Как вы можете видеть, экземпляр (идентификатор процесса: 26720) все еще работает. Завершите его с помощью следующей команды.

kill 26720

После того, как вы завершили процесс, проверьте снова с ps -efl |grep redis, если экземпляр действительно отключен.

Наконец, снова запустите его с помощью

root@svim-redis03 ~ # service redis-server start
Запуск redis-server: redis-server.

Теперь проверьте, работает ли экземпляр с правильной версией.

root@svim-redis03 ~ # redis-cli
127.0.0.1:6379> INFO server
# Сервер
redis_version:3.2.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:86450d2ba8219c1e
redis_mode:standalone
os:Linux 4.2.0-35-generic x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.4
process_id:17135
run_id:40d6fa2e2b25e8f5b97a3c97ec1bddb8edda0014
tcp_port:6379
uptime_in_seconds:11
uptime_in_days:0
hz:10
lru_clock:6677102
executable:/usr/bin/redis-server
config_file:/etc/redis/redis.conf

Процесс переустановки Redis

  1. Удалить существующую установку Redis
    Запустите следующую команду, чтобы полностью удалить Redis вместе с его зависимостями:
   sudo apt-get purge --auto-remove redis-server redis
  1. Завершить все процессы Redis
    Используйте команду ниже, чтобы перечислить и завершить все процессы Redis:
   ps aux | grep redis
  1. Настроить адрес привязки
    Отредактируйте конфигурационный файл Redis, чтобы указать IP-адреса, на которых вы хотите, чтобы Redis слушал:
   sudo nano /etc/redis/redis.conf

Добавьте следующие строки, заменив 127.0.0.1 и 0.0.0.0 на ваши реальные IP-адреса:

   bind 127.0.0.1
   bind 0.0.0.0
  1. Установить инструменты Redis
    Чтобы установить дополнительные инструменты Redis, выполните:
   sudo apt install redis-tools
  1. Перезапустить службу Redis
    Наконец, перезапустите службу Redis, чтобы применить изменения:
   sudo systemctl restart redis

Это должно помочь прояснить шаги, связанные с процедурой переустановки Redis!

Ответ или решение

Для отключения режима защиты (protected-mode) в Redis, важно понимать контекст, условия и версии, поскольку в вашем случае вы столкнулись с ошибкой и неопределенностью. Ниже приведены основные шаги и рекомендации для успешного отключения этого режима, что является важным аспектом настройки Redis, особенно в продуктивной среде.

1. Понимание режима защиты Redis

Режим защиты в Redis предназначен для предотвращения несанкционированного доступа к серверу при отсутствии должной конфигурации. Когда этот режим включен, сервер принимает подключения только с локального интерфейса (127.0.0.1), что делает его защищенным от удаленных атак. Однако, если у вас настроенные брандмауэры и вы уверены в безопасности вашей сети, вы можете захотеть отключить этот режим.

2. Проверка версии Redis

Сначала убедитесь, что вы подключаетесь к правильной версии Redis. Ваша ошибка при выполнении команды CONFIG SET protected-mode no указывает на то, что используемая версия не поддерживает данную команду или у вас отсутствует необходимая версия, где эти параметры настроены. Рекомендуется использовать команду:

INFO server

Эта команда позволит вам увидеть текущую запущенную версию Redis. Убедитесь, что это версия 3.2.0 или новее, так как в более ранних версиях могут отсутствовать некоторые параметры конфигурации.

3. Отключение protected-mode

Способ 1: Изменение конфигурационного файла

Если вы хотите отключить режим защиты, проще всего изменить файл конфигурации Redis (redis.conf). Для этого следуйте следующим шагам:

  1. Откройте конфигурационный файл Redis с помощью текстового редактора:

    sudo nano /etc/redis/redis.conf
  2. Найдите строку с protected-mode и измените значение на no, если оно есть. Если его нет, просто добавьте:

    protected-mode no
  3. Также убедитесь, что параметр bind настроен. Он может выглядеть так:

    bind 127.0.0.1 0.0.0.0
  4. Сохраните изменения и закройте редактор.

  5. Перезагрузите Redis для применения изменений:

    sudo systemctl restart redis

Способ 2: Использование команды CONFIG

Если вы подключены к Redis через командную строку и уверены, что находитесь на сервере, можно отправить команду напрямую:

redis-cli

Затем выполните:

CONFIG SET protected-mode no

Однако, если вы получаете сообщение об ошибке “ERR Unsupported CONFIG parameter: protected-mode”, убедитесь, что версия Redis действительно поддерживает эту настройку.

4. Дополнительные решения

Если вы по-прежнему не можете изменить параметры конфигурации через CONFIG SET, возможно, у вас запущена другая версия Redis. Проверьте запущенные процессы:

ps -ef | grep redis

Убедитесь, что используемая версия соответствует установленной, и, если необходимо, завершите активные процессы перед перезапуском с новой конфигурацией.

5. Заключение

Отключение режима защиты Redis — важный шаг, который следует осуществлять с осторожностью. Если Redis доступен извне без надлежащей настройки безопасности, это может привести к уязвимостям. Рекомендуется также рассмотреть возможность настройки аутентификации или других мер безопасности, чтобы защитить вашу установку Redis. Ведение журналов и мониторинг подключений также помогут вам поддерживать безопасность вашей инфраструктуры.

Следуя этим шагам, вы сможете успешно отключить режим защиты в Redis и вести его безопасную эксплуатацию в вашей сети.

Оцените материал
Добавить комментарий

Капча загружается...