오라클 클라우드의 '평생 무료' 플랜(Always Free Tier)을 활용하여 개인 웹서버를 구축하는 과정을 단계별로 정리했습니다. 이 가이드를 따라오시면 VM 인스턴스 생성부터 웹서버 설치, 기본 보안 설정까지 완료할 수 있습니다.


STEP 1: 오라클 클라우드 가입 및 VM 인스턴스 생성

가장 먼저 서버 역할을 할 가상 머신(VM)을 만들어야 합니다.

  1. Oracle Cloud 가입: 오라클 클라우드에 접속하여 신용카드 정보를 입력하고 가입을 완료합니다. (과금되지 않습니다.)
  2. VM 인스턴스 생성:
    • VM 이름을 원하는 대로 설정합니다.
    • OS는 Ubuntu 20.04로 변경합니다. (기본값: Oracle Linux)
    • SSH 접속에 필요한 비공개 키(private.key)를 다운로드합니다. 이 파일은 절대 잃어버리면 안 됩니다.
    • '생성' 버튼을 누르고 약 2분 정도 기다린 후, 'Start' 버튼으로 VM을 시작합니다.

STEP 2: 도메인 연결을 위한 고정 IP 설정

서버를 재부팅해도 IP 주소가 바뀌지 않도록 고정 IP(예약된 공용 IP)를 설정해야 합니다. 프리티어 계정당 1개의 고정 IP를 무료로 사용할 수 있습니다.

1. 고정 IP 생성하기

  • 오라클 클라우드 메뉴에서 네트워킹 > IP 관리 > 예약된 공용 IP로 이동합니다.
  • 예약된 공용 IP 주소 등록 버튼을 클릭합니다.
  • IP 주소 이름을 입력하고 등록 버튼을 눌러 생성을 완료합니다.

2. 생성한 고정 IP를 VM에 연결하기

  • 컴퓨트 > 인스턴스 > (생성한 VM 클릭) > 연결된 VNIC로 이동하여 기본 VNIC 링크를 클릭합니다.
  • 왼쪽 메뉴에서 IPv4 주소를 선택합니다.
  • 기존에 할당된 임시 공용 IP 오른쪽의 ... 버튼을 눌러 편집을 선택합니다.
  • 공용 IP 유형을 **'공용 IP 없음'**으로 변경하고 업데이트합니다.
  • 다시 ... 버튼 > 편집을 선택한 후, 공용 IP 유형을 **'예약된 공용 IP'**로 변경합니다.
  • 방금 생성한 고정 IP를 선택하고 업데이트하면 연결이 완료됩니다.

STEP 3: SSH 접속 및 서버 리소스 확인

이제 내 컴퓨터에서 방금 생성한 클라우드 서버에 접속해 보겠습니다.

  • 인스턴스 세부 정보 페이지에서 **'공용 IP 주소'**를 복사합니다.
  • 로컬 컴퓨터의 터미널(명령 프롬프트, PowerShell 등)을 열고 아래 명령어를 입력합니다.
Bash
 
# '다운받은 Private KEY' 부분에 실제 파일 경로를, 'IP주소'에 복사한 주소를 넣으세요.
ssh -i '다운받은 Private KEY' ubuntu@IP주소
  • 접속에 성공했다면, 아래 명령어로 서버의 사양을 간단히 확인할 수 있습니다.
Bash
 
# 메모리 사용량 확인 (약 1GB)
free -h

# 디스크 용량 확인 (약 50GB)
df -h

STEP 4: Swap 메모리 설정으로 서버 안정성 높이기

프리티어 VM은 메모리(1GB)가 부족하여 갑자기 서버가 멈출 수 있습니다. 이를 방지하기 위해 디스크의 일부를 메모리처럼 사용하는 Swap 공간을 설정해 줍니다.

1. Swap 적용 여부 확인

아래 명령어를 입력했을 때 swap 영역이 모두 0으로 나오면 설정이 필요한 상태입니다.

Bash
 
sudo free -m
sudo swapon -s

2. Swap 파일 생성 및 활성화

Bash
 
# 4GB 크기의 swapfile 생성
sudo fallocate -l 4G /swapfile

# swapfile에 적절한 권한 부여
sudo chmod 600 /swapfile

# 해당 파일을 스왑 공간으로 지정
sudo mkswap /swapfile

# 스왑 활성화
sudo swapon /swapfile

3. 재부팅 시에도 Swap 자동 적용

서버를 재부팅해도 Swap이 자동으로 활성화되도록 설정 파일을 수정합니다.

Bash
 
# fstab 파일 열기
sudo nano /etc/fstab

파일 맨 아래에 다음 내용을 추가하고 저장(Ctrl+O) 후 종료(Ctrl+X)합니다.

/swapfile swap swap defaults 0 0

STEP 5: Nginx 웹서버 설치 및 실행

가장 대표적인 웹서버 중 하나인 Nginx를 설치합니다.

Bash
 
# 패키지 목록 업데이트
sudo apt-get update

# Nginx 설치 (-y 옵션으로 모든 질문에 yes)
sudo apt-get install nginx -y

# Nginx 서비스 상태 확인
systemctl status nginx

# Nginx가 실행 중이 아니라면 아래 명령어로 시작 및 자동 실행 등록
sudo systemctl enable nginx
sudo systemctl start nginx

STEP 6: 방화벽 설정 (포트 개방)

