티스토리 뷰

업무를 할 때 세션 관리 등을 위해 레디스를 많이 사용했습니다. 이미 설정이 되어 있는 상태로 사용을 했기 때문에 인증에 대해 고민하지 않았었는데 로컬에서 사용할 때 참고 링크와 같은 문제가 있다는 것을 알게 되었습니다.

 

따라서 로컬에서 도커를 통해 redis를 사용할 때도 username, password를 설정하는 방법을 살펴보려고 합니다.

 

문제의 원인

 

  • 레디스 포트가 기본인 6379로 열려있고
  • 인증없이 접근이 가능할 때

크롤러 봇에의한 해킹을 당할 수 있다고 합니다.

 

그러나 기본적으로 사용하는 포트를 바꾸는 것은 좋지 않은 해결책이라고 생각하여 인증을 추가하기로 하였습니다.

 

인증 추가 방법

 

  • requirepass option을 통한 패스워드 설정
  • Redis ACL system을 이용한 username, password 설정(Redis 6.0 버전 이상을 사용하는 경우에만 해당, 자세한 사항은 공식문서 Auth에서 확인)

저는 docker 로 redis를 띄웠기 때문에 환경 변수를 주어 requirepass 설정을 할 수 있습니다.

redis:
    image: 'bitnami/redis:latest'
    environment:
      - REDIS_PASSWORD=설정할패스워드
#      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - '6379:6379'

 

기존의 컨테이너를 내렸다가 새로운 옵션으로 다시 실행합니다. 이후 redis-cli 에 접속해서 명령을 내리려고 하면 인증 에러가 발생합니다. 이때 다음 명령을 통해 인증을 하면 다시 원하는 명령 실행이 가능합니다.

$ auth 설정한패스워드

 

이것으로도 필수 인증은 활성화 되었지만 ACL 설정을 통해 User를 만들고 패스워드를 지정해보도록 하겠습니다.

$ ACL SETUSER [유저네임] on >[패스워드] allkeys allcommands

 

위와 같이 지정하고 다시 > auth 유저네임 패스워드 입력을 하면 지정한 유저로 접속을 할 수 있게 됩니다.

 

참고

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함