Ubuntu 서버 초기 설정 가이드 – 보안과 기본 세팅 10가지

새 Ubuntu 서버를 처음 세팅할 때 기본 보안과 환경 설정을 빠뜨리면 해킹 위험에 노출됩니다. 이 글에서 Ubuntu 서버(22.04/24.04 LTS)를 처음 받은 후 반드시 해야 할 10가지 초기 설정을 순서대로 안내합니다.

1. 시스템 업데이트 (가장 먼저!)

# 패키지 목록 업데이트 + 설치된 패키지 업그레이드
sudo apt update && sudo apt upgrade -y

# 재부팅 (커널 업데이트 적용)
sudo reboot

서버를 처음 받으면 수십 개의 보안 패치가 밀려 있을 수 있습니다. 다른 설정 전에 반드시 업데이트하세요.

2. 일반 사용자 생성 (root 사용 금지)

# 새 사용자 생성
sudo adduser wpadmin

# sudo 권한 부여
sudo usermod -aG sudo wpadmin

# 새 사용자로 전환 테스트
su - wpadmin
sudo whoami  # root가 출력되면 성공

이유: root 계정으로 직접 작업하면 실수로 시스템을 망칠 수 있고, 보안 위험도 높습니다. 일반 사용자 + sudo 조합이 안전합니다.

3. SSH 키 인증 설정

# 로컬 PC에서 SSH 키 생성 (아직 없다면)
ssh-keygen -t ed25519

# 서버에 공개키 등록
ssh-copy-id wpadmin@서버IP

# 키로 접속 테스트
ssh wpadmin@서버IP
# → 비밀번호 없이 접속되면 성공!

4. SSH 보안 강화

# SSH 설정 파일 편집
sudo nano /etc/ssh/sshd_config

# 다음 항목들을 변경:
Port 2222                     # 기본 22번 포트 변경 (봇 공격 감소)
PermitRootLogin no            # root 직접 로그인 차단
PasswordAuthentication no     # 비밀번호 로그인 차단 (키 인증만)
MaxAuthTries 3                # 인증 시도 3회 제한

# SSH 서비스 재시작
sudo systemctl restart sshd

⚠️ 주의: SSH 키가 정상 작동하는 것을 확인한 후에 비밀번호 인증을 끄세요! 키 없이 접속이 막힙니다.

5. 방화벽 설정 (UFW)

# UFW 설치 (보통 기본 설치됨)
sudo apt install ufw

# 기본 정책: 들어오는 트래픽 차단, 나가는 트래픽 허용
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 필요한 포트만 허용
sudo ufw allow 2222/tcp    # SSH (변경한 포트)
sudo ufw allow 80/tcp      # HTTP
sudo ufw allow 443/tcp     # HTTPS

# 방화벽 활성화
sudo ufw enable

# 상태 확인
sudo ufw status verbose
포트용도허용 여부
22 또는 2222SSH✔ (변경한 포트만)
80HTTP
443HTTPS
3306MySQL✕ (외부 접근 차단, 로컬만 사용)
나머지✕ (기본 차단)

6. Fail2Ban 설치 (무차별 대입 공격 방어)

# 설치
sudo apt install fail2ban -y

# 설정 파일 복사
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

# [sshd] 섹션 수정:
[sshd]
enabled = true
port = 2222       # SSH 포트에 맞게
maxretry = 3      # 3회 실패 시
bantime = 3600    # 1시간 차단

# 서비스 시작
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# 차단된 IP 확인
sudo fail2ban-client status sshd

Fail2Ban은 SSH 비밀번호 무차별 대입 공격을 자동으로 차단합니다. 비밀번호 인증을 끈 경우에도 설치해두면 로그가 깨끗해집니다.

7. 자동 보안 업데이트 설정

# unattended-upgrades 설치 (보통 기본 설치됨)
sudo apt install unattended-upgrades -y

# 자동 업데이트 활성화
sudo dpkg-reconfigure --priority=low unattended-upgrades
# → "Yes" 선택

보안 패치가 자동으로 설치되어 알려진 취약점에 빠르게 대응합니다.

8. 시간대 설정

# 현재 시간대 확인
timedatectl

# 한국 시간대로 설정
sudo timedatectl set-timezone Asia/Seoul

# NTP 동기화 활성화
sudo timedatectl set-ntp true

9. 스왑 메모리 설정 (RAM이 적을 때)

# 현재 스왑 확인
free -h

# 2GB 스왑 파일 생성
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 재부팅 후에도 유지
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# 확인
free -h
서버 RAM권장 스왑
1GB2GB
2GB2~4GB
4GB+2GB (또는 RAM의 50%)

10. 기본 도구 설치

# 자주 쓰는 도구 한 번에 설치
sudo apt install -y 
    curl wget git vim htop 
    net-tools unzip zip 
    software-properties-common

초기 설정 체크리스트

  • ☐ 시스템 업데이트 (apt update && upgrade)
  • ☐ 일반 사용자 생성 + sudo 권한
  • ☐ SSH 키 인증 설정
  • ☐ SSH 포트 변경 + root 로그인 차단 + 비밀번호 인증 끄기
  • ☐ UFW 방화벽 활성화 (SSH, 80, 443만 허용)
  • ☐ Fail2Ban 설치
  • ☐ 자동 보안 업데이트 활성화
  • ☐ 시간대 Asia/Seoul 설정
  • ☐ 스왑 메모리 설정 (RAM < 4GB인 경우)
  • ☐ 기본 도구 설치

마무리

이 10가지를 완료하면 보안이 강화되고 안정적인 서버 환경이 갖춰집니다. 소요 시간: 약 20~30분. 서버를 처음 받으면 다른 서비스(Nginx, PHP, MySQL 등)를 설치하기 전에 반드시 이 초기 설정부터 완료하세요.

댓글 남기기