LabHub

SSH 와 파일 전송 · 터널링과 포트포워딩 · 실습

터널 세 방향 파기

LabHub 에서 이어서 보기

목표

-L, -R, -D 세 가지 포워딩을 모두 만들어 보고, 각 터널이 어디에 포트를 여는지 직접 확인합니다.

왜 중요한가

포워딩은 방향만 헷갈리지 않으면 전부 쉽습니다. -L 은 내 쪽 포트를 열고, -R 은 저쪽 포트를 열고, -D 는 내 쪽에 SOCKS 프록시를 세웁니다. 그리고 -L 의 가운데 호스트 이름은 SSH 서버 기준으로 해석됩니다 — 내 쪽에서 그 이름이 안 풀려도 상관없습니다. 이 사실 하나가 배스천 경유 접속의 거의 전부입니다.

이 실습에서 SSH 서버는 127.0.0.1:2222 입니다. 서버와 클라이언트가 같은 호스트라 -R 결과도 바로 확인할 수 있습니다.

단계

1. /opt/fixtures/nt-http/server.py9200 포트, 127.0.0.1 바인딩으로 띄우세요. 이것이 터널의 목적지입니다.
2. 로컬 포워딩으로 19200127.0.0.1:9200 터널을 백그라운드로 열고, curl -s http://127.0.0.1:19200/ok 결과를 /root/tun/local.txt 로 저장하세요.
3. 19200 을 누가 열었는지 확인해 /root/tun/proof.txt 로 저장하세요. 프로세스 이름에 ssh 가 보여야 합니다.
4. 원격 포워딩으로 SSH 서버 쪽에 19300 을 열어 127.0.0.1:9200 으로 보내고, curl -s http://127.0.0.1:19300/ok 결과를 /root/tun/remote.txt 로 저장하세요.
5. 동적 포워딩(SOCKS)으로 11080 을 열고, 그 프록시를 통해 http://127.0.0.1:9200/ok 를 요청한 결과를 /root/tun/socks.txt 로 저장하세요.
6. 로컬 포워딩 하나를 더 열되 이번에는 모든 주소에 바인딩19201127.0.0.1:9200 으로 보내고, 자기 인터페이스 IP 로 접속한 결과를 /root/tun/gateway.txt 로 저장하세요.
7. 현재 떠 있는 ssh 터널 프로세스들의 커맨드라인을 /root/tun/inventory.txt 로 저장하세요. 최소 4줄(-L 두 개, -R, -D)이 있어야 합니다.
8. /root/tun/report.txt 를 다음 3줄로 만드세요. 각 값은 그 옵션이 포트를 여는 쪽입니다.
L=local / R=remote / D=local

참고

단계 8개

  1. 백엔드 서비스 띄우기
  2. 로컬 포워딩
  3. 터널이 연 포트 확인
  4. 원격 포워딩
  5. SOCKS 프록시
  6. 바깥 주소에 바인딩
  7. 터널 목록 정리
  8. 세 방향 비교표