2025년 3월 18일 회고

지속적으로 발생하는 레디스 오류. 오늘도 어김없이 오류가 발생했다. 취업준비를 하느라 Redis의 재시동만으로 해결하고 있었는데 자꾸 반복되는 오류.. 그만 취준 탓하고 직접 해결해보기로 했다.
이 문제를 해결하기 위해서 문제원인을 찾고 수정하는데만 3시간이 걸렸다.
트러블 슈팅을 하는 내내 나의 개발 능력에 대한 의구심이 들었다. 이 문제를 해결하기 위해서 GPT와 구글링을 내내 하고 있는 내 자신을 보면서 나는 이렇게나 의존적인 개발자인가라는 생각이 들었다. 물론 구글링 안하는 개발자가 얼마나 되겠는가라는 생각이 들었지만 자괴감도 들었고 원인을 파악하지 못하는 내 자신이 한심했다.
결과적으로는 Redis의 비밀번호가 없이 설정되어서 외부의 접근이 가능했는데 복제 명령어인 REPLICAOF로 인해서 Redis가 Master 노드의 연결을 끊고 Slave 노드로 전환하게 된 것이었다.
Redis의 모든 로그를 직접 들여다보았다.
129991:C 17 Mar 2025 13:45:36.087 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
120429:M 17 Mar 2025 13:45:36.179 * Background saving terminated with success
120429:M 17 Mar 2025 15:55:35.362 * 1 changes in 3600 seconds. Saving...
120429:M 17 Mar 2025 15:55:35.363 * Background saving started by pid 130262
130262:C 17 Mar 2025 15:55:35.369 * DB saved on disk
130262:C 17 Mar 2025 15:55:35.370 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
120429:M 17 Mar 2025 15:55:35.463 * Background saving terminated with success
120429:M 17 Mar 2025 16:55:36.055 * 1 changes in 3600 seconds. Saving...
120429:M 17 Mar 2025 16:55:36.057 * Background saving started by pid 130802
130802:C 17 Mar 2025 16:55:36.062 * DB saved on disk
130802:C 17 Mar 2025 16:55:36.063 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
120429:M 17 Mar 2025 16:55:36.157 * Background saving terminated with success
120429:M 17 Mar 2025 19:18:05.325 * Background saving started by pid 131064
131064:C 17 Mar 2025 19:18:05.332 * DB saved on disk
131064:C 17 Mar 2025 19:18:05.333 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
120429:M 17 Mar 2025 19:18:05.362 * Background saving terminated with success
120429:S 17 Mar 2025 19:18:05.411 * Before turning into a replica, using my own master parameters to synthesize a cached master: I may be able to synchronize with the new master with just a partial transfer.
120429:S 17 Mar 2025 19:18:05.411 * Connecting to MASTER 8.134.137.47:23721
120429:S 17 Mar 2025 19:18:05.411 * MASTER <-> REPLICA sync started
120429:S 17 Mar 2025 19:18:05.411 * REPLICAOF 8.134.137.47:23721 enabled (user request from 'id=65 addr=8.134.137.47:40870 laddr=172.31.18.212:6379 fd=8 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=47 qbuf-free=20427 argv-mem=24 multi-mem=0 rbs=1024 rbp=623 obl=0 oll=0 omem=0 tot-mem=22320 events=r cmd=slaveof user=default redir=-1 resp=3')
120429:S 17 Mar 2025 19:19:06.141 # Timeout connecting to the MASTER...
120429:S 17 Mar 2025 19:19:06.142 * Reconnecting to MASTER 8.134.137.47:23721 after failure
120429:S 17 Mar 2025 19:19:06.142 * MASTER <-> REPLICA sync started
120429:S 17 Mar 2025 19:20:07.316 # Timeout connecting to the MASTER...
120429:S 17 Mar 2025 19:20:07.317 * Reconnecting to MASTER 8.134.137.47:23721 after failure
120429:S 17 Mar 2025 19:20:07.317 * MASTER <-> REPLICA sync started
120429:S 17 Mar 2025 19:21:08.491 # Timeout connecting to the MASTER...
120429:S 17 Mar 2025 19:21:08.492 * Reconnecting to MASTER 8.134.137.47:23721 after failure
120429:S 17 Mar 2025 19:21:08.492 * MASTER <-> REPLICA sync started
120429:S 17 Mar 2025 19:22:09.664 # Timeout connecting to the MASTER...
120429:S 17 Mar 2025 19:22:09.664 * Reconnecting to MASTER 8.134.137.47:23721 after failure
120429:S 17 Mar 2025 19:22:09.665 * MASTER <-> REPLICA sync started
120429:S 17 Mar 2025 19:23:10.837 # Timeout connecting to the MASTER...
120429:S 17 Mar 2025 19:23:10.837 * Reconnecting to MASTER 8.134.137.47:23721 after failure
누구냐 너?
120429:S 18 Mar 2025 01:05:25.666 # Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due to an attacker attempting to use Cross Protocol Scripting to compromise your Redis instance. Connection aborted.
자괴감을 느끼다.
이 원인을 파악하는데까지 얼마나 걸린걸까..? 이전에 어디선가 이런 말을 들은적이 있다. “배포된 서버 내의 DB는 비밀번호를 걸어봤자다. 어차피 클라우드 서버에 접속할 수 있다면 그냥 뚫을 것이다.”라고.. (참 자랑이다..) 그래서 그런지 비밀번호도 설정하지 않았고, EC2 내의 레디스 포트번호를 0.0.0.0으로 열어놓는 바람에 아무나 접근할 수 있었던 것이지만.. 기본적인 보안 요소를 이렇게 가볍게 생각하고 가다니 한심했다.
그냥 하자 부족하면 채우면 돼
그래서 새벽 3시인데도 나는 Redis 책을 폈다. 내가 너무 한심해서 공부를 하기로 했다. 내가 아무리 공부를 해도 개발 관련해서 완벽해질 수는 없을 것이다. 인정한다. 배움의 끝이 없는 영역이니까.. 그냥 부족하다고 생각이 들면 잡생각하지말고 열심히 공부하기로 했다.

