공인 IP에 SSH를 열어 두면 로그에 매일 수천 건의 로그인 시도가 쌓입니다. 비밀번호 로그인을 끄고 fail2ban을 써도 포트가 열려 있다는 사실 자체가 공격 면적입니다. 관리 접속을 VPN을 통해서만 허용하면 이 면적을 크게 줄일 수 있습니다.


구성 개요

관리자 PC ──(WireGuard)──▶ 서버 wg0 (10.8.0.1) ──▶ SSH(22) / SFTP / DB 관리
인터넷 ──✕──▶ SSH(22): 차단
  • 웹 서비스(80/443)는 그대로 공개합니다.
  • SSH·DB 관리 포트는 VPN 대역(예: 10.8.0.0/24)에서만 접속되도록 방화벽에서 제한합니다.

1. WireGuard 서버 설정

sudo apt install wireguard
wg genkey | sudo tee /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub
sudo chmod 600 /etc/wireguard/server.key

/etc/wireguard/wg0.conf

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <서버 개인키>

[Peer]
# 관리자 PC
PublicKey = <클라이언트 공개키>
AllowedIPs = 10.8.0.2/32
sudo systemctl enable --now wg-quick@wg0

클라이언트(관리자 PC) 설정은 다음과 같습니다.

[Interface]
Address = 10.8.0.2/24
PrivateKey = <클라이언트 개인키>

[Peer]
PublicKey = <서버 공개키>
Endpoint = <서버 공인 IP>:51820
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25

AllowedIPs를 VPN 대역으로만 지정하면 관리 트래픽만 VPN으로 보내고 일반 인터넷은 그대로 씁니다.


2. 방화벽에서 SSH를 VPN 대역으로 제한

ufw

sudo ufw allow 51820/udp                       # VPN 접속용
sudo ufw allow from 10.8.0.0/24 to any port 22 proto tcp
sudo ufw allow 80,443/tcp
sudo ufw delete allow 22/tcp                   # 공개된 SSH 규칙 삭제(있다면)
sudo ufw status numbered

firewalld

sudo firewall-cmd --permanent --add-port=51820/udp
sudo firewall-cmd --permanent --new-zone=vpn
sudo firewall-cmd --permanent --zone=vpn --add-source=10.8.0.0/24
sudo firewall-cmd --permanent --zone=vpn --add-service=ssh
sudo firewall-cmd --permanent --zone=public --remove-service=ssh
sudo firewall-cmd --reload

3. 잠금 사고를 피하는 적용 순서

SSH를 막는 작업은 한 번 잘못하면 서버에 접속할 수 없게 됩니다. 순서를 지키세요.

  1. VPN을 먼저 만들고, VPN 주소로 SSH 접속이 되는지 별도 창에서 확인합니다.
  2. 기존 SSH 세션은 닫지 않은 채 방화벽 규칙을 바꿉니다.
  3. 새 창에서 VPN으로 다시 접속해 확인한 뒤에 공개 SSH 규칙을 삭제합니다.
  4. 가능하면 콘솔(IPMI, 가상 콘솔) 접속 수단이 있는 상태에서 작업합니다.
  5. 안전장치로 일정 시간 뒤 규칙을 원복하는 예약(at, systemd-run)을 걸어 두면 더 안전합니다.

4. 함께 하면 좋은 설정

  • SSH는 비밀번호 로그인을 끄고 키 인증만 허용합니다(PasswordAuthentication no).
  • 관리자별로 VPN 키를 따로 발급하고, 퇴사·교체 시 해당 Peer만 삭제합니다.
  • DB 관리 포트(3306 등)도 같은 방식으로 VPN 대역에서만 허용합니다.
  • SSH 접속 시 알림을 받도록 로그를 감시하면, VPN 밖에서의 접속 시도를 바로 알 수 있습니다.

한계

  • VPN 자체가 새로운 관리 대상입니다. 키 관리와 서버 업데이트를 소홀히 하면 오히려 약점이 됩니다.
  • 웹 애플리케이션의 취약점(SQL 인젝션 등)은 VPN으로 막을 수 없습니다. 웹 방화벽과 업데이트가 별도로 필요합니다.
  • 일본·한국 IP로 우회하는 일반 VPN 상품과는 목적이 다릅니다. 관리 접속용 VPN은 서버 관리 접속을 안전하게 하기 위한 것입니다.

TCP-80.NET의 해킹 복구·이전 서비스는 이전한 서버에 관리자 전용 VPN 접속을 구성하고, 발급한 접속으로만 서버 관리가 가능하게 합니다. 구축 일정과 방식은 상담 후 안내드립니다.