이러한 방화벽 규칙에 SSH를 사용할 수 없는 이유는 무엇입니까?

이러한 방화벽 규칙에 SSH를 사용할 수 없는 이유는 무엇입니까?

현재 Windows 10 호스트에서 SSH를 통해 Linux Mint 게스트에 연결하려고 합니다. 더 정확하게 말하자면, 특정 방화벽 규칙을 염두에 두고 게스트에 성공적으로 연결하려고 합니다.

Virtual Box를 사용하여 Linux Mint 가상 머신용 호스트 전용 어댑터를 활성화했습니다.

특정 모든 허용 규칙을 사용하여 방화벽을 통해 포트 22를 통해 모든 트래픽을 허용하면 Windows 호스트에서 SSH를 사용하여 게스트 컴퓨터에 성공적으로 연결할 수 있습니다.

그러나 나는 Linux 게스트가오직수용하다나의SSH용 IP. 즉, 포트 22에 대해서만 내 IP만 허용하기를 원합니다(해당되는 경우).

나는 이러한 규칙으로 Linux 방화벽을 구성했고할 수 없었다그런 다음 성공적으로 연결한 후:

GUEST IP 22/tcp ALLOW IN HOST IP 22/tcp

HOST IP 22/tcp ALLOW OUT GUEST IP 22/tcp

참고: 'GUEST IP' 및 'HOST IP'라는 용어는 상황에 따라 연관 IP 주소에 대한 간단한 자리 표시자입니다. 이 경우 GUEST IP는 eth1 인터페이스의 호스트 전용 어댑터 IP 주소입니다. 말할 필요도 없이 HOST IP는 내 Windows 10 호스트에서 발견된 호스트 IP 주소를 나타냅니다.

나는 그것이 작동할 수 있도록 최선을 다했지만, 솔직히 이 시점에서 내가 요청하는 것을 어떻게 얻을 수 있는지 모르겠습니다.

내 현재 설정:

  • MobaXtrem SSH 클라이언트 및 FreeSSHd SSH 서버가 있는 Windows 10(호스트)
  • openSSH 클라이언트 및 서버가 포함된 Linux Mint 17(게스트)
  • Windows 방화벽을 전혀 건드리지 않았습니다.
  • 현재 Linux 방화벽이 삭제되도록 설정되어 있지만 언급된 규칙에 추가되었습니다.

Linux/Unix 기반 시스템에 대한 나의 경험은 다음과 같습니다.매우쉘, SSH 사용 및 방화벽 구성으로 인해 제한됩니다.

나는 말 그대로 하루 전에 언급된 SSH 소프트웨어를 설치했습니다.

TL;DR:내 Linux 게스트가 내 호스트 컴퓨터의 SSH 트래픽만 허용하도록 구성하고 싶습니다. IP를 통해 이 작업이 수행된다고 가정하고 있지만 어떻게 해야 할지 모르겠습니다. 위의 방화벽 규칙을 Linux 게스트에 추가한 후 더 이상 연결이 성공하지 못하고 모든 시도가 시간 초과되었습니다.

추가 정보: - 포트 포워딩에 대해 언급하는 사람들을 본 적이 있습니다. 나는 그것을 시도했지만 작동하지 않았습니다. 호스트 전용 어댑터를 사용하여 작동하게 할 수 있었던 방법을 살펴보면 해당 솔루션이 없어도 괜찮을 것이라고 생각했습니다.

여담으로, SSH를 사용하여 Linux 게스트를 통해 Windows 호스트에 연결할 수 있습니까? Linux 터미널에서 해당 작업을 시도했지만 계속해서 그렇게 할 수 있는 권한이 없다는 메시지가 표시되었습니다.

설명이나 추가 정보가 필요하면 언제든지 문의해 주세요.

미리 감사드립니다!

- TRG

답변1

TCP 연결에는 소스와 대상이라는 두 개의 포트가 있습니다. 나가는 SSH 연결의 경우 대상 포트는 22이지만 원본 포트는무작위로 선택. (BGP와 같은 극히 소수의 프로토콜만이 동일한 소스 및 대상 포트를 사용합니다.)

따라서 다음과 같이 규칙을 완화해야 합니다.

allow incoming from hostIP (any)/tcp to guestIP 22/tcp
allow outgoing from guestIP 22/tcp to hostIP (any)/tcp

걱정되는 부분이 있다면손님호스트에 다시 연결하면 다음을 사용하는 한 두 번째 규칙을 제거할 수 있습니다.상태 저장방화벽(기존 연결에 속하는 나가는 패킷을 허용함)

iptables에서 작동하는 규칙 세트는 다음과 같습니다.

-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -j REJECT

# (Well, *I think* this should work.)
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -j REJECT

("ICMP 허용"이 포함되었습니다. 왜냐하면솔직히)

관련 정보