Debian 10에 Redis 서버 설치 및 보안
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- 데비안 11(불스아이)
- 데비안 10(버스터)
이 페이지에서
- 요구 사항\n
- 시작하기\n
- 레디스 설치
- Redis를 캐시로 구성
- Redis 인증 구성
- 특정 명령 이름 바꾸기
- 결론
"원격 사전 서버"라고도 하는 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 서버를 보호할 수 있는 충분한 지식을 갖추셨기를 바랍니다. 궁금한 점이 있으면 언제든지 문의해 주세요.