![](https://seokwoo.kim/wp-content/uploads/2022/01/guacamole-test-connected.jpg)
RDP over HTTP with Apache Guacamole
원격으로 접속해서 작업을 하거나 개발을 하는 환경 구성이 많아지는 원격 근무, 재택근무의 시대 입니다.
그러다 보니 기업들은 보안에 더욱 신경을 쓰게 되고 제약 사항들이 하나 둘씩 늘어나고 있습니다.
원격으로 보안 문서를 볼수 있는 환경의 VM을 제공하는데 사용할수 있는 프로토콜은 HTTP, HTTPS 가 대표적 입니다.
Windows RD Gateway를 쓸까 하다가 이건 Manual 읽어보려고 해도 양만 많고 정리도 안되고 뭔가 할일이 많으것 같습니다. 그래서 Apache Guacamole을 이용하여 RDP to HTTP 를 서비스 하기로 결정 초고속으로 설정에 들어갑니다.
Apache Guacamole은 오픈 소스 클라이언트리스 원격 데스크톱 게이트웨이입니다. VNC, RDP, SSH 및 Telnet과 같은 프로토콜을 통해 원격 데스크톱 및 애플리케이션에 액세스하기 위한 웹 기반 인터페이스를 제공합니다. Guacamole을 사용하면 사용자는 추가 소프트웨어나 플러그인 없이도 웹 브라우저가 있는 모든 장치에서 데스크톱 환경과 응용 프로그램에 액세스할 수 있습니다.
다음은 Apache Guacamole의 몇 가지 주요 기능입니다.
- 클라이언트리스 액세스: Guacamole은 사용자 장치에 특수 클라이언트 소프트웨어를 설치할 필요가 없습니다. HTML5 및 JavaScript와 같은 표준 웹 기술을 사용하여 브라우저 기반 인터페이스를 제공합니다.
- 프로토콜 지원: Guacamole은 VNC(Virtual Network Computing), RDP(Remote Desktop Protocol), SSH(Secure Shell) 및 Telnet을 포함한 다양한 원격 데스크톱 프로토콜을 지원합니다. 이를 통해 사용자는 다양한 장치 및 시스템에 연결할 수 있습니다.
- 플랫폼 간 호환성: Guacamole은 플랫폼 독립적으로 설계되어 사용자가 Windows, macOS, Linux 및 모바일 장치와 같은 다양한 운영 체제에서 원격 데스크톱 및 애플리케이션에 액세스할 수 있습니다.
- 중앙 집중식 관리: Guacamole은 관리자가 연결, 사용자 계정 및 권한을 구성하고 관리할 수 있는 중앙 관리 인터페이스를 제공합니다. 이는 원격 액세스 시스템의 관리 및 유지 관리를 단순화합니다.
- 보안 기능: Guacamole은 통신 채널 암호화, 사용자 인증 및 액세스 제어를 포함하여 원격 액세스 세션을 보호하기 위한 보안 조치를 구현합니다. 또한 LDAP 및 Active Directory와 같은 외부 인증 시스템과의 통합을 지원합니다.
- 확장성: Guacamole은 확장성이 뛰어나며 특정 요구 사항을 충족하도록 사용자 지정할 수 있습니다. 다른 시스템과의 통합, 사용자 지정 인증 방법 추가 및 기능 확장을 위한 API 및 확장 지점을 제공합니다.
Apache Guacamole 의 동작 구조는 다음과 같습니다.
![](https://www.seokwoo.kim/wp-content/uploads/2022/01/guacamole_figure_1.png)
설치 방법은 Document Page에 자세히 나와 있으므로 순서대로 진행을 하면 됩니다.
https://guacamole.apache.org/doc/gug/index.html#
![](https://www.seokwoo.kim/wp-content/uploads/2022/01/화면-캡처-2022-01-30-133557-1024x565.png)
또는 GitHub에 올라와 있는 Script를 이용하여 설치를 하는 방법도 있습니다.
https://github.com/MysticRyuujin/guac-install
![](https://www.seokwoo.kim/wp-content/uploads/2022/01/guac-install-1024x512.png)
Apache Guacamole은 Tomcat9을 사용하는데 설치이후 몇가지 설정만 수정해주면 원하는대로 사용이 가능합니다.
1) Tomcat9 은 기본 동작 Port가 8080 이므로 80으로 변경해 줍니다.
/tomcat9/conf/server.xml 의 중간 부분의 <Connector port=”8080″ 의 Port 번호 수정
2) ROOT 디렉토리 설정
docBase= 의 값을 변경해 줍니다.
/var/lib/tomcat9/conf/server.xml
<br><em><!-- 중략 --></em>
<br><Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
<br><em><!-- 중략 --></em>
<br><Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployIgnore=".*">
<br> <em><!-- 중략 --></em>
<br><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <Context path="" docBase="[YOUR_DIR_NAME]" reloadable="true"/> </Host>
설정 값을 변경하고 tomcat을 재시작, 해당 서버에 접속해서 login 화면이 정상적으로 나오는지 확인 합니다.
![](https://www.seokwoo.kim/wp-content/uploads/2022/01/화면-캡처-2022-01-30-145926.png)
접속후 SETTINGS 페이지에서 Users 에 사용자 등록, Connections에 연결할 대상에 대한 정보를 추가하여 사용을 하면 됩니다.
Windows RDP를 연결하는 경우 연결대상의 User가 당연히 Windows RDP 사용가능으로 등록이 되어 있어야 합니다.
![](https://www.seokwoo.kim/wp-content/uploads/2022/01/화면-캡처-2022-01-30-150326-906x1024.png)
![](https://www.seokwoo.kim/wp-content/uploads/2022/01/guacamole-test-connected-1024x480.jpg)