기술 가이드

Ubuntu 9.10과 FreeNX로 리눅스 터미널 서버 설정하는 방법

8 min read 리눅스 서버 업데이트됨 18 Oct 2025
Ubuntu 9.10 + FreeNX로 터미널 서버 설정
Ubuntu 9.10 + FreeNX로 터미널 서버 설정

소개

데스크톱 중심 컴퓨팅이 다시 얇은 클라이언트/메인프레임 형태로 전환되는 사례가 늘고 있습니다. 이 문서는 Ubuntu 9.10을 기반으로 FreeNX 서버를 설치하고 운영하는 방법을 단계별로 설명합니다. FreeNX는 NoMachine의 NX 프로토콜을 오픈소스로 구현한 것으로, 기본적으로 SSH를 통해 암호화된 세션을 제공합니다.

정의: FreeNX — NoMachine NX 프로토콜의 오픈 소스 구현체로, SSH 터널을 통해 그래픽 세션을 전달합니다.

중요: 이 가이드는 실무에서 널리 사용되는 절차를 정리한 것입니다. 네트워크 보안은 복잡하므로 각자의 환경에 맞게 추가 검토와 테스트를 해야 합니다.

무엇에 적합한가

  • 내부망에서 인터넷 접근을 제한하고자 하는 경우(단일 방향 포트 22만 열기)
  • 노후한 데스크톱을 저비용 얇은 클라이언트로 재활용할 때
  • 외부에서 개인 워크스테이션의 전체 성능과 파일에 접속해야 할 때

중요: 외부에 서버를 공개할 경우 추가 보안(키 교체, 방화벽, 입증된 인증 방식)을 권장합니다.

준비물 및 전제조건

  • Ubuntu 9.10가 설치된 컴퓨터(데스크톱 환경, 예: GNOME)
  • 관리자(root) 권한 접근
  • 인터넷 연결(패키지 설치 및 클라이언트 다운로드용)
  • 클라이언트 머신(Windows, macOS, Linux 등)에 NX Client 설치

참고: 설치 중 명령어는 루트 권한을 필요로 하므로 sudo 또는 sudo su -l을 사용하십시오.

TL;DR 체크리스트

  • Ubuntu 9.10 설치
  • openssh-server, fail2ban, firehol 설치
  • 고정 IP 또는 DHCP에서 고정 할당 구성
  • firehol로 포트 22 수신 허용 설정
  • freenx 설치 및 nxsetup 실행
  • 클라이언트에 NoMachine NX Client 설치 및 서버 정보 입력

설치 전 작업: 루트 권한 획득

시작하려면 터미널을 열고 루트로 전환합니다.

 sudo su -l

위 명령으로 루트 권한을 얻습니다. 이후 모든 설치와 네트워크 설정을 이 권한으로 진행합니다.

필수 패키지 설치

OpenSSH는 FreeNX의 필수 요소이며, fail2ban은 잘못된 로그인 시도를 차단해 무차별 대입 공격을 완화합니다. firehol은 iptables를 간편하게 관리하게 해 줍니다.

원본 명령(변경하지 않음):

  aptitude update && aptitude install openssh-server fail2ban firehol

설치가 끝나면 SSH 서버 동작을 확인합니다:

 ssh 127.0.0.1

경고: 이 테스트는 RSA 키 지문을 출력합니다. 연결은 Control-C로 중단해도 됩니다. 이 지문은 이후 클라이언트 접속 시 비교에 사용됩니다.

네트워킹 설정(고정 IP)

서버는 원격에서 접속할 목적이므로 고정 IP를 설정하는 것이 일반적입니다. DHCP 서버에서 고정 할당하는 방법도 있지만 본 튜토리얼에서는 /etc/network/interfaces를 직접 편집해 static IP를 설정합니다.

현재 네트워크 설정을 확인합니다:

ifconfig eth0
 cat /etc/resolv.conf
route

이 정보를 바탕으로 같은 서브넷 내에서 사용 가능한 주소를 골라 중복되지 않도록 합니다.

파일 편집:

 nano /etc/network/interfaces

기존에 DHCP로 되어 있다면 dhcp를 static으로 변경합니다:

iface eth0 inet dhcp

다음으로 static 블록을 추가합니다(예시는 네트워크에 맞게 수정):

iface eth0 inet static
    address 192.168.1.253
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8, 8.8.4.4

설정 저장 후 네트워크를 재시작합니다:

 /etc/init.d/networking restart

브라우저에서 인터넷이 정상 동작하는지 확인합니다.

