bind
Redis parameter BIND
Redis Server 教育 Redis Server Course |
Redis 定期点検/技術支援 Redis Technical Support |
Redis エンタープライズサーバ Redis Enterprise Server |
---|
Redis BIND
바인드(bind) 파라미터는 레디스 버전 1.0부터 있었으나,
주석(comment) 처리되어 있어 서버에 있는 모든 IP에서 접속을 허용했다.
3.2.0부터 보호모드(protected-mode) 파라미터 등장과 함께 바인드(bind) 파라미터의 주석이 사라졌고
디폴트로 IP 127.0.0.1이 적용되었다.
즉, 서버 내부에서만 접속이 허용되고 외부에서 접속하려면 redis.conf 파일에
외부로부터 접속할 수 있는 IP를 bind에 등록하도록 했다.
클라이언트 IP를 등록하는 것이 아니고, 레디스 서버가 설치된 서버에 여러 개의 IP 중 레디스 서버가
사용할(listen/accept)할 것을 등록한다.
즉, ifconfig로 나오는 IP 중에서 bind에 등록하는 것이다.
아마도 살바토르 개인적으로는 이런 조치를 취하고 싶지 않았겠지만,
보안 사고들이 많이 발생하고 보안 강화 요구가 많아지면서 이런 조치들을 취하고 있는 것이다.
이것은 보안의 한 요소이다.
bind 파라미터는 서버에 있는 사용 가능한 네트워크 인터페이스(network interface) IP를
redis.conf bind 파라미터에 등록해서 해당 IP로 접속하는 클라이언트만
받아들이는 기능이다.
이 문서는 버전 3.2.2를 기준으로 만들었다.
TCP/IP 통신
TCP/IP 통신에서 서버 프로그램은 자기가 청취(listen) 하고자 하는 IP와 port를 설정하고
그 IP와 port로 오는 클라이언트의 요청을 받아들인다.
여기서 IP는 서버에서 사용 가능한(network interfaces available
on the Server) IP로 ifconfig 리눅스 명령으로 볼 수 있다.
포트는 서버 포트(예, 6379)이다.
서버 측 TCP/IP 통신 순서는 socket() -> bind(IP, Port) -> listen(IP, Port)이다.
서버와 클라이언트의 통신 함수 사용 순서는 아래 그림과 같다.
레디스 서버 TCP/IP 통신 함수
레디스 서버가 시작할 때 initServer() 함수에서 anet.c 와 networking.c에 있는 함수들을 호출해서
socket(), bind(), listen(), accept()를 차례대로 수행한다.
참고로 redis-cli는 hiredis 라이브러리를 사용해서 레디스 서버에 접속한다.
BIND 설정
BIND 127.0.0.1
이것은 디폴트이고 127.0.0.1로 접속하는 클라이언트만 접속을 허용한다.
즉, 서버 내부에서만 접속을 허용하는 것이다.
내부 테스트 용
주석(comment)처리 또는 BIND 0.0.0.0
이것은 서버에 있는 사용 가능한 모든 IP로 접속을 허용한다.
낮은 단계의 보안
BIND 196.168.56.102 127.0.0.1
가능한 IP를 지정해서 사용한다.
제목에 IP는 예를 들은 것이다.
최대 16개까지 지정할 수 있다.
운영 단계의 보안
AWS(Amazon Web Services)
BIND 0.0.0.0을 사용하거나 ifconfig에서 조회되는 private-ip를 설정합니다.
BIND private-ip 127.0.0.1
정리
위 예에서처럼 가능한 IP를 지정해서 사용하세요.
보호모드(protected-mode)와의 관계는
보호모드(protected-mode) 설명을 참고하세요.
센티널의 sentinel.conf에는 bind 파라미터가 들어있지 않다.
추가로 입력해서 사용한다.
<< PROTECTED-MODE | BIND | BGREWRITEAOF >> |
---|
조회수 :