Redis 무작정 설치하기 및 보안 설정 방법

 Redis는 데이터베이스, 캐시 및 메시지 브로커로 사용되는 오픈 소스 인메모리 데이터 구조 저장소입니다. 내구성이 옵션으로 제공되는 분산 인메모리 키-값 데이터베이스입니다. 쿼리를 사용하여 문자열, 해시, 목록, 세트, ​​비트 맵, 정렬 된 세트, 하이퍼 로그, 스트림 및 지리 공간 인덱스와 같은 주요 데이터 구조를 지원하는 오픈소스입니다.

마지막으로 실습에 앞서서 selinux는 disable 시켜주세요. 해당 환경은 selinux를 활성화 하지 않은상태에서 진행 예정입니다. 이점 참고 해주시길 바랍니다.

 

전제조건

  • Remi 리포지토리 설치 및 활성화
  • Redis 서버 설치
  • Redis 서버 구성
  • Redis 서버 보안
  • 테스팅

1단계 - Remi 리포지토리 설치 및 활성화

Remi 저장소를 추가하기 전에 EPEL 저장소 및 yum 유틸리티 패키지를 설치하여주세요.

  - sudo yum install epel-release yum-utils

[EPEL 저장소 및 yum 유틸리티 패키지 설치]

  - sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm 

해당 명령어를 이용하여 remi 레포지토리를 저장소를 설치합니다.

[remi 레포지토리 설치]

설치가 완료 되었으면 yum-config-manager 도구를 사용하여 아래와 같이 'remi'리포지토리를 활성화하십시오.

  - sudo yum-config-manager --enable remi

시스템에서 Remi 저장소가 추가 및 활성화되었습니다. 아래 yum 명령을 사용하여 확인하십시오.

  - yum repolist enabled

[remi 저장소 확인]

2단계 - Redis 설치

최신 Redis 패키지를 설치합니다. 아래의 yum 명령을 사용하여 사용 가능한 Redis 버전을 확인할 수 있습니다.

  - yum search redis
  - yum info redis

이제 Redis 6.0.0를 Remi 저장소에서 사용할 수 있습니다. 이제 yum 명령을 이용하여 redis를 설치하겠습니다.

  - sudo yum -y install redis

  - systemctl start redis && systemctl enable redis

[레디스 시작]

Redis 서비스가 기본 구성으로 작동하고 실행 중입니다. 서버에서 사용하는 서비스 상태 및 포트를 확인하십시오.

[status로 데몬확인]

  -netstat -plntu

[포트 명령어로 확인]

지금까지 설치가 잘 진행되었다면 레디스가 시스템에서 실행 중이며 기본 TCP 포트 '6379'로 로컬 호스트 IP 주소 '127.0.0.1'으로 실행되는 상황을 보실 수 있을겁니다. 이제 기본적인 설치는 완료되었습니다.

 

3단계 - Redis 구성

vim 편집기를 이용하여 redis.conf 를 구성합니다. redis.conf의 기본적인 위치는 /etc/redis.conf에 있습니다.

  - vim /etc/redis.conf

내부 IP 주소로 '바인드'주소를 변경하십시오. 클러스터로 실행중인 경우 개인 IP 주소로 변경할 수 있습니다. 프라이빗 내부 IP 주소에서 Redis 서버를 실행하는 것이 좋습니다.

69번째 줄의 bind 주소를 현재 사용하시는 주소로 바꾸어줍니다.

이제 Redis 서비스를 데몬으로 실행하므로 'daemonize'값을 'yes'로 변경하십시오. //206번 라인에 있습니다.

시스템화되었으므로 'supervised'라인 구성을 'systemd'로 변경해야합니다. //218번 라인에 있습니다.

저장하고 나옵니다. 이제 redis 서비스는 시스템에서 동작하게 설정이 완료되었습니다. 서비스를 다시 시작하십시오.

Redis의 기본 구성이 완료되었습니다. 이제 아래와 같이 redis-cli 명령을 사용하여 Redis 서버에 연결하십시오.

설치가 정상적으로 잘 되었으면 'PONG'응답과 명령 뒤에 쓴 메시지가 표시됩니다. 

 

4단계 - Redis 설치 보안

Redis 설치를 보호합니다. Redis 서버 보안에 대해 알아야 할 중요한 3가지 포인트가 있습니다.

 

  • redis 네트워크 보안

redis 서버의 네트워크 보안은 redis 구성 'redis.conf'의 '바인드'구성과 관련이 있습니다. Redis 설치에 내부 개인 네트워크를 사용하는 것이 좋으며 공개적으로 사용하지 마세요. 저같은 경우에는 위에 내부 IP로 설정을 한 부분이므로 똑같이 사용해 주시면 됩니다.

 

  • redis 비밀번호 인증

Redis의 비밀번호 인증은 Redis서버에 대한 액세스 제어를 제공합니다. Redis 서버 보안을 향상시키는 보안 계층이며 기본 설치로 활성화되어 있지 않습니다. Redis 서버에서 비밀번호 인증을 사용하려면 'redis.conf'파일에서 'requirepass'섹션의 주석을 해제하고 그 뒤에 비밀번호를 입력해야합니다. //773번 라인에 있습니다.

이제 Redis의 비밀번호 인증이 활성화되었습니다.

[redis 비밀번호 설정]

 

  • 위험한(?) 크리티컬한 redis 명령어 비활성화

Redis는 특정 Redis명령을 비활성화하는 기능을 제공합니다. 이 기능은 모든 데이터를 지우는 'FLUSHALL', Redis CLI를 통해 구성 매개 변수를 설정하기위한 'CONFIG'명령 등과 같은 위험한 명령의 이름을 바꾸거나 비활성화하는데 사용합니다. Redis 명령을 변경하거나 비활성화하려면 'rename-command'옵션을 사용할 수 있습니다. redis 구성 파일 'redis.conf'를 편집하고 아래에 몇 가지 구성을 추가하십시오. //790번 라인 아래에 붙여서 넣어주면 됩니다.

 

모든 것을 설정하였으면 systemctl 명령을 사용하여 redis 서비스를 다시 시작하십시오.

 

  - cat /etc/redis.conf | egrep "bind|requirepass|rename-command" 해당 커맨드로 설정이 정상적인지 확인하여 줍니다.

고려 사항으로는 Redis에 대한 '데이터 암호화'지원과 애플리케이션에 필요한 보안코딩이 필요할 수도 있습니다.(이 부분은 회사의 기호에 맞게 판단하시면 됩니다.)

 

5단계 - 테스트

 

  1. 호스트 및 인증 테스트

서버에 연결되면 ping 명령을 시도하십시오.

위에서 redis.conf 안에 비밀번호를 설정하였기에 auth 명령을 이용하여 비밀번호로 인증을 하여야합니다.

또한 위에서 언급하였던 특정 명령어 비활성화 되어있는걸 cli에서 치면 어떤 상황이 발생하는지 아래 화면을 통해 확인해 보시면 됩니다.

Redis 서버의 기본 설치가 완료되었으며 Redis 서버의 기본 보안이 적용되게 설정이 완료 되었습니다.

 

여기서 sentinal 구성 등이 있지만 저의 블로그에서는 여기까지 다루도록 하겠습니다.

 

참고문헌

https://redis.io/

https://redis.io/commands

https://redis.io/documentation

https://redis.io/download

http://try.redis.io/

댓글

이 블로그의 인기 게시물

AWS 용어

AML 체계란 무엇인가?

Cisco 명령어 정리