시놀로지/헤놀로지 DSM의 IP 허용/차단 버그 해결법

부제 : 시놀로지 로그인이 안 됨, 시놀로지 IP 주소 차단

내부망 IP는 꼭 허용 목록에 등록해 주세요.

급하신 분은 제일 마지막 목차로

안녕하세요!

혹시 시놀로지/헤놀로지를 운용하면서, 자동 차단을 사용하시나요?
사용하신다구요?
그럼 차단 만료일 활성화 옵션은 켜두셨나요?

사용하지 않는 분이 계시다면
제가 심각한 버그와 재미있는 이야기를 하나 전해드리고 싶습니다.

차단 만료일 활성화를 왜 사용해?

의문이 들 수 있죠.

자동 차단은 나를 공격하려는 IP를 막는 건데,
굳이 만료일을 둬서 풀어줄 이유가 있나?
그럴 거면 처음부터 차단하지 않는 것과 뭐가 다르지?

이런 의문이 든다면, 당신과 친하게 지내고 싶습니다.
생각에 꼬리의 꼬리를 무는 사람을 정말 좋아하거든요.

하지만,

차단 목록에 IP 주소가 너무 많음

이런 이메일이나 알림을 받아본 적 있나요?

제 시놀로지의 IP 차단 목록은
약 1,800페이지, 즉 45만 개 이상의 IP가 쌓여 있었습니다.
2년도 더 전부터 꾸준히 위와 같은 알림을 받아왔죠.
경고가 아니라 알림입니다.

내용을 간단히 요약하자면

  • IP 차단 목록이 너무 많다.
  • 방화벽을 쓰거나 차단 규칙을 검토해 보라.

다들 이 알림을 받으면, 당장 조치를 취해야겠단 생각이 드십니까?
저는 이게 경고나 중대 사안으로 보이지는 않네요.

하지만, 이는 기어코 포스팅 당일에 사고를 내고 말았습니다.

모든 외부망 IP가 로그인이 안 됨

오늘 DSM에 로그인을 시도했더니
갑자기 내 IP가 최대 로그인 시도 실패 횟수로 인해 자동 차단 됐다고 하네요.

그럴 수가 없는데?
5시간 전까지 잘 접속했고, 그 이후로 로그인 시도를 한 적도 없는데?
물론 내부망으로는 로그인이 잘 됐습니다.
이게 내부망 IP는 허용 목록에 추가해서 그런 건진 모르겠지만,
이상한 점은 더 있었습니다.

Case 1: 스마트폰 외부망으로도 동일한 차단 문구.
Case 2: 로그 센터에 내 공인 IP 로그인 실패 기록 없음.
Case 3: 내 공인 IP와 스마트폰 ISP IP가 차단 리스트에 없음.

직감적으로 자동 차단 기능이 원인일 것이라 생각해 비활성화하니
그제야 제대로 로그인이 됩니다.
다시 켜면 또 안 되고요.

그럼 원인은 하나죠.
자동 차단 기능이 문제를 일으키고 있다.
그래서 혹시나 하는 마음에 차단된 IP를 전부 지워봤습니다.

그랬더니 너무나 잘 되네요…

나는 아무것도 안 했는데 갑자기 IP가 차단 됐다고 하며,
다른 IP로도 마찬가지로 차단 됐다고 나온다면,
이는 자동 차단 과부하 때문일 수도 있습니다.
이 문제가 왜 생기는지, 어떻게 해결해야 하는지 직관적으로 알아보죠.

차단 목록에 IP 주소가 너무 많음

이 알림은 곧, 시놀로지가 뻗기 직전이라는 시스템의 경고입니다.

시놀로지의 자동 차단은 내부적으로 리눅스 방화벽(iptables)을 씁니다.
그런데 이 차단된 IP 목록이 누적되어 대략 45만 개를 넘어가기 시작하면,
(정확한 로직은 모르겠지만) 심각한 버그가 발생합니다.

봇들의 공격 패킷뿐만 아니라, 정상적인 외부 접속 패킷까지
모조리 차단 목록에 있는 ‘척’을 하죠.

이래서 내 공인 IP가 차단 목록에 없는데도, 심지어 다른 IP로 시도해도,
외부 접속이 몽땅 먹통이 되는 겁니다.
물론, 내부망 IP는 접속이 되는 것 같습니다.

하지만 혹시 모르니, 반드시 내부망 IP는 허용 목록에 넣으시길 바랍니다.

지루하고 현학적인 이야기

  • 논쟁 발생 가능성 100%

많은 분들이 차단된 IP 숫자가 늘어나는 걸 보며 뿌듯해합니다.
하지만 차단된 IP를 영구적으로 쌓아두는 건 실질적인 보안에 아무런 의미가 없습니다.

#Reason 1

어차피 집요하게 뚫으려는 해커는 VPN이나 좀비 PC를 돌려가며 계속 IP를 바꿉니다.
한 번 막힌 IP를 영구 차단해 봤자 무한에 가까운 아이피 중 하나일 뿐입니다.

  • IPv4의 IP 개수 (123.123.123.123)
    • 2^32개 = 약 43억 개

IANA에서 2011년 2월 3일에 공식적으로 여유분이 0개라고 발표.
이론상 43억 개가 아닌, 실제 43억 개가 점유중.

  • IPv6의 IP 개수
    • 2^128개 = 약 340간 개 = 340억 x 1,000경^3개

1234:5678:abcd:0000:0000:ef01:2345:6789
1234:5678:abcd::ef01:2345:6789
1234:5678:abcd:ef01:2345:6789:123.123.123.123

45만 개의 IP를 차단하는 게 정말 유의미할까요?

