커뮤니티 솔루션

CasaOS 또는 ZimaOS에 Apache Guacamole 안전하게 설치하기

A 2023 CasaOS tutorial introduced Apache Guacamole through BigBearCasaOS as a browser gateway for VNC, RDP and SSH.

핵심 정리: 최신 Guacamole은 단일 웹 컨테이너가 아닌 3개 구성 요소로 이루어진 서비스입니다

Apache Guacamole을 사용하면 데스크톱 클라이언트 없이 브라우저에서 RDP, VNC, SSH에 접속할 수 있습니다. 일반적인 프로덕션 스타일 Docker 배포에는 Guacamole 웹 애플리케이션, guacd, 그리고 PostgreSQL 또는 MySQL/MariaDB 같은 데이터베이스가 포함됩니다. 기존의 2023년 BigBearCasaOS 패키지는 아키텍처의 기준이 아니라 과거의 편의 기능으로 간주해야 합니다.

공식 Guacamole 컨테이너 사용

Apache 프로젝트는 지원되는 guacamole/guacamoleguacamole/guacd 이미지를 제공합니다. Guacamole Docker 스택에서 공식 구성을 확인할 수 있습니다. 보다 자세한 Guacamole 설치 방식에서는 실제 배포에서 데이터베이스 인증을 선호하는 이유를 설명합니다.

권장 컨테이너 구성

guacamole-web
    |
    +-- guacd
    |
    +-- postgres or mariadb

세 서비스를 모두 비공개 Docker 네트워크에 배치하세요. 외부에 공개할 것은 Guacamole 웹 엔드포인트뿐입니다. 다른 구성 요소에서 실제로 필요로 하는 경우가 아니라면 데이터베이스나 guacd를 LAN에 공개하지 마세요.

첫 로그인 전에 데이터베이스 초기화

Guacamole의 데이터베이스 인증 확장 기능은 웹 애플리케이션이 사용자와 연결 정보를 저장하기 전에 스키마가 로드되어 있어야 합니다. 사용 중인 Guacamole 버전과 데이터베이스 유형에 정확히 맞는 SQL 초기화 파일을 사용하세요. 데이터베이스 데이터 디렉터리는 영구 저장되도록 설정하세요.

외부에 공개하기 전에 HTTPS 적용

Guacamole은 관리자 비밀번호와 원격 데스크톱 세션을 전달할 수 있으므로 일반 HTTP로 노출하는 것은 안전한 경계가 되기 어렵습니다. HTTPS와 강력한 인증을 지원하는 리버스 프록시를 사용하세요. ZimaOS HTTPS 프록시에서 ZimaOS 리버스 프록시 구성을 확인할 수 있습니다.

인터넷에 공개하는 Guacamole에는 MFA 또는 SSO 사용

Apache Guacamole은 TOTP, OpenID Connect, SAML 및 기타 인증 시스템용 확장 기능을 지원합니다. 원격 데스크톱 액세스는 관리자 기능이므로 짧은 로컬 비밀번호 하나에만 의존하지 말고 그에 맞게 보호하세요.

대신 VM에서 Guacamole을 실행해야 하는 경우

Guacamole을 NAS의 Docker 엔진과 격리하고 싶거나 이미 여러 인프라 서비스를 운영 중이라면, 소규모 Debian/Ubuntu VM을 사용하면 업데이트와 방화벽을 깔끔하게 분리할 수 있습니다. ZimaOS VM 요구 사항에서 이러한 분리에 필요한 호스트 리소스를 확인할 수 있습니다.

ZimaOS 앱 요구 사항은 Guacamole을 데이터베이스, 미디어 서버, 모니터링 서비스와 함께 NAS에서 실행할 때 도움이 됩니다.

데이터베이스와 Guacamole 구성을 별도로 영구 저장

웹 컨테이너를 Guacamole의 상태 저장 부분으로 취급하지 마세요. 사용자 계정, 저장된 연결 정보, 인증 데이터는 데이터베이스에 저장되며, 확장 기능과 사용자 지정 구성은 마운트된 디렉터리에 저장될 수 있습니다. 이미지를 교체하기 전에 이러한 영구 구성 요소를 백업하세요. 컨테이너를 새로 가져오는 작업은 일상적으로 수행할 수 있어야 하며, 모든 원격 연결을 기억에 의존해 다시 구축해서는 안 됩니다.

리버스 프록시에서 WebSocket을 올바르게 설정

Guacamole은 대화형 세션을 위해 장시간 유지되는 브라우저 연결과 WebSocket을 사용합니다. 로그인은 되지만 프록시 뒤에서 원격 데스크톱 연결이 끊기거나 멈추거나 성능이 저하된다면 RDP/VNC 자체를 의심하기 전에 WebSocket 전달과 프록시 타임아웃을 확인하세요. 업데이트할 때마다 콜백 및 브라우저 세션 동작이 바뀌지 않도록 Guacamole 경로 또는 호스트 이름을 일정하게 유지하세요.

Guacamole 액세스와 대상 시스템 자격 증명 분리

Guacamole 로그인은 게이트웨이 진입을 제어하며, Windows/Linux 대상 시스템에는 자체 RDP, VNC 또는 SSH 자격 증명과 정책이 적용됩니다. 어디서나 동일한 관리자 비밀번호를 재사용하지 마세요. 가정이나 팀에서 액세스를 공유할 때는 Guacamole 사용자를 개별적으로 만들고 각 사용자에게 필요한 연결만 허용하세요.

외부에 공개하기 전에 게이트웨이 테스트

공개 DNS를 추가하기 전에 LAN에서 SSH 또는 RDP 연결 하나를 테스트하고, 클립보드와 세션 동작을 확인한 다음 모든 Guacamole 컨테이너를 재시작하고 저장된 연결이 계속 작동하는지 확인하세요. 그런 다음 데이터베이스 백업과 복원을 테스트하세요. 컨테이너를 다시 생성해도 정상적으로 작동하는 게이트웨이가 다음 이미지 업데이트 전까지만 작동하는 게이트웨이보다 유지 관리 가능한 배포에 훨씬 가깝습니다.

FAQ

Guacamole에 데스크톱 클라이언트가 필요한가요?

아니요. 사용자는 웹 브라우저로 연결하며, Guacamole은 브라우저 트래픽을 RDP, VNC 또는 SSH 세션으로 변환합니다.

Guacamole에 데이터베이스가 필요한가요?

프로덕션 스타일의 사용자 및 연결 관리를 위해서는 필요합니다. 간단한 XML 인증 방식은 주로 기본 테스트에 적합합니다.

guacd를 인터넷에 공개해야 하나요?

아니요. Guacamole 웹 애플리케이션 뒤에서 guacd를 비공개로 유지하세요.

Guacamole이 VPN을 대체할 수 있나요?

구성된 원격 데스크톱에 브라우저로 액세스할 수는 있지만, 모든 서비스를 위한 일반적인 사설 네트워크 터널은 아닙니다.

PostgreSQL 대신 MariaDB를 사용할 수 있나요?

예. 지원되는 데이터베이스 인증 옵션에는 해당 확장 기능과 스키마로 구성한 MySQL 호환 데이터베이스 및 PostgreSQL이 포함됩니다.