노트: Google의 퍼블릭 DNS(8.8.8.8 등)를 권장했지만, 조직 정책에 따라 내부 DNS를 사용해야 할 수 있습니다.

방화벽 설정(간단한 예)

firehol을 사용해 외부에서 들어오는 포트 22(SSH)만 허용하고, 나가는 트래픽은 제한하지 않는 간단한 설정을 합니다.

 nano /etc/default/firehol

다음 줄을 YES로 변경:

START_FIREHOL=NO

변경 후:

START_FIREHOL=YES

IANA 예약 IP 목록 업데이트:

get-iana

firehol 설정 파일 편집:

nano /etc/firehol/firehol

파일 맨 아래에 다음 줄 추가:

server ssh accept 

설정 저장 후 firehol 시작:

 firehol start

정상 동작 메시지 예시:

Activating new firewall (47 rules): OK

현재 iptables 규칙 확인:

 iptables --list

보안 권장사항: 실제 운영 환경에서는 입력/출력 규칙을 더 세밀하게 구성하고, 관리 인터페이스 접근은 내부망으로 제한하십시오.

FreeNX 설치

Ubuntu에서 FreeNX 패키지는 PPA에 있으므로 간단히 설치할 수 있습니다. 원본 명령은 아래와 같습니다(변경하지 않음):

add-apt-repository ppa:freenx-team  
aptitude update  
aptitude install freenx  
/usr/lib/nx/nxsetup --install

설치 후, 보안 강화를 위해 커스텀 키를 생성할 수 있습니다. 커스텀 키를 생성하면 클라이언트에 해당 키를 배포해야 합니다. 내부망 전용이라면 기본 키로도 운영 가능하지만, 외부 노출 시에는 키 재생성과 안전한 배포가 필수입니다.

키 복사 및 보관: 생성된 키 파일은 안전한 위치(예: 암호화된 스토리지)에 보관하십시오.

클라이언트 설치 및 설정

클라이언트 컴퓨터에서 NoMachine의 NX Client를 내려받아 설치합니다:

웹사이트: http://www.nomachine.com/download.php

설치 후 NX Connection Wizard에서 세션 이름과 서버 IP를 입력하고 네트워크 속도(LAN 등)를 설정합니다. Ubuntu 9.10 기본 환경이 GNOME이므로 데스크톱 환경을 KDE에서 GNOME으로 변경해야 합니다.

고급 설정에서 커스텀 키를 사용했다면 Key 항목에서 키를 임포트해야 합니다.

로그인 시 사용자 이름과 비밀번호를 입력하고 접속합니다. 최초 접속 시 SSH의 RSA 지문을 확인하라는 창이 뜨는데, 앞서 SSH 테스트에서 얻은 지문과 일치하는지 검증하고 수락하십시오. 나중에 지문이 변경되면 보안 경고로 간주하고 원인 파악이 필요합니다.

사용자 계정 관리

각 접속자별 계정을 만들려면 System -> Administration -> Users and Groups에서 사용자 추가를 진행하십시오.

접속 권한 정책(예):

  • 업무용 유저는 홈 디렉터리, 필요한 그룹만 부여
  • 관리자는 sudo 그룹에만 제한적으로 추가

라우터 및 외부 접속 설정

외부에서 접속하려면 라우터에서 포트 포워딩을 설정해 서버 IP로 22 포트를 전달합니다. 기업 환경에서는 퍼블릭 네트워크와 내부망 사이에 별도의 방화벽을 두고 포트 22만 전달하는 것이 일반적입니다.

보안 권장:

  • 외부 노출 시 커스텀 SSH 키 사용
  • 가능하면 포트 포워딩 대신 VPN을 사용해 내부망으로 안전하게 진입
  • fail2ban과 같은 도구로 로그인 시도 차단 정책 강화

보안 강화 체크리스트

  • SSH: 기본 포트(22)를 그대로 쓰는 대신 포트 변경 가능, 하지만 보안 관점에서 포트 변경만으로는 충분하지 않습니다.
  • 인증: 공개 키 기반 인증 사용 권장. 패스워드 인증은 최소화.
  • fail2ban: SSH 반복 실패 시 IP 차단 정책 구성.
  • 방화벽: 입력 규칙은 최소 권한 원칙으로 설정.
  • 업데이트: 시스템과 Freenx, OpenSSH의 보안 패치를 정기 적용.
  • 로그 감시: /var/log/auth.log, freenx 관련 로그를 모니터링.

Important: 키가 노출되면 즉시 키를 폐기하고 새 키를 발급해야 합니다.