보안의 핵심은 이 차단된 IP 리스트에 있지 않습니다.
진정한 보안은 인증 체계와 습관에서 나옵니다.
실제로 2FA와 방화벽 정책이 보안 기여도의 절대다수를 차지합니다.

IP 자동 차단 때문에, 맨날 내 지인들만 차단당해서 날 귀찮게 하던데…

1%의 미미한 효과를 위해 불편함과 리스크를 감수할 이유는 별로 없다고 생각되네요.

#Reason 2

흔히들 보안을 위해 SSH 포트를 22번에서 다른 번호로 바꾸거나
평소에 SSH를 안 쓸 때에는 꺼두라고 조언합니다.

하지만 엄밀히 따져서 22번 포트를 쓴다고 뚫리는 것도 아니고,
포트를 바꾼다고 안 뚫리는 것도 아닙니다.

비유 한번 해볼까요?

  • 내 도메인 / 공인 IP

내 집의 도로명 주소와 같습니다. 지도(검색 엔진)에 있습니다.
거기 사는 사람이 누구인지(계정; ID) 특정이 안 될 뿐,
주소는 공개 정보입니다.

  • SSH 포트

도어락의 위치와 같습니다.
(물론 엄밀히 포트는 용도니까 다르지만…)
도어락의 위치만 바꾼다고 그게 합리적인 보안인가요?
고개 한번 돌리면 도어락은 바로 찾습니다.
포트 스캔 돌리면 즉시 열려 있는 포트를 알아낼 수 있습니다.

#헛소리지만 의미는 있는

  • 도어락이 없으면 안전합니다.

근데 나도 못 들어갑니다.
없어도 문 박살 내면 그만입니다.

  • 문이 없으면 안전합니다.

SSH를 끄면 안전하지만, 불편하죠. (사실 안 불편함)

  • 집이 없으면 안전합니다.

도메인도 공인 IP도 없으면? 근데 좀 심각하게 불편하겠네요.

  • 내가 존재하지 않으면 제일 안전합니다.

지킬 데이터가 없으니까요.

#Q.E.D.

결국 도어락(출입구)은 있어야 하죠.
그럼 이 출입구를 어떻게 안 뚫리게 하느냐가 최선의 보안 아닐까요?

맞습니다.

진짜 보안은 어디가 아니라 어떻게의 문제. 그리고 습관.

(그리고 내 서버 해킹을 포기하게 만들 이유 제공…)

앞서 강조했듯
SSH를 켜놓든 꺼놓든, 포트 번호를 바꾸든 안 바꾸든
다음 항목들이 훨씬 더 중요합니다.

  • 강력한 비밀번호

도어락의 위치를 알아도, 패스워드를 모르면 못 엽니다.

  • 2FA (2단계 인증)

도어락의 위치를 알아도, 지문(OTP)이 없으면 못 엽니다.

  • SSH Key 기반 인증

아예 물리적인 마스터키가 있어야만 문이 열립니다.

  • 인간의 실수 줄이기

아무리 좋은 도어락도, 포스트잇에 비밀번호를 써붙여 놓거나
마스터키를 떨어뜨려 잃어버리거나
친구나 집 보러 온다는 사람한테 비밀번호를 알려주면
좋을 건 없겠죠?

물론 완벽한 보안은 없습니다. 사람은 실수를 하니까요.
하지만 위의 장치들이 있다면,
적어도 해킹은 시도 조차 하지 않거나, 하다가 지쳐서 포기하겠죠.

아, 취약점은 별개이긴 합니다…
코렁탕 먹이고 비밀번호 불라고 하면 누가 안 불까요…
그렇다고 나도 모르는 비밀번호로 짓고 Vault를 쓰자니
귀찮음과 취약점이 더 늘어나고,
고문에서 풀려날 방법도 없어지는 거고.

#물론

로그가 지저분하게 남는 게 싫어서 포트를 바꾸거나
추가 인증이 더 귀찮으니 SSH를 그때그때 켜고 끄는 게 잘못된 건 아닙니다.

각자의 가치관과 편의성에 맞게 선택할 문제죠.

SSH 안 끄면 해킹당한다!!!!!
SSH 포트 안 바꾸면 해킹당한다!!!!!
라는 공포 마케팅은 그 논리적 근거가 빈약하다는 점,
이제는 충분히 공감하시리라 생각합니다.

이걸 다 읽은 분이 계신다면 감사의 말씀드리겠습니다…

(재발) 방지 대책

대책은 간단합니다.
굳이 차단된 IP를 지우긴 싫다면, 그냥 차단 만료일을 걸면 됩니다.

어차피 강력한 비밀번호를 쓰고 있다면 봇들이 백날 시도해 봤자 뚫리지 않습니다.

해결책: 모드 1 리셋

일단 내부망으로 먼저 접속해 보세요.
내부망도 안 되면 리셋하는 겁니다.

모드 1: 관리자 로그인 자격 증명 및 네트워크 설정을 기본값으로 재설정

시놀로지 공식 문서에 접속하여 가이드를 따라 합니다.

해결책: SSH로 차단 목록 날리기

  1. SSH root 권한 얻기
sudo -i
  1. 데이터베이스 경로 이동 및 실행
cd /etc
sqlite3 synoautoblock.db
  1. SQLite 명령어 입력 (sqlite>에서 그냥 붙여 넣기)
DELETE FROM AutoBlockIP WHERE Deny = 1;
.quit

참고로 DELETE FROM AutoBlockIP WHERE Deny = 1; 명령어는
차단 속성인 IP만 날려버리고 허용 IP는 살려두는 명령어입니다.

이후 제어판 > 보안 > 보호에서 자동 차단 활성화를 껐다 켜고
차단 만료일 옵션 사용을 권장드립니다.


감사합니다.

Leave a Comment