Nginx를 설치해도 외부에서 접속하려면 서버로 들어오는 길(포트)을 열어주어야 합니다. 웹 접속을 위한 80(HTTP), 443(HTTPS) 포트를 개방하겠습니다.

1. Oracle Cloud에서 인그레스(Ingress) 규칙 추가

  • VM 인스턴스 상세 페이지에서 '서브넷' 링크를 클릭합니다.
  • '보안 목록' 링크를 클릭합니다.
  • '수신 규칙 추가' 버튼을 누르고 아래 내용으로 규칙을 추가합니다.
    • 소스 유형: CIDR
    • 소스 CIDR: 0.0.0.0/0 (모든 IP에서의 접속 허용)
    • IP 프로토콜: TCP
    • 대상 포트 범위: 80, 443

 

2. VM 자체 방화벽(iptables) 설정

SSH로 접속된 터미널에서 아래 명령어를 차례대로 입력합니다.

Bash
 
# 80번 포트(HTTP) 개방
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

# 443번 포트(HTTPS) 개방
sudo iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT

# 변경된 방화벽 규칙 저장
sudo netfilter-persistent save

# 규칙이 잘 적용되었는지 확인
sudo iptables -L --line

이제 웹 브라우저 주소창에 내 서버의 고정 IP 주소를 입력하면 Nginx 초기 화면("Welcome to nginx!")이 나타납니다.


STEP 7: Fail2ban으로 SSH 보안 강화하기 🛡️

서버가 외부에 노출되면 수많은 무차별 대입 공격(Brute-force attack) 시도가 들어옵니다. Fail2ban은 정해진 횟수 이상 로그인에 실패한 IP를 자동으로 차단하여 서버를 보호하는 훌륭한 도구입니다.

1. 설치 및 실행 확인

Bash
 
# 패키지 목록 업데이트
sudo apt-get update

# Fail2ban 설치
sudo apt-get install fail2ban -y

# Fail2ban 서비스가 실행 중인지 확인
sudo service fail2ban status

2. 기본 설정 (jail.local)

기본 설정 파일을 복사하여 우리만의 설정을 만듭니다.

Bash
 
# 설정 파일 생성
sudo nano /etc/fail2ban/jail.local

아래 내용을 붙여넣고 필요에 맞게 수정합니다. (예: bantime을 늘리거나 maxretry를 줄이기)

Ini, TOML
 
[DEFAULT]
# 이 IP 대역은 절대 차단하지 않음 (내부 IP 등)
ignoreip = 127.0.0.1/8 192.168.0.0/24

# 차단할 로그인 시도 감지 시간 (1일)
findtime = 1d

# 로그인 시도 허용 횟수
maxretry = 5

# 차단 기간 (1주일). -1 입력 시 영구 차단
bantime = 1w

[sshd]
enabled = true

설정 후 저장(Ctrl+O)하고 종료(Ctrl+X)한 뒤, Fail2ban을 재시작하여 설정을 적용합니다.

Bash
 
sudo service fail2ban restart

3. Fail2ban 사용법

Bash
 
# 현재 차단된 IP 목록 보기
sudo fail2ban-client status sshd

# 특정 IP 차단 해제하기
sudo fail2ban-client set sshd unbanip <IP주소>

# 특정 IP 수동으로 차단하기
sudo fail2ban-client set sshd banip <IP주소>

이것으로 오라클 클라우드에 나만의 웹서버를 구축하고 기본적인 보안 설정까지 마쳤습니다. 수고하셨습니다!

 

참고 자료

- https://blog.ny64.kr/posts/create-your-own-lifetime-free-server-using-oracle-cloud/

 

나만의 '평생' 무료 서버 만들기

오라클 클라우드 무료티어를 사용해 나만의 ‘평생’ 무료 VPS를 만들어보자 [1]

blog.ny64.kr

- https://blog.ny64.kr/posts/oracle-cloud-swap-setup-and-nginx-installation/

 

Swap 설정 및 Nginx서버 설치

오라클 클라우드 무료티어를 사용해 나만의 ‘평생’ 무료 VPS를 만들어보자 [2]

blog.ny64.kr

- https://2vup.com/install-nginx-oracle-cloud/

 

[Oracle Cloud] 오라클 클라우드에 평생 무료 서버 만들기(프리티어 기간 종료 이후 가능)

☁️ 오라클 클라우드 (Oracle Cloud) 아마존 라이트세일(AWS), 구글 클라우드 플랫폼(GCP), 오라클 클라우드(OC) 중 가장 나은 사양의 인스턴스를 평생 무료로 대여해주는 오라클 클라우드에 인스턴스

2vup.com

- https://velog.io/@dm911/Oracle-%EA%B3%A0%EC%A0%95IP-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0

 

Oracle 고정IP 설정하기

Oracle 고정IP 설정하기 !!

velog.io

- https://blog.ny64.kr/posts/setting-up-fail2ban-on-raspberry-pi/

 

Fail2ban으로 SSH 보안 강화하기

자동 IP 차단으로 SSH 보안을 강화하자 / 리눅스 서버 보안설정 [1]

blog.ny64.kr

- https://blog.ny64.kr/posts/setting-up-swap-on-raspberry-pi/

 

Swap 설정하기

메모리가 부족하다면 디스크를 메모리처럼 사용하자

blog.ny64.kr

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기