문제 해결(트러블슈팅)

  • SSH 접속 불가: 서비스가 실행 중인지 확인(ssh status 또는 ps), 포트 22가 방화벽에서 허용되었는지 확인.
  • 클라이언트에서 지문 불일치 경고: 실제로 서버 키가 변경되었는지 조사. 만약 변경이 의도치 않았다면 보안 사고 가능성.
  • 그래픽이 깨질 때: 클라이언트의 세션 해상도 및 데스크톱 환경(GNOME/KDE)을 다시 확인.
  • 성능 저하: 네트워크 대역폭, 서버 리소스(CPU, 메모리), 동시 접속자 수를 점검.

대안과 비교

  • RDP(Windows Remote Desktop): Windows 환경에 강점이 있으며, 넓은 호환성을 지님. Linux에서 사용하려면 xrdp 등 추가 설정 필요.
  • VNC: 단순하고 널리 사용되지만 대역폭 효율과 응답성에서 NX에 비해 불리.
  • x2goserver: NX와 유사한 오픈 소스 대안으로, 일부 환경에서 더 가볍게 동작.

언제 NX가 적합하지 않은가(반례):

  • 고해상도 비디오 스트리밍이나 3D 가속을 필요로 하는 작업에는 한계가 있음.
  • 로컬에서만 동작하는 하드웨어장치(예: USB 특수 하드웨어)를 원격으로 완전하게 사용하는 경우 제한이 있을 수 있음.

운영 프로세스(간단한 SOP)

  1. 초기 설치 및 패치 적용
  2. 고정 IP 및 방화벽 구성
  3. FreeNX 설치 및 키 관리
  4. 사용자 계정 생성 및 권한 설정
  5. 주기적 백업 및 로그 검토
  6. 보안 이벤트 발생 시 Incident Runbook 실행

인시던트 대응(간단한 런북)

발견: 비정상적 접속 시도 또는 지문 변경 알림

즉시 조치:

  1. 해당 IP 차단(fail2ban 로그 검토 및 iptables 추가 규칙 적용)
  2. 서버 접근 권한 점검(최근 sudo 사용 기록, 로그인 시간)
  3. SSH 호스트 키가 변경되었으면 네트워크 담당자와 확인 후 필요한 조치(키 재발급 및 모든 클라이언트에 새 키 배포)
  4. 심각한 침해 의심 시 서버를 격리하고 포렌식 절차 시작

롤백:

  • 최근 변경사항(방화벽, 키 변경, 패키지 업데이트)을 되돌려 문제를 재현하고 원인을 분석합니다.

수용 기준(테스트 케이스/검증 포인트)

  • 서버에 로컬 및 원격에서 접속해 세션이 안정적으로 생성되어야 함
  • 첫 연결 시 RSA 지문이 일치해야 함
  • 동시에 N명의 사용자가 로그인했을 때 CPU/메모리 임계치를 넘지 않아야 함(운영 환경에 따라 달라짐)
  • fail2ban이 무차별 로그인 시도를 차단해야 함

운영자/관리자 역할별 체크리스트

관리자(시스템 엔지니어):

  • Ubuntu 및 패키지 업데이트 스케줄 관리
  • 방화벽(iptables/firehol) 규칙 검토
  • SSH 키 관리 및 주기적 교체 정책 수립

운영자(네트워크 엔지니어):

  • 라우터/방화벽에서 포트 포워딩 검토
  • 네트워크 세그멘테이션 및 접근 제어

보안 담당자:

  • 로그 감사 및 SIEM 연동
  • 침해사고 대응 계획 유지

설정 예제 및 치트시트

방화벽 기본 규칙(예시, firehol 사용):

/etc/firehol/firehol 예시(간단):

# 기본 정책: 입력 거부, 출력 허용
interface any world
    policy drop

# SSH 허용
server ssh accept

SSH 키 생성(클라이언트용 공개/개인 키 쌍 생성):

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_nx

fail2ban 기본 설정 위치: /etc/fail2ban/jail.conf 또는 /etc/fail2ban/jail.d/

FreeNX 설치 후 점검 목록:

  • /usr/lib/nx/nxsetup –install가 성공적으로 완료되었는가
  • /var/log/syslog 또는 /var/log/auth.log에서 freenx 관련 오류가 없는가
  • sshd 설정(/etc/ssh/sshd_config)에서 PermitRootLogin 등의 설정이 정책에 맞게 구성되었는가

호환성 및 마이그레이션 팁

  • Ubuntu 9.10은 오래된 릴리스이므로 최신 배포판으로의 마이그레이션을 검토하십시오. 최신 배포판에서는 freenx 패키지 경로와 설치 방법이 다를 수 있습니다.
  • NoMachine의 상용 솔루션 또는 x2go 같은 대안을 평가해 보십시오. 기능과 보안 요구사항, 유지보수 가능성을 기준으로 선택합니다.

