첫 30분: VPS 강화 체크리스트
새 VPS는 IP를 받은 지 몇 분 안에 첫 SSH 프로브를 받습니다. 여기 제가 모든 새 서버에서 실행하는 정확한 순서가 있습니다 — Debian 13용 복사-붙여넣기 준비 완료, 끝에 체크리스트 표가 있습니다.
전제 조건: VPSRento 배포의 새 Debian 13 이미지, SSH로 root 로 로그인 상태, 예시 IP는 185.220.101.14 — 본인 것으로 대체하세요. 총 시간: 약 30분. 순서대로 진행하세요. 2단계는 서두르면 잠길 수 있습니다.
1. sudo 사용자 생성
root로 작업하는 것은 오타가 사고가 되는 방식입니다. 실제 사용자를 만들고 sudo를 부여한 다음 모든 작업을 거기서 하세요:
# create the user (you'll set a password — still useful for sudo)
adduser ops
# grant sudo
usermod -aG sudo ops
이 지점부터 아래 모든 것은 별도 명시가 없는 한 ops 로 실행됩니다.
2. SSH 키만 — 비밀번호 없음, root 로그인 없음
비밀번호 인증은 인터넷에 노출된 서버의 가장 큰 구멍입니다. 봇이 매일 자격 증명 목록으로 포트 22를 두드립니다. 키는 해당 공격 클래스를 완전히 무의미하게 만듭니다. 로컬 머신에서:
# generate a keypair if you don't have one (ed25519, no passphrase tradeoff is yours)
ssh-keygen -t ed25519 -C "ops@atlas"
# push the public key to the server
ssh-copy-id [email protected]
구성 파일을 건드리기 전에 새 터미널 — ssh [email protected] — 기존 root 세션을 탈출구로 유지하세요. 그런 다음 /etc/ssh/sshd_config:
# /etc/ssh/sshd_config — the three lines that matter
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
# validate the config, then reload (Debian 13 uses ssh.service)
sshd -t && systemctl reload ssh
prohibit-password 를 편집하세요. 평면 no 대신 의도적으로 root에 대해: root는 여전히 워크스테이션의 키로 인증할 수 있으며, 이는 공급자 콘솔 복구에 때때로 유용합니다 — 하지만 어떤 비밀번호도 어디서든 누구에게도 작동하지 않습니다. sshd -T | grep -E 'passwordauthentication|permitrootlogin'.
로 확인하세요.
3. 방화벽: 기본 거부, 실행 중인 것만 허용
apt update && apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
# SSH stays open — add this BEFORE enabling
ufw allow 22/tcp comment 'SSH'
# whatever your box actually serves, e.g.:
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'
ufw enable
ufw status verbose
Debian의 ufw는 nftables 위의 얇고 합리적인 계층입니다. 정책이 보안이고 규칙은 그에 대한 예외일 뿐입니다:
여는 모든 포트에는 이름과 이유가 있어야 합니다. 포트가 무엇을 위한 것인지 말할 수 없다면 규칙을 얻지 못합니다.
4. fail2ban: 봇을 기어가는 속도로 늦추기
apt install -y fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
maxretry = 5
findtime = 10m
bantime = 1h
systemctl enable --now fail2ban
# watch it work
fail2ban-client status sshd
비밀번호 인증이 비활성화되면 무차별 대입은 이미 죽었습니다 — 하지만 fail2ban은 로그를 읽기 쉽게 유지하고 다른 모든 것을 찌르는 스캐너를 차단합니다:
5. 자동 보안 업데이트
apt install -y unattended-upgrades
# answer Yes to auto-install updates
dpkg-reconfigure -plow unattended-upgrades
패치되지 않은 CVE는 재부팅보다 더 큰 위험입니다. Debian의 unattended-upgrades는 보안 업데이트를 자체적으로 설치합니다: /etc/apt/apt.conf.d/50unattended-upgrades 의 기본 구성은 보안 저장소에서만 가져옵니다 — 서버에서 원하는 것입니다: 보안 수정은 자동으로, 나머지는 선택할 때.
6. 실행하지 않는 것 끄기
실행 중인 모든 서비스는 패치해야 할 공격 표면입니다. 실제로 수신 중인 것을 확인하세요:
# who is listening, on what, as which process
ss -tulpn
# everything enabled at boot
systemctl list-unit-files --state=enabled
# example: you don't run a print server — nobody does
systemctl disable --now cups
규칙: 리스너가 무엇을 하는지 말할 수 없다면 살려두기 전에 알아내세요. 최소 VPSRento 이미지에는 sshd 와 본인 애플리케이션 외에는 거의 없어야 합니다.
7. 선택 사항이지만 권장: WireGuard 관리 평면
SSH 보안의 가장 강력한 형태는 인터넷에 전혀 노출되지 않는 SSH입니다. 박스에 WireGuard를 실행하고 SSH를 터널 내부에서만 허용하면 포트 22는 지구상의 모든 스캐너에서 사라집니다:
apt install -y wireguard
# /etc/wireguard/wg0.conf — minimal management tunnel
# [Interface] Address = 10.8.0.1/24, ListenPort = 51820
# open the tunnel, not the shell
ufw allow 51820/udp comment 'WireGuard'
ufw allow in on wg0 to any port 22 proto tcp comment 'SSH via WG'
ufw delete allow 22/tcp
systemctl enable --now wg-quick@wg0
그 후 ssh [email protected] 터널을 통해 접속하면 공용 IP는 정확히 하나의 UDP 포트에서만 응답합니다. 전체 WireGuard 가이드 — 키, 피어, 클라이언트 설정, 휴대폰 QR 코드 — 는 동반 가이드.
10가지 체크리스트
새 배포 후마다, 그리고 서비스를 추가할 때마다 이 표를 확인하세요:
| # | 항목 | 위치 | 확인 방법 |
|---|---|---|---|
| 1 | 비루트 sudo 사용자 | /etc/passwd | id ops |
| 2 | 키 전용 SSH 인증 | sshd_config | sshd -T | grep passwordauth |
| 3 | 루트 비밀번호 로그인 비활성화 | sshd_config | sshd -T | grep permitrootlogin |
| 4 | 방화벽 기본 수신 거부 | ufw | ufw status verbose |
| 5 | 지정된 포트만 개방 | ufw | ufw status numbered |
| 6 | fail2ban sshd 감옥 활성화 | jail.local | fail2ban-client status sshd |
| 7 | 보안 업데이트 자동 적용 | apt | systemctl status unattended-upgrades |
| 8 | 설명되지 않은 리스너 없음 | — | ss -tulpn |
| 9 | WireGuard 통한 관리 (선택 사항) | wg0.conf | wg show |
| 10 | 강화 후 스냅샷 | 클라이언트 영역 추가 기능, $1.99/월 | 서비스 → 내 VPS → 스냅샷 |
항목 10은 한 문장으로 요약됩니다: 먼저 강화하고, 그 다음 스냅샷을 찍으세요 — 깨끗하고 강화된 박스의 스냅샷은 향후 모든 실수에 대한 롤백 지점입니다. 일일 오프사이트 스냅샷은 $1.99/월 추가 기능으로 클라이언트 영역에서 제공됩니다. 예방 30분, 보험 한 번의 클릭.