Journey to Security/리눅스

우분투 서버에 Claude Code 설치하기

Cordilog 2026. 6. 17. 18:30

0. 이 서버의 목적

이번에 구축할 서버는 다음 두 가지를 목적으로 한다.

첫째, SOAR(Security Orchestration, Automation and Response) 엔진을 직접 개발하고 실행할 전용 서버가 필요하다. 보안 이벤트를 자동으로 수집·분석·대응하는 파이프라인을 Python으로 짜고, 개발 도구로 Claude Code를 사용한다.

별도로 구축한 방화벽 VM, 공격용 VM(Kali)과 동일한 네트워크에 붙여서 실제 보안 실습 시나리오와 연동하려는 목적이다.

 

둘째, 향후 AWS EC2로의 이전을 염두에 두고 구축한다.

로컬 VM에서 충분히 검증한 뒤, 동일한 환경의 EC2 인스턴스에 그대로 올려서 클라우드 기반 SOAR 운영 실습까지 이어가는 것을 최종 목표로 한다.

따라서 AWS 호환성을 기준으로 OS를 선택한다.

 

1. OS : Ubuntu 24.04 LTS

위의 목적을 고려하면  AWS EC2로의 이식성이 OS 선택의 주 판단 기준이이 된다.

Ubuntu 24.04 LTS를 선택하면 로컬 VM에서 개발·테스트한 환경을 EC2에 거의 그대로 올릴 수 있다.

패키지 관리자(apt), 파일 경로, 시스템 서비스 구조가 동일하기 때문에 마이그레이션 시 추가 작업이 거의 없다.

 

지금은 VMware에서 구축을 할 목적이므로 Ubuntu Server 24.04 LTS ISO (ubuntu-24.04-live-server-amd64.iso)를 다운받는다.

아래 링크로 들어가서 Previous releases > [Download 24.04.4 LTS]를 클릭해서 다운받는다. 

https://ubuntu.com/download/server

 

2. 전체 구축 흐름

 

 

3. VMware에서 Ubuntu Server VM 생성

1️⃣ VM 생성 시 Guest OS 선택

VMware Workstation에서 New Virtual Machine Wizard를 열면 Guest operating system에서 Linux를 선택하게 된다.

이때 Version 드롭다운에서 Ubuntu 64-bit를 선택한다.

2️⃣ 네트워크 어댑터 설정

기존 랩 환경의 방화벽 VM의 첫 번째 Network Adapter가 VMnet8이고, 이 네트워크가 192.168.100.0/24 대역이다.

이번에 구축하는 SOAR 서버도 이 대역에 붙여야 하므로 네트워크 설정을 다음과 같이 변경한다.

 

이렇게 하면 방화벽(192.168.100.10), Kali(192.168.100.3)와 같은 네트워크 세그먼트에 위치하게 된다.

 

 

2️⃣ CD/DVD (SATA) 설정

 

부팅시 사용할 iso 이미지 파일을 선택한다.

 

 

설정이 완료되면 가상머신을 켠다.

 

4. Ubuntu Server 설치

대부분 디폴트 값으로 놔두고 Done을 눌러서 넘어가면 되고, 아래 몇 가지 사항만 수동으로 설정을 변경해준다.

 

1️⃣ 네트워크 고정 IP 설정

설치 중 네트워크 인터페이스 ens33이 DHCP로 IP를 자동 할당받는다.

여기서 고정 IP로 변경한다. 

ens33을 선택 → Edit IPv4 → Method를 Manual로 바꾼 뒤 서브넷, IP주소, 게이트웨이, 네임서버 등을 입력한다.

 

 

2️⃣ 서버 이름 및 계정 설정

서버의 역할이 직관적으로 보이도록 이름을 설정하는 것이 좋다.

 

위와 같이 설정하면 SSH 접속할 때 프롬프트에 soaradmin@soar로 표시되어 다른 VM과 구분하기 쉽다.

 

3️⃣ OpenSSH Server 설치

설치 과정에서 Install OpenSSH server 항목을 반드시 체크한다.

이걸 빠뜨리면 외부에서 SSH 접속이 안된다.

 

4️⃣ 설치 완료 후 재부팅

설치가 끝나고 재부팅을 하면 아래와 같은 메시지가 뜨는데 그냥 Enter를 누르면 된다.

