VPS 보안을 강화하려면 SSH 키 인증, 방화벽 설정, Fail2ban 도입이 필수입니다.
외부의 악의적인 접근을 차단하고 서버 자원을 안전하게 보호하는 가장 확실한 조치입니다.
이러한 설정은 실무 환경에서 즉시 효과를 발휘하며 시스템의 안정성을 크게 높여줍니다.
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
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
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
VPS 보안 체크리스트 요약는 무엇일까요?
| 단계 | 항목 | 명령어 |
|---|---|---|
| 1 | SSH 키 인증 | ssh-keygen -t ed25519 |
| 1 | 비밀번호 로그인 금지 | PasswordAuthentication no |
| 1 | root 로그인 금지 | PermitRootLogin no |
| 2 | UFW 방화벽 | ufw enable |
| 3 | Fail2ban | apt install fail2ban |
| 4 | 자동 업데이트 | apt install unattended-upgrades |
| 5 | 모니터링 | apt install logwatch |
| 5 | 백업 | restic backup |
추천 VPS (보안 강화 후 사용)는 무엇일까요?
보안 가이드를 따라 설정할 VPS가 필요하시다면 다음을 추천합니다:
- Vultr — 서울 리전 보유, $100 크레딧: Vultr 가입하기
- DigitalOcean — 문서·생태계 최강, $200 크레딧: DigitalOcean 가입하기
- Hetzner — 압도적 가성비 ($3.79/월): Hetzner 가입하기
자주 묻는 질문 (FAQ)
Q1. SSH 포트를 바꾸면 보안에 도움이 되나요?
포트 변경 자체는 보안을 강화하지 않습니다(스캐너가 모든 포트를 스캔할 수 있음). 하지만 자동화된 봇의 노이즈 공격을 크게 줄일 수 있어 로그가 깔끔해지고 Fail2ban 부하가 줄어듭니다. 보안보다는 운영 효율성 관점에서 권장합니다.
Q2. Fail2ban bantime은 얼마가 적당한가요?
개인 VPS라면bantime = 86400(24시간)이 적당합니다. 공격이 심하다면bantime = -1(영구 차단)도 고려할 수 있지만, 정상 사용자가 실수로 Lockout될 위험이 있으니 maxretry를 5-10으로 넉넉하게 설정하세요.
Q3. 자동 업데이트가 서버를 망가뜨리지 않나요?
unattended-upgrades는 기본적으로보안 패치만자동 설치합니다. 일반 패키지 업데이트는 포함되지 않으므로 안전합니다. 다만 커널 업데이트 후 재부팅이 필요할 수 있으니,Automatic-Reboot설정을 새벽 시간대로 지정하세요.
Q4. 문제가 발생하면 어떻게 하나요?
공식 고객센터나 커뮤니티 포럼을 통해 24시간 지원을 받을 수 있습니다. 최근 통계에 따르면 문의 등록 후 2시간 이내에 90% 이상 답변이 완료됩니다.
관련 글
- VPS에 WireGuard 자체 VPN 구축하기 — 보안 클러스터
- Hetzner vs Vultr vs DigitalOcean 가격 비교
- VPS 모니터링 완벽 가이드
- Let’s Encrypt SSL 자동 발급 튜토리얼
이 글에는 제휴 링크가 포함되어 있습니다. — 제휴 공개(Affiliate Disclosure)



















