웹사이트 검색

Debian 10에 Redis 서버 설치 및 보안


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 데비안 11(불스아이)
  • 데비안 10(버스터)

이 페이지에서

  1. 요구 사항\n
  2. 시작하기\n
  3. 레디스 설치
  4. Redis를 캐시로 구성
  5. Redis 인증 구성
  6. 특정 명령 이름 바꾸기
  7. 결론

"원격 사전 서버"라고도 하는 Redis는 데이터베이스, 캐시 및 메시지 브로커로 사용할 수 있는 오픈 소스 및 메모리 내 데이터베이스입니다. Redis는 문자열, 해시, 목록, 세트 등과 같은 다양한 데이터 구조를 지원합니다. Redis는 C 프로그래밍 언어로 작성되었으며 Linux, Free BSD 및 OS X와 같은 대부분의 POSIX 시스템에서 작동합니다. Redis는 초당 수천 개의 명령을 실행할 수 있습니다. Redis는 복제, 자동 장애 조치, Lua 스크립팅, LRU 키 제거, 트랜잭션 등을 포함한 다양한 기능 세트와 함께 제공됩니다.

이 튜토리얼에서는 Debian 10 서버에 Redis를 설치하고 보호하는 방법을 배웁니다.

요구 사항

  • Debian 10을 실행하는 서버.\n
  • 루트 비밀번호가 서버에 설정됩니다.\n

시작하기

시작하기 전에 시스템을 최신 버전으로 업데이트해야 합니다. 다음 명령을 실행하여 이를 수행할 수 있습니다.

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

서버가 업데이트되면 서버를 다시 시작하여 변경 사항을 적용하십시오.

레디스 설치

기본적으로 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의 localhost에서 수신 대기합니다. 다음 명령으로 확인할 수 있습니다.

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> 

이제 ping 명령으로 Redis 연결을 확인합니다.

127.0.0.1:6379> ping

모든 것이 정상이면 다음 출력이 표시됩니다.

PONG

일단 완료했습니다. 다음 단계로 진행할 수 있습니다.

Redis를 캐시로 구성

/etc/redis/redis.conf 파일을 편집하여 Redis를 캐시로 구성할 수 있습니다.

nano /etc/redis/redis.conf

파일 끝에 다음 줄을 추가합니다.

maxmemory 64mb
maxmemory-policy allkeys-lru

64mb의 최대 메모리에 도달했을 때. Redis는 LRU 알고리즘에 따라 모든 키를 제거합니다. 완료되면 파일을 저장하고 닫습니다. 그런 다음 다음 명령을 사용하여 Redis 서비스를 다시 시작합니다.

systemctl restart redis-server

일단 완료했습니다. 다음 단계로 진행할 수 있습니다.

Redis 인증 구성

기본적으로 Redis 셸에서 모든 명령을 실행할 수 있습니다. 따라서 클라이언트가 명령을 실행하기 전에 암호를 요구하도록 Redis 인증을 구성하는 것이 좋습니다. Rediss 구성 파일에서 직접 비밀번호 인증을 구성할 수 있습니다. 이렇게 하려면 원하는 편집기로 /etc/redis/redis.conf 파일을 엽니다.

nano /etc/redis/redis.conf

SECURITY 섹션에서 다음 행을 찾으십시오.

# 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> 

/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

다음으로 config 명령을 사용하여 Redis 비밀번호를 검색합니다.

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

결론

축하합니다! Debian 10에 Redis 서버를 성공적으로 설치하고 보호했습니다. 이제 비밀번호 인증으로 Redis 서버를 보호할 수 있는 충분한 지식을 갖추셨기를 바랍니다. 궁금한 점이 있으면 언제든지 문의해 주세요.