새 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 또는 2222 | SSH | ✔ (변경한 포트만) |
| 80 | HTTP | ✔ |
| 443 | HTTPS | ✔ |
| 3306 | MySQL | ✕ (외부 접근 차단, 로컬만 사용) |
| 나머지 | – | ✕ (기본 차단) |
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 | 권장 스왑 |
|---|---|
| 1GB | 2GB |
| 2GB | 2~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 등)를 설치하기 전에 반드시 이 초기 설정부터 완료하세요.