Proxy를 활용한 SFTP 전송이 어려운 이유와 HAProxy 대안 검토
1. 개요
사내 보안 정책상 외부망에서 내부망으로 파일을 전송해야 하는 경우, 직접적인 접근이 차단되어 있기 때문에 Proxy를 통해 해결할 수 있을지 고민하게 됩니다. 특히 Nginx와 같은 HTTP Proxy로 SFTP를 처리할 수 있는지, 혹은 HAProxy 같은 TCP 기반 프록시를 활용할 수 있는지에 대한 의문이 있을 수 있습니다.
이 글에서는 Proxy를 통해 SFTP 파일 전송이 어려운 이유를 설명하고, 가능한 대안으로 HAProxy를 검토해보겠습니다.
2. Proxy를 활용한 SFTP 전송이 어려운 이유
프록시는 기본적으로 특정 프로토콜의 트래픽을 중계하는 역할을 합니다. 그러나 SFTP와 같은 SSH 기반 프로토콜을 Proxy로 처리하는 것은 여러 제약이 따릅니다.
2.1. HTTP Proxy(Nginx, Squid 등)는 SFTP를 지원하지 않음
Nginx나 Squid와 같은 일반적인 프록시는 주로 HTTP/HTTPS 트래픽을 처리하도록 설계되었습니다. 하지만 SFTP는 HTTP 기반이 아니라 SSH 기반의 프로토콜이기 때문에 이러한 웹 프록시에서는 처리할 수 없습니다.
2.2. TCP 기반 Proxy(HAProxy)를 활용한 접근
HAProxy는 L4(TCP) 레벨에서 트래픽을 중계할 수 있기 때문에, SSH/SFTP 연결을 프록싱할 가능성이 있습니다. 하지만 SSH 연결은 보안성을 위해 세션을 유지하는 방식이며, 단순한 TCP 프록시만으로는 SSH 인증 과정을 제대로 처리하기 어려울 수 있습니다. 또한, SSH의 키 교환 및 암호화 방식이 중간에서 트래픽을 가로채는 구조와 충돌할 가능성이 있습니다.
3. 가능한 대안
Proxy를 통한 파일 전송이 어렵다면, 다른 방법을 고려해야 합니다.
3.1. SSH 터널링
SSH 터널을 활용하면 외부망에서 내부망의 SFTP 서버에 안전하게 접근할 수 있습니다.
ssh -L 2222:internal-sftp-server:22 user@proxy-server
위와 같이 설정하면, 로컬에서 localhost:2222로 접속하면 내부망의 SFTP 서버로 연결됩니다.
3.2. 데이터 중계 서버 활용
외부망과 내부망 사이에 중계 서버(베스천 호스트)를 두고, 외부망에서 중계 서버로 업로드한 후 내부망에서 가져가는 방식도 가능합니다.
3.3. 전용 파일 전송 솔루션 도입
SFTP 대신 HTTP 기반의 WebDAV 또는 MFT(Managed File Transfer) 솔루션을 활용할 수도 있습니다.
4. 결론
Nginx와 같은 HTTP Proxy는 SFTP를 처리할 수 없으며, HAProxy를 사용하더라도 SSH/SFTP의 특성상 원활한 프록싱이 어렵습니다. 대신, SSH 터널링, 데이터 중계 서버, 또는 전용 파일 전송 솔루션을 활용하는 것이 보다 현실적인 해결책이 될 수 있습니다.