Поиск по сайту:

Установите и защитите сервер Redis в Debian 10


Это руководство существует для этих версий ОС

  • Debian 11 (Bullseye)
  • Debian 10 (Buster)

На этой странице

  1. Требования
  2. Начало работы
  3. Установить Redis
  4. Настроить Redis как кэш
  5. Настройка аутентификации Redis
  6. Переименовать определенные команды
  7. Заключение

Redis, также известный как «Удаленный сервер словаря», представляет собой базу данных с открытым исходным кодом и в памяти, которую можно использовать в качестве базы данных, кэша и брокера сообщений. Redis поддерживает различные структуры данных, такие как строки, хэши, списки, наборы и многое другое. Redis написан на языке программирования C и работает в большинстве систем POSIX, таких как Linux, Free BSD и OS X. Redis может выполнять тысячи команд в секунду. Redis поставляется с богатым набором функций, включая репликацию, автоматический переход на другой ресурс, сценарии Lua, вытеснение ключей LRU, транзакции и многое другое.

В этом руководстве мы узнаем, как установить и защитить Redis на сервере Debian 10.

Требования

  • Сервер под управлением Debian 10.
  • Для вашего сервера установлен пароль root.

Начиная

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

apt-get update -y
apt-get upgrade -y

После обновления сервера перезапустите его, чтобы изменения вступили в силу.

Установить Redis

По умолчанию Redis доступен в репозитории Debian 10. Вы можете установить его, просто выполнив следующую команду:

apt-get install redis-server -y

После установки Redis запустите службу Redis и включите ее запуск после перезагрузки системы с помощью следующей команды:

systemctl start redis-server
systemctl enable redis-server

Вы также можете проверить состояние сервера Redis с помощью следующей команды:

systemctl status redis-server

Вы должны получить следующий результат:

? redis-server.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-09-06 05:57:45 EDT; 4s ago
     Docs: http://redis.io/documentation,
           man:redis-server(1)
  Process: 2284 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
 Main PID: 2285 (redis-server)
    Tasks: 4 (limit: 1138)
   Memory: 6.8M
   CGroup: /system.slice/redis-server.service
           ??2285 /usr/bin/redis-server 127.0.0.1:6379

Sep 06 05:57:45 debian systemd[1]: Starting Advanced key-value store...
Sep 06 05:57:45 debian systemd[1]: redis-server.service: Can't open PID file /run/redis/redis-server.pid (yet?) after start: No such file or di
Sep 06 05:57:45 debian systemd[1]: Started Advanced key-value store.

По умолчанию Redis прослушивает локальный хост на порту 6379. Вы можете проверить это с помощью следующей команды:

ps -ef | grep redis

Вы должны увидеть следующий вывод:

redis     2285     1  0 05:57 ?        00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root      2294   706  0 05:59 pts/0    00:00:00 grep redis

Затем проверьте подключение Redis с помощью следующей команды:

redis-cli

Вы должны увидеть следующий вывод:

127.0.0.1:6379> 

Теперь проверьте подключение Redis с помощью команды ping:

127.0.0.1:6379> ping

Если все в порядке, вы должны увидеть следующий вывод:

PONG

Как только вы закончите. Вы можете перейти к следующему шагу.

Настроить Redis как кеш

Вы можете настроить Redis как кэш, отредактировав файл /etc/redis/redis.conf:

nano /etc/redis/redis.conf

Добавьте в конец файла следующие строки:

maxmemory 64mb
maxmemory-policy allkeys-lru

Когда достигнут максимальный объем памяти 64 Мб. Redis удалит любой ключ в соответствии с алгоритмом LRU. Сохраните и закройте файл, когда закончите. Затем перезапустите службу Redis с помощью следующей команды:

systemctl restart redis-server

Как только вы закончите. Вы можете перейти к следующему шагу.

Настройка аутентификации Redis

