SSH 터널링과 포트 전달 기법
로컬, 원격, 동적 포트 전달을 익히고 각각의 정상적인 용도와 보안상 민감한 용도를 이해합니다.
SSH 터널링과 포트 전달 기법은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
로컬 포트 전달 개념
로컬 포트 전달(ssh -L local_port:destination_host:destination_port user@ssh_server)은 로컬 컴퓨터의 포트에 연결을 설정합니다. 해당 로컬 포트로 전송된 트래픽은 암호화된 SSH 연결을 통해 SSH 서버로 이동하고, SSH 서버는 다시 대상에 연결합니다. 로컬 애플리케이션은 localhost와 통신하고, SSH가 트래픽을 원격 대상에 안전하게 전달합니다.
로컬 전달 사용 사례: 데이터베이스 접근
로컬 포트 전달의 일반적인 사용 사례는 방화벽 뒤에 있는 내부 데이터베이스에 접근하는 것입니다. ssh -L 5432:db.internal:5432 user@bastion을 사용하면 로컬 PostgreSQL 클라이언트가 localhost:5432에 연결합니다. 배스천 호스트는 이 트래픽을 내부 데이터베이스 서버로 전달하며, 해당 서버는 인터넷에서는 직접 접근할 수 없습니다.
원격 포트 전달 개념
원격 포트 전달(ssh -R remote_port:local_host:local_port user@ssh_server)은 원격 SSH 서버의 포트에 연결을 설정합니다. 외부 클라이언트가 해당 원격 포트에 연결하면 트래픽은 SSH 터널을 통해 사용자의 로컬 컴퓨터로 되돌아옵니다. 이를 통해 인터넷에 연결된 서버를 경유하여 로컬에서 실행 중인 서비스를 외부에 공개할 수 있습니다.
원격 전달 사용 사례: NAT 뒤의 장치
원격 전달은 컴퓨터가 NAT 뒤에 있어 직접 들어오는 연결을 받을 수 없을 때 특히 유용합니다. 공용 서버로 역방향 터널을 만들면 외부 클라이언트가 공용 서버를 통해 로컬 서비스에 접근할 수 있습니다. 이 기법은 일부 원격 접근 도구와 IoT 장치 관리 시스템에서도 사용됩니다.
동적 포트 전달: SOCKS5 프록시
동적 포트 전달(ssh -D local_port user@ssh_server)은 로컬 컴퓨터에 SOCKS5 프록시를 만듭니다. SOCKS5를 지원하는 모든 애플리케이션은 이 프록시를 통해 트래픽을 라우팅할 수 있으며, 트래픽은 SSH 서버에서 시작된 것처럼 보입니다. 이 방식은 사실상 원격 네트워크를 통해 웹 탐색 트래픽을 전달하므로, 지역 제한 리소스에 접근하거나 로컬 네트워크 필터를 우회할 때 유용합니다.
역방향 터널과 보안 영향
역방향 터널은 강력하지만 보안 위험을 초래합니다. 서버에서 GatewayPorts를 허용하면 원격으로 전달된 포트가 localhost뿐 아니라 공용 인터넷에서도 접근 가능해집니다. 역방향 터널이 설정된 컴퓨터가 침해되면 공격자가 내부 서비스에 접근할 가능성이 있습니다. 조직은 승인되지 않은 역방향 터널을 모니터링하고 SSH 설정에서 GatewayPorts를 제한해야 합니다.
SSH 서버 터널 제어
SSH 서버 설정은 터널링 기능을 제어합니다. AllowTcpForwarding은 로컬 및 원격 포트 전달의 허용 여부를 제어합니다. AllowStreamLocalForwarding은 Unix 소켓 전달을 제어합니다. 이 설정을 no로 지정하면 모든 사용자의 터널링이 비활성화되며, 사용자별 또는 그룹별로 제한할 수도 있습니다. 불필요한 전달을 비활성화하면 공격 표면이 줄어듭니다.
Tun 장치를 사용하는 VPN으로서의 SSH
SSH는 전체 IP 터널링을 위해 tun 네트워크 인터페이스를 생성하는 기능을 지원합니다(ssh -w). 이를 통해 SSH는 특정 TCP 연결만이 아니라 전체 IP 패킷을 터널링하는 경량 VPN으로 동작합니다. 서버에서 PermitTunnel을 활성화해야 합니다. 전용 VPN 소프트웨어보다 효율은 낮지만, 추가 소프트웨어가 필요 없고 기존 SSH 인프라를 활용할 수 있습니다.
연결 다중화
SSH 연결 다중화(ControlMaster 및 ControlPath 설정)는 새 세션에 기존 SSH 연결을 재사용합니다. 이를 통해 동일한 호스트에 대한 후속 연결 속도가 크게 빨라지며, 스크립트 환경에서 특히 유용합니다. 공유 연결을 사용하면 여러 SSH 세션에 걸쳐 터널을 계속 유지할 수도 있습니다.
SSH 터널 탐지
네트워크 관리자는 비정상적인 트래픽 패턴을 통해 SSH 터널링을 탐지할 수 있습니다. 예를 들어 포트 22에서 장시간 유지되는 TCP 연결, 터미널 트래픽만 전달해야 하는 연결에서 예상보다 많은 데이터가 전송되는 경우, 연결이 수립된 후 알려진 민감한 목적지로 연결되는 경우가 있습니다. 심층 패킷 검사는 SSH 콘텐츠를 볼 수 없지만, 메타데이터 분석을 통해 의심스러운 터널 동작을 식별할 수 있습니다.
터널 구성 모범 사례
승인된 용도로 사용할 때는 모든 터널과 그 목적을 문서화하십시오. 터널에는 -N(명령 없음)을 사용하여 불필요하게 셸을 열지 않도록 하고, -f(백그라운드)를 사용하여 터미널을 차단하지 않고 실행하십시오. 지속적인 터널에는 AutoSSH 또는 systemd 소켓 활성화를 사용하십시오. 연결이 끊어지면 터널이 자동으로 다시 시작됩니다.
로컬 및 원격 포트 전달
공개 SSH 서버를 통해 로컬 개발 서버(포트 3000에서 실행 중)를 인터넷에 공개하려고 합니다. 어떤 전달 유형을 사용해야 합니까?
SSH 터널링 요약
SSH 터널링을 요약하면, 로컬 전달(-L)은 내 컴퓨터에서 내부 서비스에 안전하게 접근하게 하고, 원격 전달(-R)은 공개 서버를 통해 로컬 서비스를 노출하며, 동적 전달(-D)은 애플리케이션 수준의 트래픽 라우팅을 위한 SOCKS5 프록시를 생성합니다. tun 전달은 전체 IP VPN을 활성화하고, 서버의 AllowTcpForwarding은 이러한 기능을 제어합니다.
자주 묻는 질문
“SSH 터널링과 포트 전달 기법” 강의는 무료인가요?
네 — “SSH 터널링과 포트 전달 기법” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“SSH 터널링과 포트 전달 기법”에서 뭘 배우나요?
로컬, 원격, 동적 포트 전달을 익히고 각각의 정상적인 용도와 보안상 민감한 용도를 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“SSH 터널링과 포트 전달 기법” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- SSH 핸드셰이크와 호스트 키 인증
- 공개 키 인증과 에이전트 전달
- SSH 터널링과 포트 전달 기법
- SSH 강화와 감사 모범 사례