2025년 3월 18일 회고

지속적으로 발생하는 레디스 오류. 오늘도 어김없이 오류가 발생했다. 취업준비를 하느라 Redis의 재시동만으로 해결하고 있었는데 자꾸 반복되는 오류.. 그만 취준 탓하고 직접 해결해보기로 했다.
이 문제를 해결하기 위해서 문제원인을 찾고 수정하는데만 3시간이 걸렸다.
트러블 슈팅을 하는 내내 나의 개발 능력에 대한 의구심이 들었다. 이 문제를 해결하기 위해서 GPT와 구글링을 내내 하고 있는 내 자신을 보면서 나는 이렇게나 의존적인 개발자인가라는 생각이 들었다. 물론 구글링 안하는 개발자가 얼마나 되겠는가라는 생각이 들었지만 자괴감도 들었고 원인을 파악하지 못하는 내 자신이 한심했다.
결과적으로는 Redis의 비밀번호가 없이 설정되어서 외부의 접근이 가능했는데 복제 명령어인 REPLICAOF로 인해서 Redis가 Master 노드의 연결을 끊고 Slave 노드로 전환하게 된 것이었다.
Redis의 모든 로그를 직접 들여다보았다.
129991:C 17 Mar 2025 13:45:36.087 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
120429:M 17 Mar 2025 13:45:36.179 * Background saving terminated with success
120429:M 17 Mar 2025 15:55:35.362 * 1 changes in 3600 seconds. Saving...
120429:M 17 Mar 2025 15:55:35.363 * Background saving started by pid 130262
130262:C 17 Mar 2025 15:55:35.369 * DB saved on disk
130262:C 17 Mar 2025 15:55:35.370 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
120429:M 17 Mar 2025 15:55:35.463 * Background saving terminated with success
120429:M 17 Mar 2025 16:55:36.055 * 1 changes in 3600 seconds. Saving...
120429:M 17 Mar 2025 16:55:36.057 * Background saving started by pid 130802
130802:C 17 Mar 2025 16:55:36.062 * DB saved on disk
130802:C 17 Mar 2025 16:55:36.063 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
120429:M 17 Mar 2025 16:55:36.157 * Background saving terminated with success
120429:M 17 Mar 2025 19:18:05.325 * Background saving started by pid 131064
131064:C 17 Mar 2025 19:18:05.332 * DB saved on disk
131064:C 17 Mar 2025 19:18:05.333 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
120429:M 17 Mar 2025 19:18:05.362 * Background saving terminated with success
120429:S 17 Mar 2025 19:18:05.411 * Before turning into a replica, using my own master parameters to synthesize a cached master: I may be able to synchronize with the new master with just a partial transfer.
120429:S 17 Mar 2025 19:18:05.411 * Connecting to MASTER 8.134.137.47:23721
120429:S 17 Mar 2025 19:18:05.411 * MASTER <-> REPLICA sync started
120429:S 17 Mar 2025 19:18:05.411 * REPLICAOF 8.134.137.47:23721 enabled (user request from 'id=65 addr=8.134.137.47:40870 laddr=172.31.18.212:6379 fd=8 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 ssub=0 multi=-1 qbuf=47 qbuf-free=20427 argv-mem=24 multi-mem=0 rbs=1024 rbp=623 obl=0 oll=0 omem=0 tot-mem=22320 events=r cmd=slaveof user=default redir=-1 resp=3')
120429:S 17 Mar 2025 19:19:06.141 # Timeout connecting to the MASTER...
120429:S 17 Mar 2025 19:19:06.142 * Reconnecting to MASTER 8.134.137.47:23721 after failure
120429:S 17 Mar 2025 19:19:06.142 * MASTER <-> REPLICA sync started
120429:S 17 Mar 2025 19:20:07.316 # Timeout connecting to the MASTER...
120429:S 17 Mar 2025 19:20:07.317 * Reconnecting to MASTER 8.134.137.47:23721 after failure
120429:S 17 Mar 2025 19:20:07.317 * MASTER <-> REPLICA sync started
120429:S 17 Mar 2025 19:21:08.491 # Timeout connecting to the MASTER...
120429:S 17 Mar 2025 19:21:08.492 * Reconnecting to MASTER 8.134.137.47:23721 after failure
120429:S 17 Mar 2025 19:21:08.492 * MASTER <-> REPLICA sync started
120429:S 17 Mar 2025 19:22:09.664 # Timeout connecting to the MASTER...
120429:S 17 Mar 2025 19:22:09.664 * Reconnecting to MASTER 8.134.137.47:23721 after failure
120429:S 17 Mar 2025 19:22:09.665 * MASTER <-> REPLICA sync started
120429:S 17 Mar 2025 19:23:10.837 # Timeout connecting to the MASTER...
120429:S 17 Mar 2025 19:23:10.837 * Reconnecting to MASTER 8.134.137.47:23721 after failure
누구냐 너?
120429:S 18 Mar 2025 01:05:25.666 # Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due to an attacker attempting to use Cross Protocol Scripting to compromise your Redis instance. Connection aborted.
자괴감을 느끼다.
이 원인을 파악하는데까지 얼마나 걸린걸까..? 이전에 어디선가 이런 말을 들은적이 있다. “배포된 서버 내의 DB는 비밀번호를 걸어봤자다. 어차피 클라우드 서버에 접속할 수 있다면 그냥 뚫을 것이다.”라고.. (참 자랑이다..) 그래서 그런지 비밀번호도 설정하지 않았고, EC2 내의 레디스 포트번호를 0.0.0.0으로 열어놓는 바람에 아무나 접근할 수 있었던 것이지만.. 기본적인 보안 요소를 이렇게 가볍게 생각하고 가다니 한심했다.
그냥 하자 부족하면 채우면 돼
그래서 새벽 3시인데도 나는 Redis 책을 폈다. 내가 너무 한심해서 공부를 하기로 했다. 내가 아무리 공부를 해도 개발 관련해서 완벽해질 수는 없을 것이다. 인정한다. 배움의 끝이 없는 영역이니까.. 그냥 부족하다고 생각이 들면 잡생각하지말고 열심히 공부하기로 했다.