VMware가 ISO를 보통 자동으로 분리해준다. (만약 Enter 후에 다시 설치 화면이 나오면, VM을 끄고 → VM Settings → CD/DVD → Connected 체크를 해제한 뒤 다시 부팅한다.)

 

5️⃣ 사용자 로그인

Rocky Linux에서는 root 계정으로 직접 로그인이 가능하지만, Ubuntu는 기본적으로 root 직접 로그인이 막혀 있다.

설치할 때 만든 계정으로 로그인하고, root 권한이 필요하면 sudo를 사용한다.

soaradmin    ← 로그인
sudo -i      ← root 쉘이 필요할 때

 

5. SSH 접속 확인 및 패키지 설치

1️⃣ 외부 터미널 프로그램에서 SSH 접속

ssh soaradmin@192.168.100.35

 

접속에 성공하면 Welcome 메시지와 함께 쉘이 열린다. IP 설정이 정상적으로 적용된 것이다.

 

2️⃣ 필수 패키지 목록

Claude Code를 실행하려면 Node.js 런타임이 필요하고, SOAR 엔진은 Python으로 개발하므로 Python 관련 패키지도 함께 설치한다. 

 

각 패키지의 역할은 다음과 같다.

패키지 용도 역할
python3 Python 인터프리터 SOAR 엔진 전체를 Python으로 작성
python3-pip Python 패키지 관리자 requests, pyyaml 같은 외부 라이브러리 설치
python3-venv Python 가상환경 프로젝트별 라이브러리 격리 (시스템 Python 보호)
git 버전 관리 GitHub에 코드 업로드
Node.js 18 JavaScript 런타임 Claude Code가 Node.js 위에서 동작
npm Node.js 패키지 관리자 npm install -g로 Claude Code 설치

 

3️⃣ 설치 명령어 실행

아래 명령어로 패키지 설치를 진행하고 버전을 확인한다.

# 패키지 목록 업데이트
sudo apt update && sudo apt upgrade -y

# Python, pip, git 설치
sudo apt install -y python3 python3-pip python3-venv git

# Node.js 18 설치
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

 

4️⃣ 설치 확인

# 버전 확인
python3 --version
node --version
npm --version

 

6. Claude Code 설치 및 초기 설정

1️⃣ Claude Code 설치

npm을 이용해 글로벌로 설치한다.

sudo npm install -g @anthropic-ai/claude-code

여기서 -g 플래그는 글로벌 설치를 의미한다. npm의 패키지 설치 방식은 두 가지가 있다.

설치 방식 명령어 설치 위치 사용 범위
로컬 설치 npm install 패키지명 현재 프로젝트의 node_modules/ 해당 프로젝트 내에서만 사용 가능
글로벌 설치 npm install -g 패키지명 시스템 전역 경로 (/usr/lib/node_modules/) 어느 디렉토리에서든 명령어로 실행 가능

Claude Code는 특정 프로젝트에 종속되는 라이브러리가 아니라, 터미널 어디에서든 claude 명령으로 실행해야 하는 CLI 도구이기 때문에 글로벌로 설치해야 한다. 

 

2️⃣ 프로젝트 디렉토리 생성 및 실행

mkdir ~/mini-soar && cd ~/mini-soar
claude

claude 명령을 처음 실행하면 초기 설정 화면이 순서대로 나타난다.

 

🔵 테마 선택 : Dark mode가 선택된 상태에서 그대로 Enter. SSH 터미널에서는 Dark mode가 가장 가독성이 좋다.

 

🔵 인증 방식 선택 : 1번(Claude 구독 계정 로그인)을 선택한다.

 

🔵 OAuth URL 인증 : 터미널에 표시되는 URL을 복사해서 Windows 브라우저에 붙여넣는다. 로그인하면 인증 코드가 나타나는데, 이 코드를 복사해서 터미널에 붙여넣으면 인증이 완료된다.

 

** 인증 과정에서 표시되는 URL은 일회성 OAuth 인증 URL로, 한 번 사용하면 만료되고, 로그인한 사람의 브라우저 세션이 있어야 인증이 완료되므로 보안 위험은 낮지만 가급적 노출하지 않는 것이 좋다.

 

🔵 디렉토리 신뢰 확인 : 직접 생성한 ~/mini-soar 폴더이므로 Enter.

 

이제 클로드 코드를 사용할 준비가 완료되었다.