Redis 보안 설정

RedisBeginner
지금 연습하기

소개

이 랩에서는 Redis 서버의 보안을 강화하는 방법을 배우게 됩니다. 무단 액세스를 방지하기 위해 비밀번호를 설정하고 잠재적인 오용을 제한하기 위해 특정 명령을 비활성화하는 방법을 다룹니다. 이 랩이 끝나면 더 안전한 Redis 인스턴스를 갖게 될 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 100%입니다.학습자들로부터 92%의 긍정적인 리뷰율을 받았습니다.

CONFIG SET requirepass 를 사용하여 비밀번호 설정

기본적으로 Redis 는 비밀번호를 요구하지 않아 취약합니다. 비밀번호를 설정하는 것은 Redis 서버 보안을 위한 첫 번째이자 가장 중요한 단계입니다. 이를 위해 CONFIG SET requirepass 명령을 사용합니다.

CONFIG SET 명령은 Redis 구성 설정을 동적으로 변경할 수 있게 해줍니다. requirepass 설정은 서버에 연결하기 위해 클라이언트가 제공해야 하는 비밀번호를 지정합니다.

시작해 봅시다:

  1. redis-cli를 사용하여 Redis 서버에 연결:

    LabEx VM 에서 터미널을 엽니다. 기본 디렉토리는 ~/project입니다. 다음 명령을 실행합니다:

    redis-cli

    그러면 기본 호스트 (127.0.0.1) 및 포트 (6379) 에서 실행 중인 Redis 서버에 연결됩니다. 127.0.0.1:6379> 프롬프트가 표시되어야 합니다.

    127.0.0.1:6379>
  2. CONFIG SET requirepass 명령을 사용하여 비밀번호 설정:

    비밀번호를 mysecretpassword로 설정하겠습니다. 프로덕션 환경에서는 강력하고 고유한 비밀번호를 선택하십시오.

    CONFIG SET requirepass mysecretpassword

    다음과 같은 출력이 표시되어야 합니다:

    OK

    이는 비밀번호가 설정되었음을 확인합니다.

    이제 exit를 입력하고 Enter 키를 눌러 redis-cli를 종료합니다. 이렇게 하면 명령이 기록됩니다.

    exit
  3. 인증 없이 명령을 실행해 보기:

    새 터미널을 열고 redis-cli를 사용하여 Redis 서버에 연결합니다:

    redis-cli

    PING과 같은 간단한 명령을 실행해 보세요:

    PING

    다음과 같은 오류 메시지가 표시되어야 합니다:

    (error) NOAUTH Authentication required.

    이는 이제 인증이 필요함을 나타냅니다.

  4. redis-cli 종료:

    명령이 기록되도록 하려면 exit를 입력하거나 Ctrl+D를 눌러 redis-cli를 종료합니다.

    exit

    이는 검증 단계가 올바르게 작동하도록 하는 데 중요합니다.

AUTH 명령으로 인증하기

이제 비밀번호를 설정했으므로 AUTH 명령을 사용하여 Redis 서버에 인증하는 방법을 배워보겠습니다. 이 명령은 이전 단계에서 설정한 비밀번호를 요구합니다.

  1. redis-cli를 사용하여 Redis 서버에 연결:

    LabEx VM 에서 터미널을 엽니다. 기본 디렉토리는 ~/project입니다. 다음 명령을 실행합니다:

    redis-cli

    127.0.0.1:6379> 프롬프트가 표시되어야 합니다.

  2. AUTH 명령으로 인증:

    이전에 설정한 비밀번호 뒤에 AUTH 명령을 사용합니다:

    AUTH mysecretpassword

    인증이 성공하면 다음과 같이 표시됩니다:

    OK
  3. 인증 후 명령 실행:

    이제 인증되었으므로 PING 명령을 다시 시도해 보세요:

    PING

    예상되는 응답을 받아야 합니다:

    PONG
  4. redis-cli 종료:

    exit를 입력하거나 Ctrl+D를 눌러 redis-cli를 종료합니다.

    exit

위험한 명령 제한하기

Redis 는 많은 명령을 제공하지만, 특정 환경에서는 위험할 수 있는 명령도 있습니다. CONFIG SET을 사용하여 명령을 동적으로 비활성화할 수는 없지만 (rename-command는 서버 재시작이 필요함), FLUSHALL과 같은 위험한 명령이 어떻게 작동하는지, 그리고 프로덕션 환경에서 왜 제한되어야 하는지를 보여줌으로써 명령 보안의 개념을 시연할 수 있습니다.

  1. redis-cli를 사용하여 Redis 서버에 연결:

    LabEx VM 에서 터미널을 엽니다. 기본 디렉토리는 ~/project입니다. 다음 명령을 실행합니다:

    redis-cli

    127.0.0.1:6379> 프롬프트가 표시되어야 합니다.

  2. AUTH 명령으로 인증:

    비밀번호 뒤에 AUTH 명령을 사용하여 인증합니다:

    AUTH mysecretpassword

    인증이 성공하면 OK 출력이 표시되어야 합니다.

  3. FLUSHALL의 위험성을 시연하기 위한 테스트 데이터 생성:

    SET testkey "important data"
    SET anotherkey "more important data"

    두 명령 모두 OK를 반환해야 합니다.

  4. 데이터 존재 여부 확인:

    KEYS *

    두 키가 모두 나열되어야 합니다:

    1) "testkey"
    2) "anotherkey"
  5. 위험한 FLUSHALL 명령 시연:

    경고: 이 명령은 모든 데이터베이스의 모든 데이터를 삭제합니다!

    FLUSHALL

    다음과 같이 표시되어야 합니다:

    OK

    이 명령은 모든 데이터베이스에서 모든 데이터를 성공적으로 삭제합니다.

  6. 모든 데이터가 삭제되었는지 확인:

    KEYS *

    다음과 같이 표시되어야 합니다:

    (empty array)

    이것이 FLUSHALL이 위험하다고 간주되는 이유이며, redis.conf 파일에 rename-command FLUSHALL ""을 추가하여 프로덕션에서 비활성화해야 하는 이유를 보여줍니다.

  7. redis-cli 종료:

    exit를 입력하거나 Ctrl+D를 눌러 redis-cli를 종료합니다.

    exit

요약

이 실습에서는 Redis 보안을 강화하는 방법을 배웠습니다. CONFIG SET requirepass를 사용하여 비밀번호를 설정하여 무단 액세스를 방지했습니다. 또한 AUTH 명령을 사용하여 인증하는 방법을 배웠고, 모든 데이터를 삭제할 수 있는 FLUSHALL과 같은 명령의 위험성을 시연했습니다. 프로덕션 환경에서는 redis.conf 파일에 rename-command FLUSHALL ""을 추가하고 Redis 서버를 재시작하여 이러한 위험한 명령을 비활성화해야 합니다. 이러한 단계는 Redis 서버를 보호하는 데 필수적입니다.