
환경
터미널 서비스 게이트웨이를 정당화하기에는 너무 작은 소규모 기업에서는 특정 사용자가 집에서 Windows 10 데스크톱에 액세스할 수 있기를 원합니다.
나는 이 목적을 위해 Windows 원격 데스크톱을 사용하여 행운을 누렸지만 모범 사례에서는 RDP 포트를 직접 노출하지 않는 것이 좋습니다. 그것은VPN을 통해 RDP를 보호하는 것이 좋습니다그러나 과거에는 일반적으로 이 목적을 위해 SSH 터널을 설정했습니다. 그 이유는 SSH 터널에 더 익숙했기 때문입니다.
클라이언트에 SSH 서버를 실행할 수 있는 컴퓨터가 있다고 가정하고 이를 SSH_SERVER
. 내 경우에는 일반적으로 파일 서버나 방화벽(예: FreeNAS, pfSense) 역할을 하는 Linux 또는 BSD 컴퓨터가 이미 온프레미스에 있습니다. 그렇지 않은 경우 일반적으로 이 작업을 처리하기 위해 특별히 재구축된 PC를 사용합니다.
SSH 포트 전달 버전
이 섹션에는 Windows 원격 데스크톱 액세스가 필요한 클라이언트에 대해 SSH 포트 전달을 설정하는 방법에 대한 세부 정보가 포함되어 있습니다.
- SSH에 대한 키 전용 인증을 설정
SSH_SERVER
하고 방화벽을 열어 일부 비표준 포트인<EXT_SSH_PORT>
. 참고: 이것은오직내가 열어 본 외부 포트,모두네트워크와의 통신은 SSH를 통한 포트 전달을 통해 수행됩니다. - 원격으로 연결하려는 각 클라이언트에 대해
SSH_SERVER
셸을/bin/false
. - 사용자가 연결하려는 포트와 장치에 대해서만 포트 전달을 허용하는 SSH 제한을 추가합니다. 예를 들어 파일에 다음을 추가합니다
/etc/sshd_conf
.
Match User <USERNAME>
AllowAgentForwarding no
PermitOpen <USER'S_WINDOWS_DESKTOP_IP>:3389
ForceCommand echo 'This account is restricted.'
(더 깊은 논의여기).
- 각각장치사용자가 연결하려는 키 쌍을 생성합니다. 이 키 쌍은 사용자에게 제공한 비밀번호로 암호화됩니다. 그런 다음 (a) 사용자
~/.ssh/authorized_keys
파일에 공개 키를 추가하고 (b) 개인 키를 사용자 장치에 안전하게 전송합니다. - 방금 실행되는 간단한 스크립트를 사용하여 SSH 터널을 쉽게 설정하는 방법을 만듭니다.
ssh -L 10000:<USER'S_WINDOWS_DESKTOP_IP>:3389 <OFFICE_EXTERNAL_IP> -p <EXT_SSH_PORT>
나 도우미 소프트웨어(예:맥 OS, 을 위한윈도우). - RDP 세션에 대한 바로가기를
localhost:10000
.
이 방법은 충분히 효과가 있었지만 항상 "전문적"이지 못하다고 느꼈고 언젠가는 이러한 SSH 터널을 VPN으로 전환해야 한다고 생각했습니다.
VPN 제한
저는 L2TP/IPSEC(UniFi Dream Machine에서, 여기의 제한 사항이 라우터에만 국한된 것은 아니라고 생각하지만)를 사용하여 이 문제를 탐색 중이었고 즉시 몇 가지 제한 사항에 직면했습니다.
- 사무실 네트워크에는 클라이언트 서브넷과 다른 IP 서브넷이 있어야 합니다.이것은 약간의 성가심이겠지만, 내가 이것을 할 수 있다고 가정해보자. 반면에 클라이언트가 선택할 서브넷을 선택하기만을 바라고 있다는 점은 다소 불만족스럽습니다.절대우연히 켜져 있습니다. 그들이 다른 회사를 방문하고 Wi-Fi를 사용하고 있는데 우연히 그곳에서 IT 공급업체와 동일한 서브넷을 선택했다면 어떻게 될까요?
- 사용자별로 단일 PC의 단일 포트로 통신을 제한하는 방법이 명확하지 않습니다.VPN 사용자가 별도의 VLAN에 배치되도록 설정한 다음 해당 VLAN에서 특정 RDP 데스크톱의 포트 3389로의 연결을 제한하는 방화벽 규칙을 추가할 수 있지만 그래도 USER_A가 USER_B의 데스크톱에 연결을 시도하는 것을 막지는 못합니다. . 어떤 이유로 RDP 이외의 포트도 열면 모든 VPN 사용자는 이 포트에도 액세스할 수 있습니다.각 사용자그들의소유하다VLAN은 기본적으로 SSH를 통해 이미 "무료"로 제공되는 기능에 대한 추가 관리 오버헤드처럼 보입니다.
- 명확한 장치별 보안이 없습니다.위에서 언급한 SSH 접근 방식을 사용하면 USER_A가 노트북을 도난당하더라도 실제로 걱정할 필요가 없습니다. 우선, 개인 키는 암호화되어 있으므로 사용자가 연결되어 있는 동안 노트북을 도난당하지 않는 한 사무실 네트워크에 액세스할 수 없습니다. 또한 보안을 강화하기 위해 에서 도난당한 노트북과 관련된 키를 제거하면
~/.ssh/authorized_keys
클라이언트가 소유한 다른 모든 장치(예: 개인 데스크톱)는 추가 구성 없이 계속 작동합니다.
핵심요약: SSH 포트 전달을 통해 VPN을 선호하는 이유는 무엇입니까?
VPN이 선호되는 유일한 경우는 VPN을 원할 때인 것 같습니다.모두사무실 네트워크를 통해 통신이 이루어지며 원격 네트워크에 대해 어느 정도 인식/제어할 수 있습니다. (사이트 간 VPN이 이 범주에 속합니다.)
여기서 뭔가 빠졌나요? VPN은 SSH 포트 전달보다 더 나은 성능 및/또는 보안을 제공합니까?
답변1
귀하가 제안한 SSH 솔루션은 당면한 문제에 비해 지나치게 복잡한 것 같습니다.
두 가지 제안:
Duo와 같은 2FA/MFA 솔루션과 함께 VPN을 사용하세요.
VPN에 문제가 있는 경우 Teamviewer, AnyDesk 등과 같은 다른 원격 액세스 솔루션을 Duo와 같은 2FA/MFA 제공업체와 함께 사용하세요.
최대 10명의 사용자가 사용할 수 있는 무료 Duo 계정을 만들 수 있습니다.