웹사이트 검색

Ubuntu 18.04 LTS에서 Redis를 설치하고 보호하는 방법


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

  • Ubuntu 20.04(Focal Fossa)
  • Ubuntu 18.04(Bionic Beaver)

이 페이지에서

  1. 1단계 - Redis 서버 설치
  2. 2단계 - Redis 서버 기본 구성
  3. 3단계 - Redis 설치 보안
    1. 1. 네트워크 보안
    2. 2. 비밀번호 인증\n
    3. 3. 위험한 Redis 명령 비활성화\n

    1. 1. 호스트 및 인증 테스트\n
    2. 2. 비활성화/이름 변경된 명령 테스트\n

    Redis는 데이터베이스, 캐시, 메시지 브로커로 사용되는 오픈소스 인메모리 키/값 저장소입니다. 선택적 내구성이 있는 분산 메모리 내 키-값 데이터베이스입니다. 문자열, 해시, 목록, 세트, 비트맵, 정렬된 세트, HyperlogLogs, 스트림, 반경 쿼리가 있는 지리정보 색인과 같은 일반적인 데이터 구조를 지원합니다.

    이 튜토리얼에서는 Ubuntu 18.04 LTS에서 Redis 서버를 설치하고 구성하는 방법을 보여줍니다. 먼저 Redis 서버를 설치한 다음 프로덕션 준비가 되도록 설치를 보호합니다.

    전제 조건

    이 가이드에서는 1GB RAM 및 2CPU 코어가 있는 Ubuntu 18.04에 Redis 서버를 설치합니다. 이것은 테스트용이며 프로덕션에는 이보다 더 많은 것이 필요합니다.

    우리가 할 일:

    • Redis 서버 설치
    • Redis 서버 기본 구성
    • Redis 서버 보안
    • 테스트

    1단계 - Redis 서버 설치

    먼저 Ubuntu 시스템의 모든 리포지토리를 업데이트하고 모든 패키지를 업그레이드합니다.

    아래의 적절한 명령을 실행하십시오.

    sudo apt update
    sudo apt upgrade

    그런 다음 아래의 apt 명령을 사용하여 공식 Ubuntu 리포지토리에서 Redis-server 패키지를 설치합니다.

    sudo apt install redis-server

    설치가 완료되면 Redis 서비스 시작 실패에 대한 오류 메시지가 표시됩니다. 메시지 오류를 무시하고 다음 단계에서 구성하겠습니다.

    2단계 - Redis 서버 기본 구성

    이 단계에서는 기본 Redis 서버를 설정하려고 했습니다. Linux 시스템에서 Redis 구성은 /etc/redis 디렉터리에 있습니다.

    /etc/redis 디렉토리로 이동하고 vim 편집기를 사용하여 redis.conf 구성 파일을 편집합니다.

    cd /etc/redis/
    vim redis.conf

    먼저 Redis 서비스를 실행할 바인딩 IP 주소를 결정해야 합니다. redis 서비스에 공용 IP 주소를 사용하는 것은 권장되지 않으며, 다중/클러스터 redis 서비스를 실행 중인 경우 내부 네트워크를 사용해야 합니다.

    이 예제의 경우 localhost IP 주소로 바인드 주소를 변경하십시오.

    bind 127.0.0.1

    그런 다음 redis 서비스가 서버에서 실행되는 방식을 설정해야 합니다. 우분투 서버와 systemd를 사용하고 있었기 때문에 감시 회선 구성을 systemd로 변경해야 합니다.

    supervised systemd

    저장하고 닫습니다.

    이제 redis 서비스를 다시 시작하고 부팅 시간에 추가하십시오.

    systemctl restart redis-server
    systemctl enable redis-server

    이제 오류가 없는지 확인한 다음 상태를 확인하십시오.

    systemctl status redis-server

    결과적으로 redis 서비스가 Ubuntu 18.04 서버에서 실행되고 있습니다.

    이제 아래 netstat 명령을 사용하여 기본 Redis 포트 6379를 확인하십시오.

    netstat -plntu

    그러면 기본 6379로 localhost IP 주소에서 redis 서비스가 실행되고 있는 결과를 얻을 수 있습니다.

    이제 아래와 같이 redis-cli 명령을 사용하여 Redis를 확인합니다.

    redis-cli ping
    redis-cli ping "Hello Redis"

    그러면 아래와 같은 결과를 얻게 됩니다.

    설치가 올바르면 Redis 서버에서 PONG을 사용하여 응답하거나 ping 옵션 후에 문자를 보냈다는 텍스트로 응답합니다.

    Redis 서버의 기본 설치 및 구성이 성공적으로 완료되었습니다.

    3단계 - Redis 설치 보안

    이 단계에서는 Redis 설치를 보호하려고 했습니다. Redis 서버 보안에 대해 알아야 할 3가지 사항이 있습니다.

    1. 네트워크 보안

    Redis 서버의 네트워크 보안은 Redis 구성 redis.conf의 바인드 구성과 관련됩니다. Redis 설치에 내부 사설 네트워크를 사용하고 공용 네트워크를 사용하지 않는 것이 좋습니다.

    /etc/redis 디렉토리로 이동하여 구성 파일 redis.conf를 편집합니다.

    cd /etc/redis/
    vim redis.conf

    바인딩 섹션에서 자신의 내부 네트워크 IP 주소로 IP 주소를 변경합니다.

    bind INTERNAL-IP-ADDRESS

    저장하고 닫습니다.

    이제 Redis 서비스는 INTERNAL-IP-ADDRESS에서 실행됩니다.

    2. 비밀번호 인증

    Redis에 대한 암호 인증은 Redis 서버에 대한 액세스 제어를 제공합니다. 이것은 Redis 서버 보안을 강화하는 작은 보안 계층이며 아직 기본 설치로 활성화되어 있지 않습니다.

    Rediser 서버에 대한 암호 인증을 활성화하려면 redis.conf 파일에서 requirepass 섹션의 주석을 제거하고 그 뒤에 강력한 암호를 입력해야 합니다.

    requirepass #$

    강력한 비밀번호로 [email #$를 변경하세요. 이제 Redis에 대한 암호 인증이 활성화되었습니다.

    3. 위험한 Redis 명령 비활성화

    Redis는 일부 특정 Redis 명령을 비활성화하는 기능을 제공합니다. 이 기능은 모든 데이터를 지우는 FLUSHALL, Redis CLI를 통해 구성 매개변수를 설정하는 CONFIG 명령 등과 같은 일부 위험한 명령의 이름을 바꾸거나 비활성화하는 데 사용할 수 있습니다.

    Redis 명령을 변경하거나 비활성화하려면 rename-command 옵션을 사용할 수 있습니다. Redis 구성 파일 redis.conf를 편집하고 아래에 몇 가지 구성을 추가합니다.

    # rename-command COMMAND "CUSTOM"
    rename-command FLUSHALL "DELITALL"
    rename-command CONFIG "MYSERVERCONF"

    저장하고 닫습니다.

    모두 완료되면 아래의 systemctl 명령을 사용하여 Redis 서비스를 다시 시작하십시오.

    systemctl restart redis-server

    Redis 설치 보안을 위한 기본 Redis 보안이 호스트에 적용되었습니다.

    다른 고려 사항으로 Redis에 대한 데이터 암호화 지원과 애플리케이션 측에 필요한 보안 코딩이 필요할 수도 있습니다.

    4단계 - 테스트

    이 단계에서는 redis-cli 명령줄을 사용하여 Redis 서버 배포를 테스트하려고 했습니다.

    1. 호스트 및 인증 테스트

    redis 서버 호스트 이름/IP 주소 및 포트를 지정하여 redis-cli 명령을 사용하여 Redis 서버에 연결합니다.

    redis-cli -h 10.5.5.25 -p 6379

    자신의 IP 주소로 10.5.5.25를 변경하십시오.

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

    ping
    ping "Hello Redis"

    이제 아래와 같은 결과를 얻을 수 있습니다.

    Redis CLI 셸에서 명령을 호출하기 전에 인증해야 하므로 ann 오류가 발생합니다.

    다음 명령을 실행하여 Redis 서버에 대해 인증합니다.

    AUTH #$

    인증되면 ping 명령을 시도할 수 있으며 Redis 서버에서 응답을 받을 수 있습니다.

    ping
    ping "Hello Redis"

    아래는 Redis 서버에 인증된 후의 결과입니다.

    2. 비활성화/이름 변경된 명령 테스트

    셸에서 이름을 변경한 모든 명령을 실행하면 명령 오류가 발생합니다.

    FLUSHALL
    CONFIG

    다음은 해당 명령의 오류 결과입니다.

    그런 다음 각각에 대해 CUSTOM 명령을 실행합니다.

    아래와 같이 redis-cli 명령어를 통해 새로운 Key를 생성합니다.

    SET Name "Hakase Labs"
    SET Blog "Howtoforge.com"

    Keys *

    이제 이름이 바뀐 FLUSHALL 명령 DELITALL을 사용하여 모든 키와 데이터를 삭제합니다.

    DELITALL

    CONFIG 명령의 경우 Redis 서버 구성의 새 값을 검색하거나 설정하려고 시도할 수 있습니다. CONFIG 명령은 MYSERVERCONF로 이름이 변경되었습니다.

    MYSERVERCONF get bind
    MYSERVERCONF get requirepass

    아래는 새로 이름이 바뀐 사용자 정의 명령의 결과입니다.

    Ubuntu 18.04에 Redis Server의 기본 설치가 완료되었으며 Redis Server의 기본 보안이 적용되었습니다.

    참조

    • https://redis.io/documentation