개인정보 및 규정 준수(간단 고지)

FreeNX는 SSH를 통해 트래픽을 암호화하지만, 원격 데스크톱을 통해 접근되는 데이터(파일, 문서)는 서버 측의 저장 정책과 조직의 규정에 따릅니다. 개인 식별 정보(PII)를 다루는 경우 관련 법규(GDPR 등)에 따라 접근 제어와 로그 보관 정책을 수립하십시오.

유지보수와 모니터링 제안

  • 정기 패치 주기(예: 주간/월간)와 긴급 보안 패치 절차 수립
  • 로그 중앙화: rsyslog나 ELK 스택에 로그 전달해 탐지 및 분석 수행
  • 리소스 모니터링: CPU, 메모리, 네트워크 사용량을 수집해 임계치 알림 설정

체크포인트 요약

  • SSH 서비스와 FreeNX 설치 여부 확인
  • 방화벽에서 포트 22 허용 확인
  • 클라이언트에서 RSA 지문 일치 확인
  • fail2ban으로 공격 차단 동작 확인

고급: 키 관리 베스트프랙티스

  • 서버 호스트 키는 주기적으로 검토하고, 키가 변경될 경우 변경 사유를 문서화합니다.
  • 클라이언트별 공개키 인증을 사용하면 계정 기반 비밀번호 공격을 방지할 수 있습니다.
  • 키 배포는 안전한 채널(예: TPM, 물리적 전달, 암호화된 저장소)로 합니다.

전문가 메모: 원격 데스크톱 솔루션을 설계할 때는 신뢰 경계(trust boundary)를 명확히 정의하고 최소 권한 원칙을 따르는 것이 중요합니다.

자주 묻는 질문(FAQ)

Q: FreeNX와 NoMachine의 차이는 무엇인가요?

A: FreeNX는 NoMachine의 NX 프로토콜을 오픈 소스로 구현한 프로젝트입니다. NoMachine은 상용 및 무료 클라이언트를 제공하며 일부 최신 기능은 상용 제품에 포함됩니다.

Q: 포트 22 외에 추가적으로 열어야 할 포트가 있나요?

A: 일반적인 FreeNX 구성은 SSH(포트 22)를 사용하므로 추가로 열 포트는 필요 없습니다. 다만 관리용 툴이나 모니터링 에이전트는 별도 포트를 요구할 수 있습니다.

Q: Ubuntu 9.10 대신 최신 배포판을 사용해도 되나요?

A: 가능합니다. 다만 패키지 명칭이나 설치 경로, PPA 가용성 등이 달라질 수 있으므로 배포판별 문서를 확인해 주세요.

발표용 요약(100–200자)

Ubuntu 9.10에 FreeNX를 설치하면 SSH를 통해 암호화된 원격 데스크톱 환경을 제공할 수 있습니다. 본 가이드는 설치, 네트워크/방화벽 설정, 클라이언트 구성, 보안 권장사항과 운영 체크리스트를 포함합니다.

마무리 요약

이 튜토리얼을 통해 Ubuntu 9.10 기반으로 FreeNX 서버를 구축하고, 방화벽 및 SSH 키 관리를 포함한 기본 보안 지침을 적용하는 방법을 배웠습니다. 운영 환경에 적용하기 전에는 반드시 내부 테스트와 보안 검토를 수행하십시오.

추가 자료 링크:

  • Ubuntu FreeNX Documentation
  • Firehol
  • Fail2ban
  • NoMachine
공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Ronggolawe 랜섬웨어 보호 가이드
사이버보안

Ronggolawe 랜섬웨어 보호 가이드

Nest 자동 꺼짐 설정: 외부가 선선할 때
홈 오토메이션

Nest 자동 꺼짐 설정: 외부가 선선할 때

이더넷 연결 시 Wi‑Fi 자동 비활성화 방법
네트워크

이더넷 연결 시 Wi‑Fi 자동 비활성화 방법

넷플릭스 맞춤 프로필 사진 설정 가이드
가이드

넷플릭스 맞춤 프로필 사진 설정 가이드

Open Me Later로 크롬 탭 자동 열기 사용법
생산성

Open Me Later로 크롬 탭 자동 열기 사용법

Ubuntu 9.04 AMD64에서 M-Audio Transit 사용하기
Linux 오디오

Ubuntu 9.04 AMD64에서 M-Audio Transit 사용하기