포트 포워딩을 이용한 방화벽내의 시스템 접근
방화벽내의 시스템 접근
원격지 서버에서 방화벽 내의 시스템에 접근하고자 하는 경우 방화벽내의 시스템에서 우선 다음과 같은 명령어로 원격지로 ssh 연결을 한다.
ssh -N -f -q -R *:5000:localhost:22 123.215.230.170
이 명령은 123.215.230.170으로 ssh 연결을 포트 포워딩 용도로만 연결한다. -N -f -q 옵션은 실제 ssh를 포트 포워딩 용도를 위하여 background로 단순히 수행한다. -R 옵션을 통하여 이 ssh연결은 원격지의 5000 포트를 자신의 호스트의 22번 포트로 연결을 시켜주게 된다.
즉 123.215.230.170 머신의 5000번 포트로 ssh 연결을 하면 방화벽 내의 sshd로 연결이 가능한 것이다. 사용자는 원격지 서버의 ssh를 5000번 포트로 연결하면 방화벽 내의 ssh로 접근이 되는 것이다.
기본적으로 sshd 포트 포워딩은 loopback에 대해서만 가능하기 때문에 원격지의 /etc/ssh/sshd_config에서 다음과 같은 옵션을 제공하여야 한다.
GatewayPorts yes
대부분의 방화벽은 idle한 연결에 대해서는 connection을 끊어 버리므로, 방화벽 내부의 시스템에서 원격지로 ssh를 foreground로 연결한 후, ssh로 연결된 터미널을 간헐적으로 사용하여 끊김 현상을 방지해야 한다. 이를 사용자의 조작없이 ping같은 명령어를 무한 반복시켜서 방화벽에서 idle로 판단하는 경우를 방지하여야 한다. 여기서 ping의 ICMP 패킷에 의해 연결 끊김을 막는다기 보다는 화면상에 주기적으로 출력되는 내용이 방화벽을 타고 패킷이 흘러가는 역할을 담당하는 것이다.