김현우
  • 리눅스 한 학기 살기 - 3주차
    2025년 04월 01일 00시 05분 45초에 업로드 된 글입니다.
    작성자: kugorang
    728x90

    들어가며

    xrdp 대신 grdctl 씁시다!

    이번 주차는 본격적으로 거실에 있는 라즈베리파이를 창고로 옮기는 작업을 진행했다. 결론부터 말하자면, Windows와 macOS에서 라즈베리파이에 올라가 있는 Ubuntu Desktop에 GUI 원격을 붙는데 성공했다.

     

    우선 아래 가이드대로 Ubuntu 24.04에 내장된 RDP 프로토콜을 사용하여 문제를 해결하려 시도했다. 하나 좋았던 점은, 더 이상 xrdp 패키지가 필요하지 않았다는 점이다.

     

    Ubuntu 24.04와 통합 원격 데스크톱 방식

    Ubuntu 24.04 LTS에서 RDP (Remote Desktop Protocol, 원격 데스크톱 프로토콜)를 사용하는 것이 가장 권장된다. RDP는 Windows의 기본 원격 접속 방식이며, Ubuntu 24.04에 내장된 GNOME 원격 데스크톱 서비스도 RDP를 지원한다.[^1] 이 방식은 Windows, macOS, Ubuntu 등 모든 운영체제에서 호환되며 하나의 통일된 프로토콜로 접속할 수 있다. Ubuntu 24.04의 GNOME 원격 데스크톱은 Wayland 세션에서도 동작하도록 설계되어 최신 Ubuntu 환경과 호환된다.[^2] (Ubuntu 24.04 데스크톱은 기본으로 Wayland를 사용하지만, GNOME 원격 데스크톱은 PipeWire 등을 통해 화면 공유를 처리하여 Wayland에서도 문제없이 작동한다.) RDP는 세션 전체가 암호화되므로, 기본적으로 암호화되지 않은 VNC보다 보안 면에서 유리하다.[^3]

     

    참고: Ubuntu 24.04에서는 "데스크톱 공유(Desktop Sharing)""원격 로그인(Remote Login)" 두 가지 원격 데스크톱 옵션을 제공한다. 두 옵션 모두 RDP 프로토콜을 사용하지만 목적이 다르다.[^1] Desktop Sharing은 현재 로그인된 사용자 세션을 원격으로 공유하는 기능이고, Remote Login은 로그인 화면을 통해 원격으로 새 세션을 시작하는 기능이다. Windows의 RDP처럼 하나로 통합되어 있지 않고 별도로 제공되며, 동시에 활성화하면 Desktop Sharing 쪽 포트가 3390으로 변경된다 (기본 RDP 포트 3389와 충돌 방지).[^1] 일반적으로 서버 환경에서는 원격 로그인 기능(3389 포트)을 사용해야, 재부팅 후나 사용자가 현지에 없을 때도 접속할 수 있다.[^1] (Desktop Sharing만 켜 두면 사용자가 로그아웃되거나 재부팅된 경우 원격 접속이 불가능하니 주의해야 한다.)

     

    Ubuntu 24.04 LTS 서버 측 설정

    먼저 서버(Ubuntu 24.04)에 그래픽 UI 환경이 준비되어 있는지 확인한다. Ubuntu Server 기본 설치에는 GUI가 없으므로, GNOME 데스크톱 환경을 설치해야 원격 데스크톱을 사용할 수 있다. 만약 이미 Ubuntu Desktop 버전을 설치했다면 해당 단계는 넘어가도 된다.

    • 그래픽 환경 설치: 서버에 GUI가 없다면, SSH 등으로 접속하여 다음을 실행한다:위 명령은 GNOME 기반의 Ubuntu 데스크톱 환경과 필요 패키지를 설치한다. 설치 후 reboot하여 GUI 세션을 시작한다. (Ubuntu 24.04는 기본 Display Server로 Wayland를 사용한다. GNOME 데스크톱은 Wayland를 기본 지원하며, 필요 시 Xorg 세션으로 전환도 가능하다.)
    • sudo apt update sudo apt install ubuntu-desktop
    • GNOME 원격 데스크톱 패키지: Ubuntu 24.04 Desktop 환경에는 gnome-remote-desktop 서비스가 기본 포함되어 있다. (gnome-remote-desktop은 GNOME의 원격 데스크톱 구현으로 RDP/VNC를 제공하는 서비스이다.) 그래도 확인을 원한다면 터미널에서 apt list --installed | grep gnome-remote-desktop로 설치 여부를 점검한다. 설치되어 있지 않다면 sudo apt install gnome-remote-desktop로 수동 설치가 가능하다.

     

    원격 데스크톱 활성화 – GUI 방법

    Ubuntu 24.04 GNOME에서 제공하는 설정 GUI를 통해 쉽게 RDP 원격 접속을 활성화할 수 있다.

    1. 설정 열기: Ubuntu에서 Settings(설정) 앱을 연다. 왼쪽 사이드바에서 "System(시스템)" 섹션을 클릭한 다음, 오른쪽 패널에서 "Remote Desktop(원격 데스크톱)"을 선택한다.[^1]
    2. Desktop Sharing vs Remote Login: Remote Desktop 설정 화면에는 상단에 Desktop SharingRemote Login 두 개의 탭이 있다. 여기서는 서버에 사용자가 직접 로그인하지 않아도 접속할 수 있도록 Remote Login 탭을 설정한다. (이미 언급한 대로, Remote Login은 로그인 화면을 통해 새 세션을 시작하는 모드이다.)
    3. 설정 변경 모드 진입: Remote Login 설정을 변경하려면 우측 상단의 Unlock(잠금 해제) 버튼을 눌러 관리자 권한을 획득한다. 클릭 후 현재 사용자 비밀번호를 입력하면 옵션을 수정할 수 있다.[^2]
    4. 원격 로그인 활성화: "Remote Login" 토글 스위치를 OFF에서 ON으로 켠다. 켜면 아래에 "Login Details(로그인 정보)" 섹션이 나타난다.[^2]
    5. 연결 자격 증명 설정: Login Details에서 원격 RDP 접속에 사용할 별도의 계정 정보를 입력한다. Login(로그인)에는 식별자(영문 추천)를, Password(암호)에는 강력한 비밀번호를 지정해야 한다.[^2] 이 정보는 RDP 클라이언트가 초기에 접속할 때 인증하는 용도로 쓰인다. (예를 들어 Windows RDP 클라이언트에서 이 Login/Password를 묻는다. 이후 실제 Ubuntu 사용자 계정으로 로그인하는 단계가 따로 진행된다.) 만약 별도의 Login을 지정하지 않으면, 기본값으로 현재 Ubuntu 사용자명이 사용되고 임의 생성된 암호가 할당된다.[^2] 자신이 기억할 수 있도록 직접 설정하는 것을 권장한다.
    6. 설정 적용: 설정을 마쳤으면 창을 닫고 한번 시스템을 재부팅한다. (재부팅하면 Remote Login용 gnome-remote-desktop 시스템 서비스가 활성화되어 3389 포트를 리스닝하게 된다.[^2]) 재부팅 후, 터미널에서 sudo systemctl status gnome-remote-desktop 명령으로 서비스 상태를 확인해볼 수 있다. active (running) 상태로 표시되면 정상적으로 원격 데스크톱 서비스가 구동 중이다.[^2]

     

    주의: Desktop Sharing 모드도 함께 사용하고 싶다면, 앞의 Remote Login을 켜둔 상태에서 Desktop Sharing 탭으로 이동해 Desktop Sharing 스위치를 켤 수 있다. 이때 Desktop Sharing 서비스는 포트 3390을 사용하게 된다.[^1] 반대로 Remote Login을 끄고 Desktop Sharing만 켜면 Desktop Sharing이 3389 포트를 사용한다. 두 서비스를 동시에 켜는 경우 포트 번호가 변경되는 점을 유의해야 한다. 본 가이드에서는 서버 운용상의 편의를 위해 Remote Login만 활성화하여 기본 RDP 포트(3389)를 사용하는 것을 기준으로 설명한다.

     

    원격 데스크톱 활성화 – CLI 방법 (대안)

    만약 GUI 환경에 직접 접근할 수 없거나 원격에서 SSH를 통해 설정해야 한다면, 터미널 명령으로 RDP 서비스를 활성화할 수 있다. Ubuntu 24.04에는 이를 위한 grdctl (GNOME Remote Desktop Control)이라는 명령줄 도구가 제공된다.[^5] 다음 단계를 따라 설정한다.

    1. 사용자 세션에서 DBus 활성화: 원격 데스크톱 설정은 GUI 사용자의 DBus 세션에서 이뤄진다. SSH로 접속한 경우 gnome-shell이 실행 중인 사용자의 DBus에 접근해야 한다. 일반적으로 ssh -X 또는 sudo -u <사용자> DBUS_SESSION_BUS_ADDRESS=... 등의 방법이 필요할 수 있지만, Ubuntu 24.04에서는 편의를 위해 grdctl이 이러한 부분을 추상화한다. 우선 SSH로 원격 서버에 로그인한 사용자 계정이 데스크톱 사용자와 동일하도록 해야 한다 (예: GUI로 로그인할 계정으로 SSH 로그인).
    2. RDP 백엔드 활성화: 다음 명령으로 RDP 서비스를 활성화한다:이 명령은 GNOME 원격 데스크톱의 RDP 백엔드를 켜는 것으로, Desktop Sharing 모드의 RDP를 활성화한다.[^5] (Headless 서버의 경우 Remote Login용 시스템 서비스도 자동 활성화된다. 혹시 grdctl 사용에 문제가 있다면 sudo systemctl enable --now gnome-remote-desktop.service로 시스템 서비스를 직접 시작할 수도 있다.)
    3. grdctl rdp enable
    4. 자격 증명 설정: 원격 접속시 사용할 로그인 이름과 비밀번호를 설정한다:<원격로그인ID>는 임의로 정할 수 있는 접속용 계정명이고, <원격로그인암호>는 원격 접속 비밀번호이다. 이 정보는 앞서 GUI 방법의 _Login Details_에서 설정한 것과 같은 역할을 한다.[^5] 반드시 강력한 암호를 지정하고 기억해두어야 한다. (비밀번호는 시스템 사용자 암호와 달리 GNOME이 별도 저장소에 암호화하여 보관한다.)
    5. grdctl rdp set-credentials <원격로그인ID> <원격로그인암호>
    6. 입력 허용 모드 확인: 기본적으로 RDP는 완전 제어(access) 모드이다. 혹시 "view-only" (보기 전용)로 설정되어 있을 경우 입력이 막히니, 이를 해제한다:이 명령으로 원격 제어(키보드/마우스 입력)를 허용한다.[^5] (별도로 view-only를 활성화하지 않았다면 기본적으로 원격 제어가 가능하므로 이 단계는 단순 확인 차원이다.)
    7. grdctl rdp disable-view-only
    8. 서비스 시작 확인: 설정 후 원격 데스크톱 서비스를 시작(또는 재시작)한다:그리고 systemctl --user status gnome-remote-desktop로 사용자 세션에서 서비스가 정상 실행 중인지 확인한다. 만약 headless 환경이라면 sudo systemctl status gnome-remote-desktop로 시스템 서비스 상태를 확인한다. 서비스가 active 상태라면 설정 완료이다.
    9. systemctl --user restart gnome-remote-desktop

    이제 Ubuntu 서버 측 준비는 완료되었다. Ubuntu 24.04의 GNOME 원격 데스크톱(RDP)이 3389번 포트에서 클라이언트 연결을 대기하고 있을 것이다 (Remote Login 사용 시).[^2] 다음으로 각 운영체제별 클라이언트에서 접속하는 방법을 알아본다.

     

    클라이언트별 접속 방법 (Windows, macOS, Ubuntu)

    이제 Windows, macOS, Ubuntu 클라이언트에서 RDP 방식으로 Ubuntu 24.04 서버에 접속할 수 있다. 앞에서 설정한 서버의 IP 주소포트 (기본 3389), 그리고 원격 로그인 자격 증명(로그인ID/암호) 정보를 준비해야 한다.

     

    각 OS별 사용 방법은 다음과 같다.

    • Windows 클라이언트: Windows에는 원격 데스크톱 연결 (Remote Desktop Connection) 애플리케이션이 기본 내장되어 있다. 시작 메뉴에서 "원격 데스크톱 연결"을 실행한 뒤, 컴퓨터 이름에 서버IP주소:3389 형태로 입력한다. 연결을 시도하면 자격 증명을 묻는데, 앞서 서버에 설정한 원격 로그인 ID암호를 입력한다. 보안 인증 경고가 나오면 "Yes(예)"를 눌러 진행한다. 첫 인증이 성공하면 Ubuntu 서버의 로그인 화면이 나타난다.[^2] 여기서 원격으로 접속하려는 Ubuntu 사용자 계정을 선택하고 그 계정의 리눅스 암호를 입력하면 최종적으로 Ubuntu 데스크톱 화면에 접속된다.[^2] 이제 Windows에서 Ubuntu GUI를 제어할 수 있다.
    • macOS 클라이언트: Mac에서는 Microsoft Remote Desktop 앱을 통해 RDP 접속이 가능하다. App Store에서 해당 앱을 무료로 설치한 후 실행한다. Add PC 기능을 사용해 새 RDP 접속을 설정한다. PC Name(또는 Host)에 서버IP주소:3389를 입력하고, Credentials(자격 증명)에 앞서 설정한 원격 로그인 ID/암호를 입력하거나 매 연결 시 묻기(prompt)로 둔다. 설정을 저장하고 더블클릭하여 연결하면 자격 증명을 물을 수 있으니 동일하게 입력한다. 그러면 Ubuntu 서버의 GUI 로그인 화면이 나타나며, Ubuntu 사용자 계정과 암호를 입력하여 로그인한다. macOS에서도 이제 Ubuntu의 바탕화면을 볼 수 있다. (Microsoft Remote Desktop은 폴더 공유, 해상도 조정 등 부가 설정도 가능하니 필요에 따라 조정할 수 있다.)
    • Ubuntu/Linux 클라이언트: Ubuntu 데스크톱이나 기타 리눅스에서는 Remmina와 같은 RDP 클라이언트를 사용할 수 있다. Ubuntu 24.04에는 기본 "연결(Connections)" 앱이 제공되며, 이를 사용해도 좋다.[^2] Remmina를 사용하려면 sudo apt install remmina remmina-plugin-rdp로 설치한 후, Remmina를 실행하여 새 RDP 연결 프로파일을 만든다. 서버 주소에 서버IP주소:3389를 입력하고, 사용자 이름과 비밀번호에 원격 로그인 ID/암호를 입력한 뒤 저장/연결한다. 연결 후 나타나는 Ubuntu 로그인 화면에서 계정 암호를 입력해 접속을 완료한다.
      • CLI 도구: GUI 환경 없이 Linux에서 접속하려면 FreeRDPxfreerdp 명령을 사용할 수도 있다. 예를 들어:위와 같이 실행하면 터미널 상에서 RDP 세션이 열리며 GUI 로그인 화면으로 이어진다. (FreeRDP 사용 시 추가 옵션으로 /dynamic-resolution 등을 주면 창 크기에 따라 해상도가 변경되는 등 편의 기능을 활용할 수 있다.)
      • xfreerdp /v:서버IP주소:3389 /u:<원격로그인ID> /p:<원격로그인암호>

     

    연결 팁: 서버가 로컬 네트워크에 있고 클라이언트도 같은 네트워크에 있다면 서버IP주소로 사설 IP (예: 192.168.x.x)을 사용하면 된다.[^2] 만약 원격 인터넷을 통해 연결한다면, 서버 쪽 라우터에서 포트 포워딩을 설정하여 외부에서 공인IP:3389로 접속하거나, 보다 안전하게 VPN을 통해 사설망으로 접속해야 한다 (아래 VPN 섹션 참조). 또한 클라이언트에서 접속 시 포트 번호를 명시적으로 지정해야 올바른 서비스에 연결된다. (Remote Login 모드 기본 3389, Desktop Sharing 모드 3390 등의 포트 구분을 기억해야 한다.)

     

    VPN 사용 여부 및 설정 (보안 접속 옵션)

    원격 데스크톱을 인터넷을 통해 접속해야 하는 경우, VPN(Virtual Private Network)의 사용을 강력히 권장한다. VPN을 사용하면 클라이언트가 마치 내부 네트워크에 있는 것처럼 안전한 터널을 통해 접속하여, RDP 포트가 공용 인터넷에 직접 노출되지 않게 된다.[^4] 직접 RDP 포트를 개방하면 전 세계 누구나 해당 포트로 접속을 시도할 수 있고, RDP 자체도 복잡한 서비스이므로 공격 표면이 넓어진다.[^4] VPN을 선행 연결하도록 요구함으로써, 미인가 사용자는 아예 RDP 포트에 접근할 수 없고 VPN 인증을 통과한 신뢰된 사용자만 내부에서 RDP 접속을 시도하게 된다.[^4] 이는 RDP 서비스 앞에 보안 장벽을 하나 더 두는 효과가 있다.

    • VPN의 필요성: RDP 프로토콜 자체도 암호화되어 있지만,[^3] 네트워크 레벨에서 포트가 공개되어 있으면 끊임없이 무차별 대입 공격이나 취약점 스캔의 대상이 될 수 있다. VPN을 사용하면 원격 사용자는 우선 VPN으로 내부망에 접속해야 하므로, RDP 서비스는 외부에 드러나지 않고 차단된 상태로 유지된다.[^4] 또한 VPN 자체는 원격 접속용으로 설계되어 비교적 공격에 견고하며, 한 점만 방어하면 되기 때문에 보안 관리 부담이 줄어든다.[^4]
    • VPN 방식 선택: 구현 방법으로는 회사/기관 제공 VPN이나 클라우드 VPN, 혹은 직접 OpenVPN, WireGuard 등을 서버에 구성하는 방법이 있다. 예를 들어, Ubuntu 서버에 WireGuard를 설치하여 VPN 서버로 만들고, 클라이언트들에 WireGuard 클라이언트를 설정해 접속할 수 있다. 이렇게 하면 클라이언트는 Ubuntu 서버의 내부 IP를 통해 RDP로 연결한다. (이 가이드 범위를 넘어서는 상세 설정은 생략하지만, Ubuntu에서 VPN 구성은 비교적 간단하며 많은 튜토리얼이 있다.)
    • 간단한 VPN 설정 소개: 만약 간단히 VPN을 구성하려면, 프라이버시를 위해 UFW로 RDP 포트를 로컬 네트워크에만 허용하고 외부에서는 VPN으로만 접속하도록 설정할 수 있다.[^3] 예를 들어 프리미어 DNS나 Cloudflare Teams 같은 서비스를 활용한 클라우드 VPN도 고려할 수 있다. 핵심은, RDP 포트를 인터넷에 직접 열지 않는 것이 안전상 중요하다. 가능하면 "VPN 연결 -> RDP 접속"의 2단계로 운영해야 한다.

     

    추가 보안: VPN이 어렵다면 차선책으로 SSH 터널링을 이용할 수도 있다. SSH로 서버에 접속하면서 -L 3389:localhost:3389 같은 포워딩을 설정해 로컬 PC의 포트 3389를 서버의 RDP 포트와 연결하고, 클라이언트에서는 localhost:3389로 RDP를 여는 방식이다. 이 경우 SSH 인증이 하나의 차단막이 되어 VPN과 유사한 보호를 얻을 수 있다. (물론 이 방법을 쓰려면 서버 SSH 포트는 열려 있어야 한다.)

     

    방화벽 설정 (UFW/iptables)으로 접근 제어

    Ubuntu 서버의 방화벽 설정을 통해 원격 데스크톱 포트에 대한 접근을 적절히 제한해야 한다. 기본 RDP 포트 3389는 매우 잘 알려져 있어, 방화벽이 열려 있으면 수많은 접속 시도가 생길 수 있다. Ubuntu에서는 UFW(Uncomplicated Firewall)를 사용하거나, 직접 iptables 규칙을 설정할 수 있다.

    • UFW를 사용하는 경우: UFW가 설치되고 활성화되어 있다고 가정한다 (sudo ufw status로 확인). RDP 서비스를 허용하려면 다음 명령을 실행한다:이 명령은 기본적으로 모든 IP로부터의 TCP 3389 포트 접근을 허용한다. 보다 안전하게 구성하려면, 특정 신뢰 IP나 대역만 허용하도록 지정할 수 있다: 예) sudo ufw allow from 192.168.0.0/24 to any port 3389 (해당 내부망 대역만 허용) 또는 sudo ufw allow from <클라이언트공인IP> to any port 3389 (특정 외부 IP만 허용).
      설정 변경 후 sudo ufw reload로 규칙을 적용하고, sudo ufw status numbered로 규칙 목록을 확인한다.
    • sudo ufw allow 3389/tcp
    • iptables를 사용하는 경우: UFW를 쓰지 않는 환경이라면 iptables로 규칙을 추가해야 한다. 예를 들어 기본 정책이 DROP이라면:등을 적용할 수 있다. (또한 특정 소스 IP만 허용하려면 -s <IP주소> 조건을 추가한다.) iptables 규칙은 서버 재부팅 시 사라지므로, 영구 적용을 위해서는 iptables-persistent 패키지 등을 이용하거나 UFW에 규칙을 저장하는 것이 좋다.
    • sudo iptables -A INPUT -p tcp --dport 3389 -m state --state NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 3389 -m state --state ESTABLISHED -j ACCEPT
    • Desktop Sharing(3390포트) 사용하는 경우: 만약 앞서 Desktop Sharing 모드(포트 3390)를 활성화했다면 해당 포트도 동일한 방식으로 열어주어야 한다: sudo ufw allow 3390/tcp. 그러나 일반적으로 Remote Login만 쓴다면 3389만 열면 된다.

     

    방화벽 추가 팁: 원격에서 설정을 적용할 때는 자신의 SSH 세션이 끊기지 않도록 주의해야 한다. 예를 들어 UFW를 활성화(sudo ufw enable)하거나 iptables 정책을 엄격히 적용할 때 SSH(기본 22번 포트) 트래픽이 막히면 서버에 접속할 수 없게 된다. 규칙 적용 전에 sudo ufw allow 22/tcp 등으로 SSH 포트를 미리 허용해야 한다. 또한 방화벽 설정 후 다른 네트워크에서 3389 포트에 접근하여 연결이 성공하는지 테스트하는 것이 좋다.

     

    보안 권장 사항 (Security Best Practices)

    원격 데스크톱 서비스를 안전하게 운영하기 위해 다음과 같은 보안 수칙을 따르는 것이 좋다:

    • 강력한 암호 사용: 원격 데스크톱의 인증에는 두 단계(원격 로그인 자격 증명 + Ubuntu 사용자 계정 암호)가 있다. 두 암호 모두 추측이 어렵도록 충분히 긴 복잡한 암호를 사용해야 한다.[^3] 특히 원격 로그인용 암호는 외부에 직접 노출되는 1차 방어선이므로 절대 단순한 문자열을 쓰지 않는다. 또한 주기적으로 암호를 변경하면 안전성을 높일 수 있다.
    • 불필요시 서비스 비활성화: 원격 데스크톱이 필요하지 않은 시간대나 상황에는 서비스를 꺼두는 것이 안전하다. 예를 들어 평소에는 grdctl rdp disable로 비활성화하거나, UFW 규칙을 일시적으로 제거/비활성화하여 포트를 막아둘 수 있다. 사용 시에만 열어 두는 일시적 접근 원칙이 위험 노출을 줄여준다.
    • 최신 업데이트 적용: Ubuntu 24.04 및 GNOME 원격 데스크톱 관련 패키지의 최신 보안 업데이트를 항상 적용해야 한다. RDP 클라이언트(Windows, macOS의 MS RDP 앱 등)도 최신 버전을 사용해야 한다.[^3] 업데이트를 통해 알려진 취약점들이 보완되므로, 서버와 클라이언트 모두 주기적으로 패치하는 것이 중요하다.
    • 방화벽으로 접근 제한: 앞서 언급한 대로, 가능하면 신뢰할 수 있는 IP만 RDP 포트를 허용하고 나머지는 차단해야 한다.[^3] 회사 내부망에서만 쓰거나, 본인 VPN IP만 허용하는 식으로 접근 대상을 제한하면 공격 위험이 크게 줄어든다. 또 클라우드 환경에서는 보안 그룹(Security Group) 기능으로 3389 포트를 특정 IP에만 열도록 설정할 수 있다.
    • 로그 및 모니터링: 원격 데스크톱 접속 시도에 대한 로그를 모니터링해야 한다. Ubuntu의 /var/log/syslogjournalctl에 RDP 관련 로그인 실패 기록이 남을 수 있다. 반복적인 로그인 실패 IP가 보이면 방화벽으로 차단하거나 fail2ban 같은 도구를 활용해 자동 차단을 설정할 수 있다. 이는 무차별 공격으로부터 서버를 보호한다.
    • 추가 인증 계층: 가능하다면 RDP 접속에도 이중 인증(2FA)을 적용하는 것을 고려해보아야 한다.[^3] 예를 들어, VPN 자체에 2FA를 적용하거나, Windows RDP의 Network Level Authentication과 연계하여 인증서를 사용하는 방법 등이 있다. Ubuntu GNOME 원격 데스크톱 자체는 2FA를 내장하고 있지 않지만, 앞단의 VPN/SSH에 2FA를 적용하는 방식으로 보완할 수 있다.
    • 암호화 설정: RDP 프로토콜은 기본적으로 TLS 암호화를 사용하지만, 자체 서명된 인증서를 이용하므로 클라이언트에서 경고가 나타날 수 있다. 생산 환경이라면 신뢰할 수 있는 SSL 인증서를 RDP 서비스에 설정하는 것도 고려해볼 수 있다. GNOME 원격 데스크톱은 grdctl rdp set-tls-cert <cert.pem> / set-tls-key <key.pem> 명령으로 사용자 지정 인증서 적용을 지원한다.[^5] 이를 통해 MITM 공격 방지 및 신원 확인을 강화할 수 있다. (일반 가정/소규모 환경에서는 자체 서명 인증서로도 충분하지만, 기업 환경에서는 내부 CA를 통해 발급받은 인증서를 사용하는 경우도 있다.)

     

    Trouble Shooting

    그런데, 여기까지 진행한 이후에도 여전히 Ubuntu Desktop 화면이 나오지 않았다. 정확히는 오류가 뜨면서 원격 접속이 되지 않았는데, 처음에는 라즈베리파이가 모니터와 연결되지 않아서 발생한 문제인 줄 알았다.

    <모니터 없는 PC 원격 접속 하고 싶을 때> hdmi dummy plug

     

    <모니터 없는 PC 원격 접속 하고 싶을 때> hdmi dummy plug

    - 상황 : 기존에 쓰던 윈도우 PC를 모니터 없이 원격 서버로 이용하고 싶다. 본체에는 기존에 쓰던 거라 외장 그래픽카드 등 기본적인건 다 달려있다. - 문제점 : 원격 프로그램(RDP, moonlight)를 통해

    jeong-storage.tistory.com

     

    그래서 `hdmi dummy plug`라는 키워드로 열심히 검색을 했지만... micro HDMI에 해당하는 더미 플러그는 존재하지 않는 것 같아 이를 포기했다.

     

    어쩔 수 없는 문제인가라는 체념과 함께 포기하려던 찰나, 문득 접속은 잘 되나 원격 로그인 이후가 안 되는 것이 이상하게 생각되어 조금만 더 문제를 붙잡아 봤다. 애초에 화면이 안 나왔다면 처음부터 안 나왔을 텐데, 로그인 시점에 에러가 뜬다는 것은 설정에 문제가 있었다는 생각이 들었다.

     

    그리고, 구세주가 등장했다.

    Ubuntu 24.04 / remote login : r/Ubuntu

     

    From the Ubuntu community on Reddit

    Explore this post and more from the Ubuntu community

    www.reddit.com

    이 레딧 댓글이 아니었다면 문제를 해결할 수 없었을 거다

     

    이 유저가 말한대로 RDP 파일을 export해서 VS Code로 연 다음, `use redirection server name:i:1`로 변경했더니 귀신같이 접속이 잘 되었다. Windows의 원격 데스크톱 연결, macOS, iPad의 Microsoft Remote Desktop에서 해당 rdp 파일을 열었더니 문제가 해결됐다. iPad에서는 macOS의 파일을 iCloud를 통해 옮기고 rdp 파일을 열었었는데, iPad에서 직접 Export 하거나 설정을 바꾸는 등의 행위를 하지 못해 이렇게 우회했던 것으로 기억한다.

     

    아무튼 원격 접속까지 세팅이 잘 완료되어서, 거실에 있던 라즈베리파이를 창고 한 구석에 잘 옮겨두었다. :)

    새 보금자리를 찾은 라즈베리파이. micro HDMI와 LAN 케이블은 보관함에 잘 모셔뒀다.

     

    Ubuntu 화면 공유 CLI 제어: grdctl 명령어 사용

    이대로 마치기 아쉬워 `grdctl` 명령어에 대한 조사를 조금 더 해봤다.

     

    Ubuntu 원격 화면 공유와 grdctl의 역할

    Ubuntu 데스크톱에는 원격 화면 공유(리모트 데스크톱) 기능이 기본 내장되어 있다. Ubuntu 22.04 LTS부터는 기존의 VNC 기반 Vino 서버를 대체하여 GNOME Remote Desktop 서비스가 사용되고 있다[^6]. 이 GNOME Remote Desktop는 RDP와 VNC 백엔드를 모두 지원하였으나, Ubuntu 22.10부터는 기본 빌드에 RDP만 활성화되고 VNC는 제외되었다[^6].

     

    grdctl은 이 GNOME Remote Desktop 서비스를 제어하기 위한 CLI(Command Line Interface) 도구이다[^7]. 즉, GUI의 *"Settings -> Sharing -> Remote Desktop"에서 하는 설정들을 터미널에서 수행할 수 있게 해준다. grdctl은 GNOME Remote Desktop 패키지(gnome-remote-desktop)에 포함되어 제공되며[^7], 원격 데스크톱 접속 허용/차단, 인증 정보 설정, 보기 전용 모드 전환 등의 설정 작업을 터미널에서 할 수 있도록 해준다. 예를 들어, GUI에서 "Remote Desktop" 스위치를 켜는 동작은 grdctl로 RDP 서비스를 활성화하는 것과 대응된다.

     

    Ubuntu GNOME 환경의 Remote Desktop 설정 화면. (1) 'Remote Desktop' 스위치는 원격 데스크톱 접속 자체를 활성화하거나 비활성화하며, (2) 'Remote Control' 스위치는 원격 사용자가 이 컴퓨터를 제어할 수 있게 허용하는 옵션이다. 하단 Authentication 영역에는 원격 접속 클라이언트에서 사용할 사용자 이름(User Name)과 비밀번호(Password)가 표시되는데, 이러한 인증 정보는 grdctl 명령을 통해 CLI에서 설정할 수 있다[^11].

     

    GUI의 "Desktop Sharing"(원격 데스크톱) 옵션을 켜면 다른 사용자가 이 컴퓨터에 접속하여 화면을 볼 수 있도록 허용하며, "Remote Control" 옵션을 켜면 원격 사용자의 마우스/키보드 제어를 허용한다[^8]. 또한 인증(Authentication) 섹션에는 원격 접속에 필요한 사용자 이름과 비밀번호가 나타나는데[^8], 이 정보 역시 grdctl을 통해 CLI에서 직접 지정할 수 있다. 요약하면, grdctl 도구를 사용하면 Ubuntu 원격 화면 공유 설정을 GUI 없이 터미널에서 스크립트로 구성하거나, SSH로 접속한 상태에서 원격 데스크톱을 활성화할 수 있다.

     

    grdctl이 포함된 패키지 및 설치

    grdctl 명령은 gnome-remote-desktop 패키지에 포함되어 제공된다[^7]. Ubuntu Desktop 기본 설치에는 이 패키지가 포함되어 있으므로 별도 설치 없이 grdctl을 사용할 수 있다. (만약 grdctl이 없다면 gnome-remote-desktop 패키지가 설치되어 있는지 확인해야 한다.) GNOME Remote Desktop 서비스와 grdctl 도구는 Canonical과 GNOME이 공식 지원하는 구성으로, Ubuntu 22.04부터 기본 원격 데스크톱 기능으로 채택되었다[^6]. 따라서 별도의 VNC 서버 설치나 설정 없이, 기본 패키지들만으로 GUI CLI에서 화면 공유 기능을 설정할 수 있다.

     

    참고로, GNOME Remote Desktop은 Wayland 세션에서도 동작하도록 설계되었으며, RDP (Remote Desktop Protocol)을 기본으로 사용한다. 22.04 LTS에서는 VNC도 선택 가능했지만, 이후 버전에서는 기본적으로 VNC 옵션이 제거되었기 때문에 최신 Ubuntu에서는 RDP 기반으로 원격 데스크톱을 구성하게 된다[^6]. (필요하면 소스 빌드로 VNC를 활성화할 수 있으나 기본 제공은 되지 않는다.)

     

    주요 기능과 사용 가능한 명령 옵션

    grdctl의 기본 사용법은 grdctl [옵션] <COMMAND> <SUBCOMMAND> 형식이다[^7]. --help 옵션으로 전체 명령 도움말을 볼 수 있으며, 주요 명령어는 상태 조회, RDP 설정, 그리고 (구버전의 경우) VNC 설정으로 나뉜다.

    • 상태 조회: grdctl status – 현재 원격 데스크톱 서비스의 설정 상태를 출력한다. 이 명령으로 RDP/VNC 각각의 활성화 여부, 설정된 포트, 인증 방식, 뷰-온리(View-only) 모드 여부 등을 확인할 수 있다[^10]. 예를 들어 grdctl status 출력에는 RDP가 켜져 있는지, VNC가 사용 중이면 인증 방법이 prompt인지 password인지, 설정된 사용자명/비밀번호 등이 표시된다.

     

    RDP 관련 명령 (grdctl rdp ...)

    RDP 백엔드는 Microsoft Remote Desktop Protocol을 활용하여 화면을 공유하는 방식이다. grdctl로 RDP 설정을 제어할 때 사용되는 주요 서브커맨드는 다음과 같다.

    • grdctl rdp enable / grdctl rdp disableRDP 백엔드를 활성화/비활성화한다[^7]. enable을 실행하면 해당 사용자 세션에서 RDP 원격 접속이 허용되며, disable은 RDP 접속을 차단한다. 이 동작은 GUI의 "Remote Desktop" 스위치를 켜고 끄는 것과 동일하다.
    • grdctl rdp set-credentials <USERNAME> <PASSWORD> – 원격 접속에 사용할 인증용 계정 정보(사용자 이름과 비밀번호)를 설정한다[^7]. 예를 들어 grdctl rdp set-credentials user1 S3cr3t!처럼 실행하면, RDP로 접속할 때 user1 / S3cr3t! 로 인증할 수 있게 된다. 이 정보는 GUI 설정 화면의 "User Name" 및 "Password"로 표시되며[^8], RDP 클라이언트가 접속 시 요구하는 로그인 정보이다. 만약 별도로 자격 증명을 설정하지 않으면, (RDP 원격 로그인 기능이 아닌) 사용자 세션 공유의 경우 접속이 제대로 이루어지지 않으므로 일반적으로 이 단계를 수행해야 한다. 설정된 사용자명/비밀번호를 삭제하고 기본 상태로 돌리려면 grdctl rdp clear-credentials 명령으로 비워줄 수도 있다[^7].
    • grdctl rdp set-tls-cert <경로> / grdctl rdp set-tls-key <경로>TLS 인증서 및 키 파일 경로를 지정한다. GNOME Remote Desktop의 RDP는 전송 암호화를 위해 TLS 인증서를 사용하므로, 사용자 지정 인증서를 쓰고 싶다면 해당 경로를 지정할 수 있다[^7]. (초기 설정 시 기본 경로에 자동 생성된 self-signed 인증서가 활용된다. 필요한 경우 OpenSSL 등으로 새로운 인증서를 만들어 경로를 지정 가능하다[^9].) 일반적으로 GUI로 처음 원격 데스크톱을 활성화하면 ~/.local/share/gnome-remote-desktop/ 아래에 기본 키와 인증서 파일(tls.key, tls.crt)이 생성되고 사용된다[^11].
    • grdctl rdp enable-view-only / grdctl rdp disable-view-only원격 제어 권한을 토글한다. enable-view-only를 실행하면 보기 전용 모드를 활성화하여 원격 사용자가 화면만 보고 키보드/마우스 조작은 할 수 없게 제한한다[^7]. 반대로 disable-view-only는 원격 제어를 허용하는 설정으로, GUI의 "Remote Control" 스위치를 켜는 것과 같은 효과이다[^7]. 예컨대, 원격지에서 화면을 볼 수만 있고 조작이 안 된다면 disable-view-only 명령을 통해 원격 제어를 활성화할 수 있다.

     

    이 외에도 grdctl rdp 하위 명령으로 status를 붙이면 RDP 설정 상태만 볼 수도 있다. RDP 사용 시 기본 접속 포트는 3389이며, 이는 Microsoft RDP 클라이언트 등의 기본값과 동일하다. (만약 시스템에서 Remote Login 기능까지 활성화하여 GDM 로그인 화면 원격 접근을 허용하면, 해당 시스템-서비스가 3389 포트를 차지하고 사용자 세션 공유는 3390 포트 등 다른 포트를 사용할 수도 있다[^8]. 기본적으로는 사용자 세션 RDP가 3389를 사용한다.)

     

    사용 예시 (RDP): 현재 물리적으로 Ubuntu에 접근할 수 없는 상황에서 SSH로 접속하여 원격 데스크톱(RDP)을 설정해야 한다고 가정하자. 다음은 grdctl을 사용한 설정 예시이다.

    1. 자격 증명 설정 – 원격 로그인에 사용할 사용자 이름과 암호를 설정한다.이 명령 실행 후에는 원격 접속 클라이언트에서 myuser/Secr3tP@ss! 조합으로 로그인할 수 있게 된다[^7].
    2. grdctl rdp set-credentials myuser "Secr3tP@ss!"
    3. RDP 서비스 활성화 – RDP 백엔드를 켠다.이로써 해당 사용자의 원격 데스크톱 서비스가 활성화되며, 포트 3389에서 연결을 대기하게 된다[^7].
    4. grdctl rdp enable
    5. 원격 제어 허용 – (선택 사항) 기본적으로 원격 제어는 비활성화되어 있으므로, 원격에서도 마우스/키보드 제어를 가능하게 설정한다.이 설정으로 원격 사용자가 단순 화면 보기뿐 아니라 직접 조작도 할 수 있다[^7].
    6. grdctl rdp disable-view-only
    7. 서비스 확인 – 설정이 적용되었는지 상태를 확인한다.RDP: Status가 enabled로 나오고, Username/Password가 설정된 값으로 표시되는지 확인한다[^11].
      또한
      gnome-remote-desktop 서비스가 백그라운드에서 구동 중이어야 접속이 가능하므로,systemctl --user status gnome-remote-desktop.service 명령으로 사용자 서비스 동작 여부를 확인한다. Ubuntu에서는 기본적으로 해당 서비스가 로그인 시 자동 활성화(preset: enabled)되어 있지만[^10], 만약 inactive 상태라면 systemctl --user enable --now gnome-remote-desktop.service로 즉시 시작할 수 있다[^9].
    8. grdctl status

    이렇게 설정한 후에는 원격 컴퓨터에서 RDP 클라이언트(예: Windows의 원격 데스크톱 앱, Remmina 등)를 이용해 Ubuntu PC의 IP나 hostname으로 접속하고, 앞서 설정한 사용자 이름/암호로 로그인하면 된다. 첫 연결 시 클라이언트에서 서버의 TLS 인증서 지문을 확인하라는 안내가 나올 수 있는데, Ubuntu 측 Remote Desktop 설정의 "Verify Encryption" 버튼을 눌러 인증서 지문을 확인하고 비교할 수 있다[^8].

     

    VNC 관련 명령 (grdctl vnc ...)

    (※ Ubuntu 22.10 이후 기본 빌드에서는 VNC 지원이 빠져 이 명령들은 동작하지 않을 수 있다. Ubuntu 22.04 또는 VNC가 활성화된 환경에서만 유효한 옵션이다[^6].)

    VNC 백엔드는 전통적인 VNC 프로토콜을 통한 화면 공유 방식이다. GNOME Remote Desktop의 VNC는 인증 방법으로 비밀번호 방식프롬프트(prompt) 방식을 지원하며, grdctl을 통해 이를 설정할 수 있다[^9]. 주요 명령어는 다음과 같다:

    • grdctl vnc enable / grdctl vnc disable – VNC 백엔드를 활성화 또는 비활성화한다. 실행 시 5900번 포트를 기본으로 VNC 접속을 받으며, disable하면 VNC 서비스를 종료한다. (만약 RDP와 동시 사용 시 포트 번호가 5900이 아닌 5901 등으로 바뀔 수 있다[^10].)
    • grdctl vnc set-auth-method <방식>VNC 접속 인증 방법을 설정한다. 옵션으로 password 또는 prompt를 지정할 수 있다. password로 설정하면 정해진 비밀번호로 인증을 받는 모드이고, prompt로 설정하면 원격 사용자가 접속을 시도할 때마다 호스트 쪽에 승인 대화창을 띄워 수동 승인을 받는 방식이다[^9]. 기본값은 GUI를 통해 초기 활성화한 방식에 따르는데, 일반적으로 비밀번호를 설정하지 않았다면 prompt 모드로 동작한다. CLI에서 password 방식으로 전환하려면 grdctl vnc set-auth-method password를 실행한다[^9].
    • grdctl vnc set-password / grdctl vnc clear-password – VNC 접속용 비밀번호를 설정 또는 제거한다. set-password 명령을 실행하면 프롬프트가 나타나 새로운 VNC 비밀번호를 입력할 수 있으며, 최대 8자까지 유효하다 (VNC 프로토콜 제약)[^12]. 또는 set-password <PW> 형태로 바로 전달할 수도 있다. 설정 후에는 Auth method가 자동으로 password로 전환되지 않으므로, 앞서 언급한 set-auth-method password를 함께 실행해야 한다[^10]. clear-password는 저장된 VNC 비밀번호를 삭제하여 비밀번호 인증을 비우는 명령이다. (이 경우 인증 방법은 prompt로 돌아간다.)
    • grdctl vnc enable-view-only / grdctl vnc disable-view-only – RDP와 마찬가지로 원격 제어 허용 여부(보기 전용 모드)를 전환한다. enable-view-only 실행 시 화면 보기 전용으로 설정되어 원격 조작이 차단되고, disable-view-only 실행 시 원격 조작 허용으로 설정된다[^9]. 이 설정은 GUI의 "Remote Control" 옵션과 동일하게 동작한다.

     

    사용 예시 (VNC): Ubuntu 22.04에서 VNC로 화면 공유를 설정하려면, 다음과 같은 순서로 실행한다. 먼저 grdctl vnc set-auth-method password로 인증 방식을 비밀번호로 설정한 뒤, grdctl vnc set-password를 실행하여 프롬프트에 새 비밀번호를 입력한다[^9]. 그런 다음 원격 제어를 허용하려면 grdctl vnc disable-view-only를 실행하고, 마지막으로 grdctl vnc enable로 VNC 서비스를 켠다[^9]. 이렇게 하면 VNC 5900 포트가 열리고 설정한 비밀번호로 인증을 받게 된다. 만약 prompt 모드를 사용한다면 비밀번호 설정 대신 그 상태로 grdctl vnc enable만 실행하면 되지만, 원격 접속시마다 호스트 측에서 수락해야 하는 창이 뜨므로 무인 시스템에는 적합하지 않다.

     

    참고: 원격 로그인 (시스템 수준) 및 Headless 모드

    일반적으로 grdctl 명령은 사용자 세션 범위에서 동작하여, 해당 사용자가 로그인한 상태의 데스크톱을 원격으로 공유한다. 하지만 GNOME Remote Desktop은 GDM 로그인 화면에서 다중 사용자 원격 로그인을 제공하는 Remote Login 기능과, 별도의 가상 세션을 만드는 headless 모드도 지원한다. 이 경우 grdctl--system 또는 --headless 옵션을 주어 사용한다. 예를 들어, 로그인 화면에서의 원격 접속(멀티유저 모드)을 활성화하려면 root 권한으로 grdctl --system rdp enable 및 필요한 자격증명/인증서 설정을 한 뒤[^13][^9], systemctl enable --now gnome-remote-desktop.service로 시스템 서비스를 활성화한다[^9]. Headless 단일 세션 모드의 경우 grdctl --headless rdp ... 명령어들을 사용해 별도 세션을 구성한다[^9]. 이러한 고급 기능들은 특별한 경우에 사용되며, 일반적인 화면 공유(Desktop Sharing)는 앞서 소개한 사용자 세션 기준의 명령어들로 충분하다.

     

    마무리 및 출처

    정리하면, grdctl은 Ubuntu GNOME 데스크톱의 화면 공유 기능을 CLI에서 제어하기 위한 도구로서, RDP 원격 데스크톱의 활성화/비활성화, 인증 정보 설정, 보기 전용 모드 전환 등의 작업을 수행한다[^7]. Ubuntu 22.04의 경우 VNC 관련 명령도 제공되어 GUI의 "Legacy VNC" 옵션을 CLI로 다룰 수 있었지만, 현재 Ubuntu Desktop에서는 기본적으로 RDP 기반으로 운영되고 해당 CLI 옵션을 활용하게 된다[^6]. 원격 화면 공유를 CLI로 설정함으로써 GUI 접근이 어려운 서버나 원격지의 Ubuntu 데스크톱도 손쉽게 설정할 수 있으며, 공식 매뉴얼 페이지와 GNOME 프로젝트의 README에 grdctl 사용 방법이 문서화되어 있으므로 필요에 따라 참고하면 된다[^7][^9].

     

    각 단계별로 신뢰할 수 있는 공식 자료와 커뮤니티 조언을 참조하여 (grdctl --help 출력, Ubuntu Manpage, GNOME GitHub README 등) 원격 데스크톱 설정을 수행하면, GUI에서와 동일한 효과로 Ubuntu 화면 공유 기능을 CLI 환경에서 관리할 수 있다.

     

    마치며

    이상으로 Ubuntu 24.04 LTS 서버에서 단일 RDP 방식으로 원격 데스크톱 접속을 설정하는 방법을 정리하였다. 요약하면, GNOME 원격 데스크톱(RDP) 기능을 활용하여 Windows, macOS, Ubuntu 모든 클라이언트에서 접속 가능하며, Wayland 환경에서도 정상 동작한다. Ubuntu 24.04부터 추가된 원격 로그인 기능 덕분에 별도 xrdp 패키지 없이도 다중 세션 원격 접속이 가능해졌다.[^2] 이는 Wayland 기반에서도 원격 데스크톱을 지원하려는 노력의 일환이며, 추후 릴리스에서 점차 안정성과 기능이 향상되고 있다.[^2]

     

    마지막으로, 위의 단계별 설정을 천천히 따라 하면 큰 어려움 없이 원격 데스크톱을 구성할 수 있을 것이다. 설정 중 헷갈리기 쉬운 부분(예: 포트 번호 혼동, 암호 설정 누락, 방화벽 미설정 등)은 본 가이드에서 주의사항으로 강조하였으니 꼼꼼히 확인해야 하고, rdp 오류는 rdp 파일을 export를 해서 파일로부터 원격 데스크톱을 실행해보도록 하자.

     

    글에서 강조한 보안 쪽을 아직 설정하지 못했는데, 다음 글에서는 VPN 등을 활용하여 더 안전한 원격 데스크톱 설정을 구성하는 것을 다뤄보도록 하겠다.

     

    참고 문헌

    [^1]: xrdp - Accessing an Ubuntu 24.04 machine via rdp port selection - Ask Ubuntu
    [^2]: How to Enable Remote Desktop in Ubuntu 24.04 & 24.10 | Losst
    [^3]: Securing Remote Desktop (RDP) for System Administrators | Information Security Office
    [^4]: remote desktop - How is RDP through VPN safer? - Information Security Stack Exchange
    [^5]: Ubuntu Manpage: grdctl - Command line tool for configuring GNOME Remote Desktop
    [^6]: "remote desktop - GNOME Screen Sharing VNC 23.04 - Ask Ubuntu", https://askubuntu.com/questions/1469028/gnome-screen-sharing-vnc-23-04/1469127#1469127
    [^7]: "Ubuntu Manpage: grdctl - Command line tool for configuring GNOME Remote Desktop", https://manpages.ubuntu.com/manpages/lunar/man1/grdctl.1.html
    [^8]: "데스크톱 공유", https://help.ubuntu.com/stable/ubuntu-help/sharing-desktop.html.ko
    [^9]: "gnome-remote-desktop/README.md at master · GNOME/gnome-remote-desktop · GitHub", https://github.com/GNOME/gnome-remote-desktop/blob/master/README.md
    [^10]: "Grdctl vnc server not listening on 5900 - GNOME - Manjaro Linux Forum", https://forum.manjaro.org/t/grdctl-vnc-server-not-listening-on-5900/130408
    [^11]: "GNU/Linux | Remote Desktop on Debian 12", https://std.rocks/gnulinux_rdp_remotedesktop.html
    [^12]: "Enable VNC over SSH - GitHub Gist", https://gist.github.com/pythoninthegrass/11d704730e7ed8999229f3e1d747a116
    [^13]: "Enable RDP from command line - Ask Ubuntu", https://askubuntu.com/questions/1499789/enable-rdp-from-command-line

    728x90
    댓글