
홈 서버 외부 개방의 위험성과 리버스 프록시 도입 배경
시놀로지 NAS를 활용하여 도커(Docker) 기반의 n8n, 워드프레스, 개인용 데이터베이스 등을 구축했다면, 외부 인터넷 환경에서 이 서비스들에 접근하기 위한 네트워크 라우팅 설정이 필수적입니다. 초기 구축 단계에서 가장 흔히 저지르는 치명적인 실수는 공유기의 포트 포워딩(Port Forwarding) 기능을 이용해 컨테이너의 내부 포트를 외부로 직접 노출시키는 것입니다.
예를 들어, 워드프레스 포트인 8080이나 n8n 포트인 5678을 공용망에 그대로 열어두면, 전 세계의 악의적인 봇(Bot)들이 해당 IP와 포트로 무차별 대입 공격(Brute-force)을 시도하게 됩니다. 뿐만 아니라 포트 번호가 URL에 노출되어 미관상 좋지 않으며, 암호화되지 않은 HTTP 통신을 사용할 경우 중간자 공격(MITM)에 의해 관리자 비밀번호가 탈취될 위험성이 극도로 높아집니다.
이러한 보안 취약점을 원천적으로 차단하고 도메인 주소만으로 깔끔하게 접속하기 위해 도입하는 시스템이 바로 리버스 프록시(Reverse Proxy)입니다. 시놀로지는 DSM 제어판 내부에 Nginx 기반의 리버스 프록시 기능을 내장하고 있어, 사용자가 외부 도메인(예: n8n.mydomain.com)으로 접속하면 NAS가 이를 가로채어 내부의 특정 컨테이너 포트(예: localhost:5678)로 안전하게 연결해 주는 중계기 역할을 수행합니다.
리버스 프록시 라우팅 과정에서 발생하는 주요 오류
제어판의 로그인 포털 메뉴에서 리버스 프록시 규칙을 생성하는 과정은 직관적이지만, 네트워크 프로토콜의 특성을 오해하여 발생하는 잦은 라우팅 실패 사례들이 존재합니다.
1. HTTPS와 HTTP 프로토콜 매칭의 혼선 (502 Bad Gateway)
가장 빈번하게 발생하는 라우팅 오류는 출발지(외부)와 목적지(내부)의 프로토콜을 잘못 짝지었을 때 나타납니다. 외부 접속은 안전한 보안 연결을 위해 반드시 ‘HTTPS(포트 443)’로 설정해야 합니다. 그러나 목적지가 되는 내부 도커 컨테이너는 대부분 자체적인 SSL 인증서를 가지고 있지 않은 순수 웹 서비스이므로, 반드시 ‘HTTP(포트 번호)’로 지정해야 합니다.
많은 사용자가 보안을 강화하겠다는 명목으로 목적지 프로토콜마저 ‘HTTPS’로 설정하는 실수를 범합니다. 이 경우 Nginx 프록시 서버가 내부 컨테이너와 암호화 통신을 시도하지만, 컨테이너 측에서 이를 해독하지 못해 통신이 거부되며 브라우저에 ‘502 Bad Gateway’ 에러가 즉시 출력됩니다. 리버스 프록시는 외부와 NAS 사이의 구간만 암호화하며, NAS 내부에서 컨테이너로 향하는 통신은 암호화되지 않은 HTTP 통신을 사용하는 것이 올바른 아키텍처입니다.
2. 사용자 정의 헤더(Websocket) 누락에 따른 실시간 통신 단절
리버스 프록시 연결 후 텍스트나 이미지는 정상적으로 로딩되지만, 워드프레스의 특정 플러그인이 오작동하거나 n8n의 실시간 터미널 로그가 화면에 갱신되지 않는 현상이 발생할 수 있습니다. 이는 일반적인 정적 웹 트래픽과 달리, 실시간 양방향 통신을 요구하는 웹소켓(Websocket) 패킷이 리버스 프록시 서버를 통과하지 못하고 차단되었기 때문입니다.
이 현상을 해결하려면 리버스 프록시 규칙 설정 창의 ‘사용자 지정 헤더’ 탭으로 이동하여, ‘생성’ 버튼을 누르고 ‘WebSocket’ 항목을 선택해야 합니다. 그러면 자동으로 ‘Upgrade’ 및 ‘Connection’ 헤더 규칙이 추가되며, Nginx 서버가 실시간 데이터 스트리밍 패킷을 컨테이너 내부로 무사히 통과시키게 됩니다.
Let’s Encrypt SSL 인증서 발급 및 갱신 트러블슈팅
리버스 프록시를 통해 HTTPS 접속 경로를 만들었다면, 브라우저에서 ‘주의 요함’ 경고가 뜨지 않도록 공인된 SSL 인증서를 씌워주어야 합니다. 시놀로지는 무료 인증서 발급 기관인 Let’s Encrypt와 시스템 단위로 연동되어 있으나, 발급 단계에서 까다로운 검증 절차로 인해 잦은 오류를 유발합니다.
1. 포트 80 차단에 의한 도메인 소유권 검증 실패
제어판의 인증서 메뉴에서 Let’s Encrypt 발급을 요청했을 때 시스템이 장시간 지연되다가 ‘연결에 실패했습니다’라는 팝업을 띄우는 것이 가장 대표적인 에러입니다. Let’s Encrypt 서버는 사용자가 입력한 도메인의 실제 소유자인지 확인하기 위해, 해당 도메인의 80번 포트(HTTP)로 접속하여 특정 텍스트 파일을 읽어들이는 ‘HTTP-01 Challenge’ 검증을 수행합니다.
만약 공유기의 포트 포워딩 설정에서 80번 포트를 NAS 시스템으로 열어두지 않았다면, 검증 서버가 NAS에 도달하지 못해 인증서 발급이 원천적으로 거부됩니다. 평소에는 보안을 위해 80번 포트를 닫아두더라도, 인증서를 최초로 발급받거나 3개월 단위로 갱신해야 하는 시점에는 반드시 공유기의 80번 포트가 시놀로지 NAS를 향해 개방되어 있어야 합니다.
2. 인증서 매핑 누락으로 인한 구형 인증서 노출
인증서를 성공적으로 발급받았음에도 불구하고 웹 브라우저로 접속해 보면 여전히 보안 경고가 출력되거나 시놀로지의 기본(디폴트) 인증서가 노출되는 실수가 빈번하게 발생합니다. 새로운 SSL 인증서를 발급받는 것과 그 인증서를 특정 웹 서비스에 적용하는 것은 시스템상 완전히 분리된 작업이라는 점을 간과했기 때문입니다.
인증서 목록 창 상단에 위치한 ‘설정’ 버튼을 클릭하면 NAS 내부에서 동작하는 모든 서비스와 등록된 도메인(리버스 프록시 규칙 포함)의 목록이 나타납니다. 여기서 본인이 설정한 목적지 도메인 옆의 드롭다운 메뉴를 클릭하여, 방금 새로 발급받은 Let’s Encrypt 인증서를 명시적으로 지정해 주어야만 리버스 프록시 서버가 해당 암호화 키를 사용하여 통신을 개시하게 됩니다.
HSTS 적용 및 인프라 보안 시스템의 완성
리버스 프록시와 SSL 인증서가 정상적으로 작동하기 시작했다면, 마지막으로 제어판 설정에서 HSTS(HTTP Strict Transport Security) 옵션을 활성화하여 웹 보안 아키텍처를 완성해야 합니다.
HSTS가 활성화된 도메인은 향후 방문자가 브라우저 주소창에 강제로 ‘http://’를 입력하고 접속을 시도하더라도, 브라우저 자체가 이를 거부하고 무조건 암호화된 ‘https://’ 경로로만 데이터를 요청하도록 강제합니다. 이는 공공 와이파이 환경 등에서 발생할 수 있는 프로토콜 다운그레이드 공격(Downgrade Attack)을 시스템 차원에서 차단하는 가장 진보된 방어 로직입니다.
결론적으로 시놀로지 환경에서 리버스 프록시와 SSL의 결합은 단순한 접속 편의성을 넘어서는 의미를 지닙니다. 내부 컨테이너의 복잡한 포트 구조를 외부 공격자로부터 완벽히 은닉하고, 모든 데이터 입출력을 공인된 암호화 터널로 통과시킴으로써 기업용 서버에 준하는 강력한 무결성을 확보하게 됩니다.