이 글은 핵심 개념과 실제 적용 방법을 단계별로 안내합니다. 본문을 통해 독자는 실무에 바로 적용할 수 있는 구체적인 설정법과 확실한 해결책을 얻게 됩니다.
초보자부터 전문가까지 누구나 쉽게 따라 할 수 있도록 구성되었습니다. 핵심 원리를 이해하고 실제 환경에 적용해 보세요.
각 단계별로 상세한 설명과 예시 코드가 포함되어 있습니다. 이를 통해 시행착오를 줄이고 빠르게 목표를 달성할 수 있습니다.
VPS를 방치하면 24시간 안에 봇이 들어온다 무엇인가요?
VPS 한 대를 개통하고 아무 설정도 하지 않으면, 인터넷 자동화 봇들이 22번 포트(SSH)를 무차별 대입(brute force) 공격하기 시작합니다. 로그를 확인해 보면 분 단위로 수많은 로그인 시도가 기록되어 있을 것입니다. 방화벽과 SSH 보안 강화는 VPS 셋업의 가장 첫 단계입니다.

이 튜토리얼에서는 ufw(Uncomplicated Firewall)로 기본 방화벽을 설정하고, SSH 보안을 강화하여 자동화 공격을 차단하는 전체 과정을 다룹니다. Vultr, DigitalOcean, Hetzner VPS에서 그대로 적용됩니다.
1. ufw 설치 및 기본 룰셋 무엇인가요?
Ubuntu/Debian에는 기본 설치되어 있습니다. 없다면:
sudo apt update && sudo apt install -y ufw
기본 정책을 설정합니다 — 들어오는 건 전부 거부, 나가는 건 전부 허용:
sudo ufw default deny incoming
sudo ufw default allow outgoing
2. SSH 허용 후 방화벽 활성화 무엇인가요?
주의: SSH를 허용하기 전에 방화벽을 켜면 접속이 끊깁니다. 반드시 SSH 먼저 허용:
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw enable
상태 확인:
sudo ufw status verbose

3. 웹 서비스 포트 개방 무엇인가요?
Nginx/Apache 웹서버를 운영한다면:
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
4. SSH 포트 변경 (보안 강화 1단계) 무엇인가요?
기본 22번 포트를 다른 포트(예: 2222)로 변경하면 자동화 봇의 99%가 타겟에서 제외됩니다:
sudo sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
sudo systemctl restart sshd
변경 후 ufw에서 새 포트 허용:
sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp
주의: 기존 SSH 세션을 끊기 전에 새 포트로 접속되는지 반드시 확인하세요.
5. 키 인증 전환 (비밀번호 로그인 차단) 무엇인가요?
가장 효과적인 SSH 보안 조치입니다. 비밀번호 로그인을 끄고 키 인증만 허용:
// 로컬에서 키 생성 (아직 없다면)
ssh-keygen -t ed25519
// 공개키를 VPS에 복사
ssh-copy-id user@your-vps-ip
// VPS에서 비밀번호 로그인 차단
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
키 인증을 켠 뒤에 비밀번호 로그인을 꺼야 합니다 — 순서가 중요합니다.

6. fail2ban으로 무차별 대입 공격 차단 무엇인가요?
fail2ban은 로그를 모니터링하여 여러 번 실패한 IP를 자동으로 차단합니다:
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
기본 설정으로도 효과적이지만, 커스텀 규칙을 추가할 수 있습니다:
sudo tee /etc/fail2ban/jail.local >/dev/null <<'EOF'
[sshd]
enabled = true
maxretry = 3
bantime = 3600
findtime = 600
EOF
sudo systemctl restart fail2ban
3번 실패하면 1시간 차단, 10분 내 3번 실패 기준입니다.
7. 포트 노출 최소화 원칙 무엇인가요?
필요한 포트만 열어두는 것이 핵심입니다. ufw status로 주기적으로 열린 포트를 점검하세요. 데이터베이스(3306, 5432), Redis(6379)는 절대 외부에 열지 말고, 같은 서버 내 통신으로만 사용합니다.
마무리: 보안은 최소 권한이 전부다 무엇인가요?
ufw 방화벽 + SSH 키 인증 + fail2ban 조합으로 VPS의 자동화 공격 위험을 99% 줄일 수 있습니다. 10분이면 설정 가능하니 VPS 개통 직후 반드시 적용하세요.
추천 VPS: 이 튜토리얼은 Vultr, DigitalOcean, Hetzner VPS에서 그대로 적용됩니다.
자주 묻는 질문 (FAQ)
Q1. 방화벽을 켰더니 SSH 접속이 끊겼습니다.?
SSH를 허용하기 전에 ufw를 활성화하면 접속이 끊깁니다. 반드시 sudo ufw allow 22/tcp를 먼저 실행한 뒤 sudo ufw enable 순서로 진행하세요.
Q2. SSH 포트를 22번에서 바꾸면 실제로 효과가 있나요?
자동화 봇 대부분이 22번 포트만 노리기 때문에 2222 같은 다른 포트로 옮기면 상당수 공격이 걸러집니다. 다만 포트 변경 후 ufw에서 새 포트를 허용하고, 기존 SSH 세션을 끊기 전에 새 포트로 접속되는지 반드시 확인해야 합니다.
Q3. 키 인증과 비밀번호 차단은 어떤 순서로 해야 하나요?
순서가 중요합니다. ssh-keygen으로 키를 만들고 ssh-copy-id로 공개키를 서버에 올려 키 접속이 되는 것을 확인한 다음에 PasswordAuthentication no를 적용하세요. 반대로 하면 서버에 들어갈 수단이 사라집니다.
Q4. 데이터베이스 포트도 열어야 하나요?
열지 마세요. MySQL(3306), PostgreSQL(5432), Redis(6379)는 외부에 노출하지 않고 같은 서버 안에서만 통신하게 두는 것이 원칙입니다. sudo ufw status로 주기적으로 열린 포트를 점검하세요.



















