दूरस्थ कनेक्शन के लिए ओपन रेडिस पोर्ट


118

मैं सर्वर पर पोंग रेडिस पिंग कर सकता हूं:

# 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

तो शायद मुझे दूरस्थ उबंटू मशीन पर पोर्ट 6379 खोलना चाहिए? मैं यह कैसे करुं?


रिमोट मशीन पर रेडिस नहीं सुन रहा है?
सर्जियो तुलेंत्सेव

हो सकता है, इसकी जाँच कैसे की जाए
मैक्सिम येफ्रेमोव

क्या आपने ufw को अक्षम कर दिया है?
इंसिन करें

जवाबों:


214

क्या आपने रेडिस सर्वर पर रिमोट एक्सेस की अनुमति देने के लिए बाइंड विकल्प सेट किया था?

पहले (फ़ाइल /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
config फाइल में मैंने स्ट्रिंग के bind 0.0.0.0बाद स्ट्रिंग जोड़ा bind 127.0.0.1। पुनः आरंभ की गई लालियां। और अब रिमोट से कनेक्ट कर सकते हैं।
मैक्सिम येफ्रेमोव 10

क्या कोई अंतर है अगर हम bind 0.0.0.0अकेले का उपयोग करते हैंbind 127.0.0.1 0.0.0.0
Nyxynyx

1
@Nyxynyx 0.0.0.0 सभी एडेप्टर को बांधता है, इसलिए यह अनावश्यक है। हालांकि, एक फर्क नहीं करना चाहिए।
माइल्डली रहस्यमयी

1
क्या किसी भी आईपी कॉल पर रेडिस खोलना सुरक्षित है? हम केवल कुछ IP से रेडिस तक पहुँचने को कैसे प्रतिबंधित कर सकते हैं?
brsbilgic

1
@ माइल्डसेलेब्रिटी का बहुत बहुत धन्यवाद। हमने फायरवॉल या नेटवर्क या किसी अन्य मुद्दे का पता लगाने में लगभग 2 सप्ताह बर्बाद कर दिए हैं। लेकिन इस बदलाव ने चैंपियन की तरह काम किया।
किन्नू

23

मेरे लिए, मुझे निम्नलिखित करने की आवश्यकता है:

1- टिप्पणी करें bind 127.0.0.1

2- बदलें protected-modeकरने के लिएno

3- iptables( https://www.digitalocean.com/community/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04 ) के साथ मेरे सर्वर को सुरक्षित रखें


1
मुझे 0.0.0.0 बाइंड का उपयोग करना था। "बाइंड 127.0.0.1" मेरे लिए काम नहीं किया। मुझे "संरक्षित-मोड" को "नहीं" सेट करने की आवश्यकता नहीं थी। चेतावनी: "बाइंड" से पहले खाली जगह न छोड़ें या सर्वर शुरू नहीं होगा। नोट: मैं
जोश

7

एक त्वरित ध्यान दें कि अपने Redis सर्वर को सुरक्षित किए बिना ऐसा करना एक अच्छा विचार नहीं है क्योंकि यह आपको हमला करने के लिए खुला छोड़ सकता है। AUTH को लागू करना सुनिश्चित करें या अन्यथा सुरक्षित करें। देखें http://redis.io/topics/security जानकारी के लिए।


3

1- टिप्पणी बाहर बाँध 127.0.0.1

2- सेट आपके पासपास की आवश्यकता है

फिर जांच लें कि क्या फ़ायरवॉल ने आपके पोर्ट को ब्लॉक कर दिया है

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. अपना फ़ायरवॉल या ओपन रेडिस पोर्ट अक्षम करें।

  6. रेडिस का उपयोग करना शुरू करें ./redis-server $REDIS_HOME/redis.conf

  7. के माध्यम से विन्यास की जाँच करें ./redis-cli -h -YOUR-IP- -a -YOUR-PASSWORD-HERE-

  8. के माध्यम से विन्यास की जाँच करें ./redis-cli -h -YOUR-IP- ping

9
कृपया सलाह कभी न दें "अपने फ़ायरवॉल को अक्षम करें"।
सामंथा एटकिंस

3
  1. स्थान पर फ़ाइल खोलें /etc/redis.conf

  2. टिप्पणी दें bind 127.0.0.1

  3. पुनः आरंभ करें:

     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 में बाँध 127.0.0.1 को बाँधने के लिए 0.0.0.0 बाँधें

Step2 (पिछले के रूप में): अपने redis.conf में रक्षित-मोड को संरक्षित करें हां रक्षित-मोड सं

Amazon Ec2 इंस्टेंस के लिए महत्वपूर्ण:

Step3: अपने वर्तमान ec2 मशीन में सुरक्षा समूह पर जाएँ। कस्टम टीसीपी के लिए 6379 पोर्ट के साथ एक इनबाउंड नियम जोड़ें और "कहीं से भी उपयोग करें" विकल्प चुनें।


1

मेरे मामले में, मैं रेडिस-स्टेबल का उपयोग कर रहा हूं

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

रेडिस-सर्वर को पुनरारंभ करें:

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

0

बाइंड और संरक्षित-मोड दोनों ही आवश्यक कदम हैं। लेकिन अगर ufw सक्षम है तो आपको ufw में redis port को अनुमति देना होगा।

  1. Ufw स्थिति की जाँच करें ufw statusयदि Status: activeरेडिस-पोर्ट की अनुमति देंufw 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.