레디스: Redis

레디스 2 - Redis 외부 접속 허용 및 비밀번호 설정

https://www.youtube.com/watch?v=NaonbyB8WPE&list=PLJkjrxxiBSFDZ49aSFr_sQqdTfaVnWcNL&index=2

레디스 2 : Redis 외부 접속 허용 및 비밀번호 설정


이번 단계에서는 외부 환경(내 PC)에서 Redis 서버에 접속할 수 있도록 설정하고, 동시에 무방비 상태를 피하기 위한 최소한의 보안 설정을 적용한다.

Redis는 빠른 만큼, 설정을 잘못하면 인터넷에 그대로 노출되는 사고로 이어진다. 그래서 이 글은 “열기”보다 “왜 조심해야 하는지”를 함께 다룬다.

1. EC2 인스턴스에서 6379 포트 오픈

현재 상태 정리

  • EC2 내부에서 redis-cli 접근 가능
  • 로컬 PC(윈도우, 맥 등)에서는 접속 불가
  • 이유: Redis 기본 설정은 외부 접근 차단

Redis 서버 입장에서 보면:

  • EC2 내부 → 로컬 환경
  • 내 PC → 외부 환경

EC2 보안 그룹에서 포트 열기

Redis는 기본적으로 6379 포트를 사용한다.

설정 절차

  1. AWS 콘솔 → EC2
  2. 좌측 메뉴 → 보안 그룹
  3. Redis 서버가 속한 보안 그룹 선택
  4. 인바운드 규칙 → 편집
  5. 규칙 추가
  • 유형: 사용자 지정 TCP
  • 포트 범위: 6379
  • 소스: Anywhere-IPv4 (0.0.0.0/0)
    1. 저장

이제 네트워크 레벨에서는 외부 접근이 허용된 상태다.

⚠️ 이 상태로 Redis 설정까지 풀면 “전 세계 공개 Redis”가 된다. 반드시 다음 단계를 함께 진행해야 한다.


2. Redis 설정 파일에서 외부 IP 접근 허용 (bind)

Redis는 보안 그룹과 무관하게 자체적으로 IP 접근 제어를 한다.

설정 파일 접근

sudo vi /etc/redis/redis.conf

bind 설정 변경

  • 기본값 예시:
bind 127.0.0.1 ::1

이는 로컬 접근만 허용한다는 뜻이다.

외부 접근 허용

bind 0.0.0.0
  • 0.0.0.0 : 모든 IP에서 접근 허용

vim 조작:

  • i → 편집 모드
  • 수정
  • ESC:w 저장

실무에서는 0.0.0.0 대신 특정 IP 대역만 허용하는 것이 정상이다.


3. Redis 비밀번호 설정 (requirepass)

이제 가장 중요한 단계다. Redis는 기본적으로 인증이 없다. 외부 접근을 허용했다면 비밀번호 설정은 필수다.

설정 추가

같은 redis.conf 파일에서 아무 위치에 아래 추가:

requirepass your_password_here
  • 비밀번호는 단순 테스트용이라도 반드시 설정

저장 후 종료:

ESC → :wq

4. Redis 서버 재시작

설정 변경은 재시작 후 적용된다.

sudo systemctl restart redis-server

상태 확인:

sudo systemctl status redis-server

5. redis-cli 인증 및 외부 접속 테스트

로컬에서 인증 없이 접근 시

redis-cli
SET test key

결과:

(error) NOAUTH Authentication required.

인증 방법 1: auth 명령

AUTH your_password_here

이후 정상 명령 실행 가능:

GET test

인증 방법 2: 접속 시 비밀번호 포함

redis-cli -a your_password_here

외부 환경(내 PC)에서 접속 테스트

redis-cli -h EC2_퍼블릭_IP -p 6379 -a your_password_here

정상 접속되면 Redis 프롬프트가 나타난다.


정리: 지금 상태는 무엇을 의미할까?

현재 Redis 서버는 다음 조건을 만족한다.

  • EC2 외부에서 접속 가능
  • 인증 없이는 명령 실행 불가
  • 최소한의 보안 장치 적용 완료

하지만 이 상태는 실습용 최소 설정이다. 실무에서는 반드시 다음을 추가로 고려한다.

  • 특정 IP만 허용 (bind, 보안 그룹)
  • protected-mode yes
  • TLS 적용
  • Redis를 퍼블릭 서브넷에 직접 두지 않기
  • 가능하면 관리형 서비스(ElastiCache) 사용

Redis는 빠르지만, 빠르게 털리기도 한다. 그래서 “연결 성공”보다 “어디까지 열었는지 이해하는 것”이 더 중요하다.



© 2020. All rights reserved.

SIKSIK