По умолчанию вы можете запустить любую команду в оболочке Redis. Поэтому рекомендуется настроить аутентификацию Redis, чтобы клиенты запрашивали пароль перед выполнением любых команд. Вы можете настроить аутентификацию по паролю непосредственно в конфигурационном файле Rediss. Для этого откройте файл /etc/redis/redis.conf в предпочитаемом вами редакторе:

nano /etc/redis/redis.conf

В разделе БЕЗОПАСНОСТЬ найдите следующую строку:

# requirepass foobared

Раскомментируйте и замените его желаемым паролем, как показано ниже:

requirepass AlsW34%#df

Сохраните и закройте файл, когда закончите. Затем перезапустите службу Redis, чтобы применить изменения конфигурации:

systemctl restart redis-server

Теперь получите доступ к оболочке Redis с помощью следующей команды:

redis-cli

Теперь выполните следующую команду без аутентификации:

127.0.0.1:6379> INFO server

Это не будет работать, потому что вы не аутентифицируетесь. Вы должны получить следующую ошибку:

NOAUTH Authentication required.

Затем выполните следующую команду для аутентификации с помощью пароля, указанного в файле конфигурации Redis:

127.0.0.1:6379> AUTH AlsW34%#df

Вы должны получить следующий результат:

OK

Теперь снова запустите предыдущую команду:

127.0.0.1:6379> INFO server

Это будет успешно выполнено, и вы должны увидеть следующий вывод:

# Server
redis_version:5.0.3
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:afa0decbb6de285f
redis_mode:standalone
os:Linux 4.19.0-5-amd64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:8.3.0
process_id:2308
run_id:2cf0470a9492deddf98bcc72fa9ec94e941edf6c
tcp_port:6379
uptime_in_seconds:50
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:7483371
executable:/usr/bin/redis-server
config_file:/etc/redis/redis.conf

Как только вы закончите. Вы можете перейти к следующему шагу.

Переименовать определенные команды

Из соображений безопасности рекомендуется переименовывать некоторые команды, которые считаются опасными.

Здесь мы переименуем команду \config\. Команда config используется для получения пароля Redis. Давайте посмотрим на примере:

Сначала подключитесь и аутентифицируйте оболочку Redis с помощью следующей команды:

redis-cli
127.0.0.1:6379> AUTH AlsW34%#df

Затем получите пароль Redis с помощью следующей команды:

127.0.0.1:6379> config get requirepass

Вы должны получить следующий результат:

1) "requirepass"
2) "AlsW34%#df"
127.0.0.1:6379> 

Вы можете переименовать команду config, отредактировав файл /etc/redis/redis.conf:

nano /etc/redis/redis.conf

Найдите следующую строку:

# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

Раскомментируйте и замените на нужную строку:

rename-command CONFIG H2sW_Config        

Сохраните и закройте файл. Затем перезапустите службу Redis с помощью следующей команды:

systemctl restart redis-server

Затем подключитесь и аутентифицируйте оболочку Redis с помощью следующей команды:

redis-cli
127.0.0.1:6379> AUTH AlsW34%#df

Затем получите пароль Redis с помощью команды config:

127.0.0.1:6379> config get requirepass

Мы переименовали эту команду, поэтому вы должны получить следующую ошибку:

(error) ERR unknown command `config`, with args beginning with: `get`, `requirepass`, 

Теперь запустите переименованную команду, как показано ниже:

127.0.0.1:6379> H2sW_Config get requirepass

Вы должны получить следующий результат:

1) "requirepass"
2) "AlsW34%#df"

Наконец, выйдите из оболочки Redis с помощью следующей команды:

127.0.0.1:6379> exit

Заключение

Поздравляем! вы успешно установили и защитили сервер Redis в Debian 10. Надеюсь, теперь у вас достаточно знаний, чтобы защитить свой сервер Redis с помощью аутентификации по паролю. Не стесняйтесь спрашивать меня, есть ли у вас какие-либо вопросы.