VPS 보안 강화 완벽 가이드 2026 — 해킹을 막는 5단계

이 글에는 제휴 링크가 포함되어 있습니다. 링크를 통해 가입하시면 추가 비용 없이 소정의 수수료를 받습니다. — 공개

VPS를 만들자마자 해킹이 시작된다

새 VPS를 생성한 직후, 놀랍게도 4시간 이내에 전 세계의 자동화된 봇들이 SSH 포트 22번을 스캔하기 시작합니다. 비밀번호 무차별 대입(brute force) 공격이 쏟아지고, 알려진 취약점을 노리는 스캐너가 돌아갑니다. 기본 설정 그대로 둔다면 해킹은 시간문제입니다.

이 가이드에서는 VPS 보안을 5단계로 완벽하게 강화하는 방법을 설명합니다. 명령어를 순서대로 따라 하면 30분 안에 프로 수준의 보안 서버를 구축할 수 있습니다. 우분투(Ubuntu) 22.04/24.04 LTS를 기준으로 작성했으며, Debian에서도 동일하게 적용됩니다.

1단계: SSH 보안 강화 — 키 인증 + root 로그인 금지

해커의 90% 이상이 SSH를 통해 들어옵니다. 따라서 SSH 보안이 가장 중요합니다. 세 가지를 설정합니다: 비밀번호 로그인 비활성화, root 직접 로그인 금지, SSH 포트 변경.

SSH 키 생성 및 복사

# 로컬 PC에서 SSH 키 생성 (ed25519 권장)
ssh-keygen -t ed25519 -C "your_email@example.com"

# 공개키를 서버에 복사
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip

SSH 설정 변경 (/etc/ssh/sshd_config)

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

# 다음 항목들을 변경:
Port 22022                    # 기본 22에서 다른 포트로
PermitRootLogin no            # root 직접 로그인 금지
PasswordAuthentication no     # 비밀번호 로그인 끄기
PubkeyAuthentication yes      # 키 인증만 허용
MaxAuthTries 3                # 인증 시도 제한

# 설정 적용
sudo systemctl restart sshd
⚠️ 주의: 키 인증 로그인을 확인하기 전에 PasswordAuthentication을 no로 바꾸면 서버에 접속할 수 없게 됩니다. 반드시 키 로그인을 먼저 확인한 후 비밀번호 로그인을 끄세요.

2단계: UFW 방화벽 — 필요한 포트만 개방

UFW(Uncomplicated Firewall)는 우분투의 기본 방화벽 도구입니다. 핵심 원칙은 필요한 포트만 열고 나머지는 모두 막는 것입니다.

# 기본 정책 설정
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH 포트 개방 (변경한 포트 사용!)
sudo ufw allow 22022/tcp

# 웹 서버 포트
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 절대 외부에 열지 말 것:
# sudo ufw allow 3306   # MySQL — 로컬만
# sudo ufw allow 5432   # PostgreSQL — 로컬만
# sudo ufw allow 6379   # Redis — 로컬만

# 방화벽 활성화 (SSH 포트 확인 후!)
sudo ufw enable

# 상태 확인
sudo ufw status verbose
🔒 Lockout 주의: UFW를 활성화하기 전에 반드시 SSH 포트가 규칙에 추가되어 있는지 확인하세요. 그렇지 않으면 서버에서 Lockout됩니다.

3단계: Fail2ban — 무차별 대입 공격 자동 차단

Fail2ban은 로그를 실시간으로 모니터링하면서, 비정상적으로 많은 로그인 시도를 하는 IP를 자동으로 방화벽 차단하는 도구입니다. SSH뿐만 아니라 Nginx, Apache, WordPress 로그도 모니터링할 수 있습니다.

# Fail2ban 설치
sudo apt update && sudo apt install fail2ban -y

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

# 다음 설정 추가:
[sshd]
enabled = true
port = 22022
maxretry = 5
findtime = 3600
bantime = 86400

[sshd-ddos]
enabled = true
port = 22022

# Fail2ban 재시작
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

# 상태 확인
sudo fail2ban-client status sshd

# 차단 해제 (필요 시)
sudo fail2ban-client set sshd unbanip 

