클라우드 환경의 CentOS7/RHEL7에서 "안전하게"GUI(VNC)를 도입·이용하는 방법

1. 소개



많은 클라우드에서는 디폴트로 CUI(캐릭터 기반의 인터페이스) 밖에 제공되지 않고, SSH등으로 로그인하는 것이 대부분입니다. 다만, 최근의 제품 중에서는 GUI(그래픽 유저 인터페이스)를 요구되고 있는 일도 많기 때문에, 아무래도 GUI를 사용하고 싶다! 라는 사람도 계십니다.
이 기사에서는 Bluemix Infrastructure (이전 SoftLayer)에서 VNC 및 GUI 환경을 도입하고 안전하게 연결하는 방법을 설명합니다. 이용하고 있는 OS는 CentOS7입니다.
# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

# uname -a
Linux guitest.softlayer.com 3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

2. 구성 요소 확인 및 배포



GUI를 이용하기 위해서는 VNC(tiger-VNC)를 이용하면 됩니다만, VNC를 간단하게 도입하는 것만으로는 윈도우 매니저가 없기 때문에 거의 쓸모가 없습니다. 따라서 GUI가 있는 Server 구성 요소를 도입합니다. 2GB 정도 있기 때문에주의하십시오.

ServerWithGUI 및 VNC 확인
# yum grouplist
Loaded plugins: fastestmirror
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
Available Environment Groups:
   Minimal Install
   Compute Node
   Infrastructure Server
   File and Print Server
   Basic Web Server
   Virtualization Host
   Server with GUI
   GNOME Desktop
   KDE Plasma Workspaces
   Development and Creative Workstation
Available Groups:
   Compatibility Libraries
   Console Internet Tools
   Development Tools
   Graphical Administration Tools
   Legacy UNIX Compatibility
   Scientific Support
   Security Tools
   Smart Card Support
   System Administration Tools
   System Management
Done

# yum search tigervnc
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
========================================================================== N/S matched: tigervnc ==========================================================================
tigervnc.x86_64 : A TigerVNC remote display system
tigervnc-icons.noarch : Icons for TigerVNC viewer
tigervnc-license.noarch : License of TigerVNC suite
tigervnc-server.x86_64 : A TigerVNC server
tigervnc-server-applet.noarch : Java TigerVNC viewer applet for TigerVNC server
tigervnc-server-minimal.x86_64 : A minimal installation of TigerVNC server
tigervnc-server-module.x86_64 : TigerVNC module to Xorg

  Name and summary matches only, use "search all" for everything.


ServerWithGUI 및 VNC 배포

# yum groupinstall "Server with GUI"
# yum install tigervnc-server.x86_64


3. VNC Server의 동작 확인



vncserver 명령을 실행하고 VNC 액세스를 위한 암호를 설정하고,

vncserver 실행
# vncserver

You will require a password to access your desktops.

Password:
Verify:

New 'guitest.softlayer.com:1 (root)' desktop is guitest.softlayer.com:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/guitest.softlayer.com:1.log


VNC Viewer에서 포트 5901에 액세스하면 안전하게 액세스할 수 있었습니다.



그러나 이번에는 VNC Server는 5901을 모든 인터페이스에 공개합니다. . . 게다가 6001번도. . .
# ss -anptu|grep vnc
tcp    LISTEN     0      5         *:5901                  *:*                   users:(("Xvnc",pid=3714,fd=10))
tcp    LISTEN     0      128       *:6001                  *:*                   users:(("Xvnc",pid=3714,fd=1))
tcp    LISTEN     0      5        :::5901                 :::*                   users:(("Xvnc",pid=3714,fd=11))
tcp    LISTEN     0      128      :::6001                 :::*                   users:(("Xvnc",pid=3714,fd=0))

4. 안전한 접속을 위해 실시하는 내용



아래의 4가지 조합으로 대응합시다.
  • 방화벽을 구성하고 필요한 포트를 제외하고 닫습니다.
  • 기본 포트 번호를 5901에서 다른 번호로 변경합니다.
  • VNC가 LISTEN하는 인터페이스를 Private NW 측에만 만듭니다 (SoftLayer는 무료 SSL-VPN을 통해 Private NW에서도 액세스 할 수 있음)
  • X Server용 포트(6001)를 비활성화합니다. VNC Server를 시작할 때 올라가지만 VNC에 액세스하면 필요하지 않습니다. 이것은 X 응용 프로그램이 연결할 때 사용하는 포트입니다.

  • 2~4의 대책을 담은 예
    # vncserver :10001 -interface=10.132.75.77 -nolisten tcp
    # ss -anptu|grep vnc
    tcp    LISTEN     0      5      10.132.75.77:15901                 *:*                   users:(("Xvnc",pid=7779,fd=6))
    

    명령 옵션의 설명은 다음과 같습니다.
  • VNC의 디폴트는 5901번으로 시작되어 :1에 대응합니다. :10001과 같이 지정하면 포트 15901이 새로 청취하는 포트 번호가 됩니다.
  • interface 로 Listen 하는 주소를 지정할 수 있습니다. -localhost로 하는 것으로, localhost(127.0.0.1)로부터 밖에 액세스 할 수 없도록 할 수도 있습니다. SSH port fowarding 등을 사용한다면, 이 옵션도 유력한 선택일 것입니다.
  • nolisten tcp에서 X Server용 포트(6001) 사용을 중지합니다.
  • 또한, vncserver --helpXvnc --help 로 다른 옵션의 확인도 가능합니다.

  • firewall의 구성은 이번에는 소개하지 않지만, 별도 반드시 해 둡시다. GUI를 도입할 때 모르는 서비스가 오르고 있을 가능성도 있으므로, ss -anptu 로 모르는 서비스가 오르고 있는지 어떤지 체크 필수입니다.
    ※ 참고로 systemd가 TCP 포트 111에서 포트 오픈하고 있었으므로, 나는 다음과 같이 무효화했습니다.
    # systemctl stop rpcbind.socket
    # systemctl disable rpcbind.socket
    

    좋은 웹페이지 즐겨찾기