Установите и защитите сервер Redis в Debian 10
Это руководство существует для этих версий ОС
- Debian 11 (Bullseye)
- Debian 10 (Buster)
На этой странице
- Требования
- Начало работы
- Установить Redis
- Настроить Redis как кэш
- Настройка аутентификации Redis
- Переименовать определенные команды
- Заключение
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 с помощью аутентификации по паролю. Не стесняйтесь спрашивать меня, есть ли у вас какие-либо вопросы.