bantime = 86400은 24시간 차단, findtime = 3600은 1시간 내, maxretry = 5는 5회 실패를 의미합니다. 즉 1시간 안에 5번 로그인에 실패하면 24시간 동안 자동 차단됩니다.

4단계: 자동 보안 업데이트 — unattended-upgrades

보안 패치는 하루라도 늦으면 안 됩니다. 알려진 취약점이 발견되면 해커가 그보다 빠르게 공격 도구를 배포합니다. unattended-upgrades로 보안 업데이트를 자동 설치하세요.

# 패키지 설치
sudo apt install unattended-upgrades apt-listchanges -y

# 자동 업데이트 활성화
sudo dpkg-reconfigure -plow unattended-upgrades

# 자동 설정 확인 (/etc/apt/apt.conf.d/20auto-upgrades)
cat /etc/apt/apt.conf.d/20auto-upgrades

# 다음과 같아야 함:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";

# 수동으로 테스트 (dry-run)
sudo unattended-upgrade --dry-run --verbose

보안 패치만 자동 설치되며, 일반 패키지 업데이트는 수동으로 진행해야 안전합니다. 업데이트 로그는 /var/log/unattended-upgrades/에서 확인할 수 있습니다.

5단계: 모니터링 + 정기 백업

로그 모니터링 (logwatch)

# logwatch 설치 — 매일 시스템 로그 요약 이메일
sudo apt install logwatch -y

# 수동으로 보고서 생성
sudo logwatch --output mail --email your@email.com --detail high

# 실패한 SSH 로그인 확인
grep "Failed password" /var/log/auth.log | tail -20

# root 로그인 시도 확인
grep "root" /var/log/auth.log | grep "Failed" | wc -l

자동 백업 (restic)

# restic 설치
sudo apt install restic -y

# 백업 리포지토리 초기화
restic init --repo /backup/vps

# 첫 백업
restic backup --repo /backup/vps /var/www /etc /home /opt

# 자동 백업 (cron)
crontab -e
# 매일 새벽 3시 백업
0 3 * * * restic backup --repo /backup/vps /var/www /etc /home /opt
30 3 * * * restic forget --repo /backup/vps --keep-daily 7 --keep-weekly 4 --prune
✅ 백업의 황금 규칙 (3-2-1): 데이터 3개 복사, 2개 매체, 1개 오프사이트. 그리고 반드시 복원 테스트를 하세요. 복원이 안 되는 백업은 백업이 아닙니다.

VPS 보안 체크리스트 요약

단계 항목 명령어
1SSH 키 인증ssh-keygen -t ed25519
1비밀번호 로그인 금지PasswordAuthentication no
1root 로그인 금지PermitRootLogin no
2UFW 방화벽ufw enable
3Fail2banapt install fail2ban
4자동 업데이트apt install unattended-upgrades
5모니터링apt install logwatch
5백업restic backup

추천 VPS (보안 강화 후 사용)

보안 가이드를 따라 설정할 VPS가 필요하시다면 다음을 추천합니다:

FAQ — 자주 묻는 질문

SSH 포트를 바꾸면 보안에 도움이 되나요?

포트 변경 자체는 보안을 강화하지 않습니다(스캐너가 모든 포트를 스캔할 수 있음). 하지만 자동화된 봇의 노이즈 공격을 크게 줄일 수 있어 로그가 깔끔해지고 Fail2ban 부하가 줄어듭니다. 보안보다는 운영 효율성 관점에서 권장합니다.

Fail2ban bantime은 얼마가 적당한가요?

개인 VPS라면 bantime = 86400(24시간)이 적당합니다. 공격이 심하다면 bantime = -1(영구 차단)도 고려할 수 있지만, 정상 사용자가 실수로 Lockout될 위험이 있으니 maxretry를 5-10으로 넉넉하게 설정하세요.

자동 업데이트가 서버를 망가뜨리지 않나요?

unattended-upgrades는 기본적으로 보안 패치만 자동 설치합니다. 일반 패키지 업데이트는 포함되지 않으므로 안전합니다. 다만 커널 업데이트 후 재부팅이 필요할 수 있으니, Automatic-Reboot 설정을 새벽 시간대로 지정하세요.

관련 글

이 글에는 제휴 링크가 포함되어 있습니다. — 제휴 공개(Affiliate Disclosure)