원격 연결을 위해 Redis 포트 열기


118

서버에서 Redis를 핑퐁 할 수 있습니다.

# redis-cli ping
PONG

그러나 원격으로 문제가 있습니다.

$ src/redis-cli -h REMOTE.IP ping
Could not connect to Redis at REMOTE.IP:6379: Connection refused

구성에서 표준 포트를 얻었습니다.

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

그렇다면 원격 Ubuntu 시스템에서 포트 6379를 열어야할까요? 어떻게하나요?


redis가 원격 시스템에서 수신하지 않습니까?
Sergio Tulentsev 2013 년

어쩌면, 어떻게 그것을 확인
맥심 Yefremov에게

ufw를 비활성화 했습니까?

답변:


214

redis 서버에서 원격 액세스를 허용하도록 bind 옵션을 설정 했습니까?

이전 (파일 /etc/redis/redis.conf)

bind 127.0.0.1

bind 0.0.0.0

sudo service redis-server restart서버를 다시 시작하려면 실행 하십시오. 이것이 문제가 아니라면 액세스를 차단할 수있는 방화벽을 확인하는 것이 좋습니다.

중요 : 방화벽 (iptables, ufw ..)을 사용하여 사용중인 포트에 연결하는 사용자를 제어하지 않으면 누구나이 Redis 인스턴스에 연결할 수 있습니다. Redis를AUTH 사용하지 않으면 누구나 데이터에 액세스 / 변경 / 삭제할 수 있습니다. 안전한!


2
구성 파일에서 string bind 0.0.0.0뒤에 string을 추가했습니다 bind 127.0.0.1. redis를 다시 시작했습니다. 이제 원격으로 연결할 수 있습니다.
Maxim Yefremov 2013 년

우리가 bind 0.0.0.0단독으로 사용하는 경우 차이가 있습니까bind 127.0.0.1 0.0.0.0
Nyxynyx

1
@Nyxynyx 0.0.0.0은 모든 어댑터에 바인딩되므로 불필요합니다. 그래도 차이를 만들어서는 안됩니다.
MildlySerious 2014-06-26

1
모든 IP 호출에 redis를 여는 것이 안전합니까? 특정 IP에서만 redis 액세스를 제한하려면 어떻게해야합니까?
brsbilgic 2014

1
@MildlySerious 감사합니다. 방화벽, 네트워크 또는 기타 문제를 파악하는 데 거의 2 주가 걸렸습니다. 하지만이 변화는 챔피언처럼 작동했습니다.
kinnu

23

나를 위해 다음을 수행해야했습니다.

1- 주석 처리 bind 127.0.0.1

2 변경 protected-modeno

3- iptables( https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04 )로 내 서버 보호


1
bind 0.0.0.0을 사용해야했습니다. "bind 127.0.0.1"이 작동하지 않았습니다. "보호 모드"를 "아니오"로 설정할 필요가 없었습니다. 경고 : "바인딩"전에 빈 공간을 남겨 두지 마십시오. 그렇지 않으면 서버가 시작되지 않습니다. 참고 : 저는 Redis의 Windows 포트를 사용하고 있습니다
Josh

7

Redis 서버를 추가로 보호하지 않고이 작업을 수행하는 것은 공격에 노출 될 수 있으므로 좋은 생각이 아닙니다. 또한 AUTH를 구현하거나 보안을 유지해야합니다. 자세한 내용은 http://redis.io/topics/security 를 참조하십시오.


3

1- 주석 바인드 127.0.0.1

2-set requirepass yourpassword

그런 다음 방화벽이 포트를 차단했는지 확인하십시오.

iptables -L -n

서비스 iptables 중지


3
  1. $ REDIS_HOME / redis.conf를 열고 주석 처리를 제거 requirepass -YOUR-PASSWORD-HERE-하고 지정된 줄에 암호를 적어 둡니다 .

  2. redis-cli를 사용하여 redis에 로그인하고 auth -YOUR-PASSWORD-HERE-명령을 사용하여 데이터베이스에서 암호를 확인합니다 .

  3. $ REDIS_HOME / redis.conf의 문자열을 protected-mode no.

  4. 모든 바인드 포트 값을 검색하고 모두 주석 처리하십시오. bind 0.0.0.0$ REDIS_HOME / redis.conf 파일에 추가 하기 만하면됩니다.

  5. 방화벽을 비활성화하거나 redis 포트를 엽니 다.

  6. 를 사용하여 redis를 시작합니다 ./redis-server $REDIS_HOME/redis.conf.

  7. 를 통해 구성을 확인하십시오 ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-.

  8. 를 통해 구성을 확인하십시오 ./redis-cli -h -YOUR-IP- ping.

9
"방화벽 비활성화"라고 조언하지 마십시오.
Samantha Atkins

3
  1. 위치에서 파일 열기 /etc/redis.conf

  2. 주석 처리 bind 127.0.0.1

  3. Redis를 다시 시작합니다.

     sudo systemctl start redis.service
    
  4. 방화벽 비활성화 :

     systemctl disable firewalld
    
  5. 방화벽 중지 :

     systemctl stop firewalld
    

그런 다음 시도하십시오.

redis-cli -h 192.168.0.2(ip) -a redis(username)

1

AWS ec2 인스턴스를 사용하는 경우 필수 사항이라고 생각하는 추가 단계가 하나 더 있습니다. 3 단계를 놓 쳤고 보안 그룹에 인바운드 규칙을 추가하는 데 하루 종일 걸렸습니다.

1 단계 (이전) : redis.conf에서 bind 127.0.0.1을 0.0.0.0으로 바인드하십시오.

2 단계 (이전) : redis.conf에서 보호 모드 예를 보호 모드 아니요로 변경합니다.

Amazon Ec2 인스턴스에 중요 :

3 단계 : 현재 ec2 머신에서 보안 그룹으로 이동합니다. 6379 포트가있는 사용자 지정 TCP에 대한 인바운드 규칙을 추가하고 "어디에서나 사용"옵션을 선택합니다.


1

제 경우에는 redis-stable을 사용하고 있습니다.

Go to redis-stable path 
 cd /home/ubuntu/software/redis-stable

redis.conf를 엽니 다.

vim redis.conf

변화 bind 127.0.0.1에를bind 0.0.0.0

변화 protected-mode yes에를 protected-mode no

redis-server를 다시 시작합니다.

/etc/init.d/redis-server stop
 redis-server redis.conf

0

바인딩 및 보호 모드는 모두 필수 단계입니다. 그러나 ufw 가 활성화 된 경우 ufw 에서 redis 포트를 허용해야합니다.

  1. redis-port를 허용 하면 ufw 상태를 확인하십시오.ufw statusStatus: activeufw allow 6379
  2. vi /etc/redis/redis.conf
  3. 변화 bind 127.0.0.1에를bind 0.0.0.0
  4. 변화 protected-mode yes에를protected-mode no
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.