사이버 공격 방어 방법
서버의 플레이어 수가 늘고 홍보를 많이 할수록 경쟁 서버나 악의적인 플레이어에게 공격받을 가능성도 커진다.
겁먹을 필요는 없다. 대부분의 공격은 그렇게 치명적이지 않고, 플레이어의 핑이 높아지거나 접속이 끊기고 관리 작업이 버벅이는 정도에 그친다.
Minecraft 서버가 흔히 받는 공격 유형을 정리한다.
애플리케이션 계층 (L7)
섹션 제목: “애플리케이션 계층 (L7)”서버에서 실행되며 특정 주소와 포트에 바인딩된 애플리케이션은 이 계층에서 연결을 받는다.
애플리케이션 계층 공격은 대개 특정 애플리케이션을 노린 공격이다.
공격자는 보통 애플리케이션의 취약점을 이용해 컴퓨터 자원을 더 많이 쓰게 하거나, 대량의 요청으로 대역폭을 가득 채워 서버가 새 연결을 처리하기 어렵게 만든다.
봇 공격
섹션 제목: “봇 공격”봇 공격(Fake Player Attack)은 공격자가 정상 플레이어의 행동을 흉내 내 Minecraft 서버에 비정상적인 요청을 보내고, 이를 통해 서버를 마비시키거나 뚫는 공격 방식이다.
봇이 서버에 주는 영향은 다양하며, 예를 들면 다음과 같다.
- 봇이 대량으로 몰려들어 최대 인원을 채우면 정상 플레이어가 들어올 수 없다.
- 봇의 접속과 퇴장이 반복되면, 완성도가 낮은 플러그인이 이를 처리하다가 메모리 누수 등 예상치 못한 문제를 일으킬 수 있다.
- 채팅창에 스팸을 도배해 정상적인 메시지 처리와 채팅 경험을 망친다.
어느 정도는 웹 보안에서 말하는 CC 공격과 비슷하다.
MOTD(상태 요청) 공격
섹션 제목: “MOTD(상태 요청) 공격”간단히 말해 서버에 상태를 요청(즉 핑)하는 공격이다. 플레이어가 서버에 핑을 보낼 때마다 서버는 MOTD를 돌려준다.
MOTD에는 이미지와 텍스트가 들어 있어서, 요청이 대량으로 몰리면 서버 대역폭이 가득 차 새 연결을 처리하기 어려워진다.
Minecraft 백엔드 서버는 보통 핑을 걸러 내거나 기록하지 않아서 MOTD 공격을 알아채기 어렵다.
반면 Velocity / BungeeCord 같은 리버스 프록시 서버는 기본적으로 핑을 기록하며, 다음과 비슷하게 나온다.
[/127.0.0.1:61647] <-> InitialHandler has pinged기타 플러그인
섹션 제목: “기타 플러그인”Plan, Dynmap 같은 플러그인은 특정 포트에 웹사이트를 연다.
악의적인 사람이 이 포트를 알게 되면 해당 HTTP 포트가 공격받을 수 있다는 점에 주의하자.
Minecraft 취약점 공격
섹션 제목: “Minecraft 취약점 공격”Minecraft 게임 자체의 취약점을 이용해 서버에 (대량의) 비정상 패킷을 보내 서버에 렉을 일으키거나 아예 크래시시키는 공격이다. 예를 들어 공격자는 BDS 서버에 빈 패킷을 대량으로 보내 서버가 계속 로그만 찍느라 게임을 정상적으로 처리하지 못하게 만들 수 있다.
원격 데스크톱 / SSH 무차별 대입
섹션 제목: “원격 데스크톱 / SSH 무차별 대입”인내심만 충분하면 숫자 맞히기 게임은 언젠가 반드시 이긴다. 원격 데스크톱이나 SSH도 마찬가지다. 사용자를 가려내는 복잡한 검증 장치가 없어서 누구나 제한 없이 계속 시도할 수 있다. 그래서 공격자는 스크립트 등으로 프로그램을 만들어 비밀번호를 계속 바꿔 가며 원격 접속 서비스에 로그인을 시도한다. 이것이 무차별 대입 공격(브루트 포스)이다. 로그인에 성공하는 순간 공격도 성공하고, 공격자는 서버의 모든 권한을 손에 넣는다.
이 서비스들은 워낙 흔해서, 세계 곳곳의 공격자들이 IPv4 대역을 스캔하거나(특정 IP 대역의 모든 IP를 하나씩 검사해 공격 대상을 찾는 방식), 포트를 스캔해서(특정 IP의 모든 포트를 검사해 공격 대상을 찾는 방식) 서버의 원격 접속 주소를 찾아낸다. 서버나 서버 운영자에 대해 아무것도 몰라도 된다. 즉 이런 공격을 받았다면 누구를 화나게 했는지, 누구와 척을 졌는지 고민하기보다 공격 자체를 막는 데 집중해야 한다.
네트워크 계층 (L3)
섹션 제목: “네트워크 계층 (L3)”네트워크 계층 공격은 DDoS 공격의 한 형태로, 네트워크 인프라를 노린다.
가장 흔한 네트워크 계층 공격으로는 ICMP Flood, IP 단편화 공격, IP 스푸핑(보조 수단)이 있다. 공격자는 IP 주소를 위조해 대상 서버에 대량의 패킷을 보내 네트워크 대역폭과 시스템 자원을 소모시킨다.
이런 공격을 막는 방법은 대역폭을 늘리는 것뿐이고, 딱히 다른 좋은 방법은 없다.
가능한 방법은 네트워크 계층과 전송 계층 공격 방어에 정리했다.
전송 계층 (L4)
섹션 제목: “전송 계층 (L4)”Minecraft Java 서버는 TCP로 통신하므로 TCP Flood(SYN Flood, ACK Flood 등) 같은 공격을 받을 수 있다.
마찬가지로 가능한 방법은 네트워크 계층과 전송 계층 공격 방어에 정리했다.
해결 방법
섹션 제목: “해결 방법”조용히 지내고 분란을 만들지 말자
섹션 제목: “조용히 지내고 분란을 만들지 말자”서버 운영 판에서 벌어지는 공격 상당수는 이유 없이 일어나지 않는다. 대부분 서버 운영자가 공격할 능력이 있는 사람을 건드려서 생긴다. 당신은 전문 기업가나 사업가가 아니고, 당신의 서버는 매우 취약하다. Minecraft는 세계에서 가장 많이 팔린 게임이고, 그만큼 플레이어 커뮤니티도 복잡하고 혼란스럽다. 잘 모른다면 반드시 신중하게 대하자.
- 서버의 제재에 화가 난 플레이어에게 무조건 강경하게 나가지 말자. 가능하면 개인적으로 해결하고, 처벌을 가볍게 하거나 제재 목록에서 빼 주는 등 본인이 처벌 결과에 납득하게 하자. 막무가내인 플레이어라면 그 행동 자체는 부당하더라도, 손님은 왕이니 협상하고 어느 정도 양보해야 한다. 상대가 정말로 서버를 망가뜨리려고 작정했을 때 비로소 강경하게 대응해 자신을 지키자. 협상이 끝난 뒤에는 다른 플레이어에게 이 일을 절대 언급하지 말자.
- 결제했거나 후원했거나 활발히 활동하는 플레이어에게는 규칙 위반 판정 기준을 조금 느슨하게 적용하고, 피드백에 먼저 응답하자. 서버에 돈이나 많은 시간을 쓰는 플레이어는 대개 서버에 애정이 크고, 이들의 경험이 더 중요하다. 나중에 더 많은 수익과 플레이어를 데려올 잠재력도 있지만, 서버에서 기분이 상하면 더 극단적인 행동을 할 가능성도 크다. 이런 플레이어가 규칙을 어기면 영향에 따라 어느 정도 너그럽게(눈감아 주는 식으로) 대하고, 다른 플레이어와 충돌하면 조율 위주로 처리해 가능한 한 처벌하지 말자.
- 다른 서버의 플레이어 커뮤니티(예: 서버 그룹 채팅)에서 내 서버를 홍보하지 말자. 사람이 부족해 힘든데 갑자기 누가 와서 홍보하며 플레이어를 다 빼 가면 어떻겠는가? 다른 서버의 커뮤니티에서 홍보하면 그쪽 플레이어나 운영진은 이를 부당한 경쟁으로 보고 화가 나서 내 서버를 공격할 수 있다.
- 아무도 건드리지 말자. 컴퓨터 쪽 일을 하거나 좋아하는 사람, 그리고 모든 MC 플레이어도 마찬가지다. 겉으로는 남을 공격하는 걸 좋아하지 않는다고 말하는 사람도, 화가 나면 온갖 방법으로 서버를 망치려 들 수 있다. 다른 사람과 다투다 몸싸움까지 가는 것과 비슷하다.
방화벽 켜기
섹션 제목: “방화벽 켜기”필자가 다른 서버 운영자들과 이야기해 보니, 서버의 방화벽을 아예 끄는 운영자가 꽤 있었다. 그중에는 방화벽을 끄고 대신할 보안 소프트웨어도 전혀 돌리지 않는 경우도 있었다. 흔히 “보안 체계에서 가장 약한 고리는 사람”이라고 하지만, 경계를 늦추지 않고 경험이 많다고 해서 모든 악의적인 공격을 막을 수 있다는 뜻은 아니다.
서버에는 스스로 서비스를 여는 소프트웨어가 많이 있을 수 있다. 본인도 모르는 사이에 해커가 이를 이용해 서버를 공격할 수 있다.
Minecraft 서버라면 최소한 다음과 같은 소프트웨어가 해커가 악용하기 쉬운 서비스를 연다.
- 프록시 뒤의 백엔드 서버: 백엔드 서버가 프록시를 거치지 않은 직접 접속을 막지 않았고, 로그인 플러그인을 쓰면서 로그인 서버에서만 플레이어 신원을 확인하고 백엔드 서버에는 로그인 플러그인이 없다면, 플레이어가 외부에서 백엔드 서버에 직접 접속해 로그인 없이 게임을 시작할 수 있다. 신원 확인 단계가 없으니 관리자 계정으로 바로 들어와 서버를 날려 버릴 수도 있다. 방화벽으로 외부에서 백엔드 서버로의 접속을 막으면 플레이어는 프록시를 거쳐 로그인 서버에서 로그인을 마쳐야만 하므로 이 위협을 피할 수 있다.
- 일부 플러그인이나 소프트웨어의 원격 관리 기능: 어떤 소프트웨어나 플러그인은 원격 관리 기능을 기본으로 켜서 관리자가 웹이나 SSH 등으로 관리할 수 있게 한다. 또는 운영자나 다른 관리자가 편하게 관리하려고 직접 켰을 수도 있다. 방화벽이 없으면 해커도 외부에서 이 원격 관리 서비스에 접속할 수 있다. 비밀번호가 약하거나, 심지어 기본 비밀번호이거나 인증이 아예 없다면 해커가 이 소프트웨어를 조작해 서버를 공격할 수 있다.
- MySQL 등 네트워크로 연결하는 데이터베이스: MySQL 등 데이터베이스가 다른 서버에서 접속할 필요가 없고(즉 데이터베이스와 서버가 같은 머신에 있고), MySQL에 강력한 인증도 설정하지 않았다면, 방화벽이 없을 때 해커가 외부에서 MySQL에 바로 접속해 중요한 데이터를 훔치거나 바꿀 수 있다.
- OneBot 서비스 등 외부에 API를 제공하는 소프트웨어: OneBot 서비스 등의 API 서비스가 다른 서버에서 접속할 필요가 없고(즉 봇과 프레임워크가 같은 머신에 있고), 강력한 인증도 설정하지 않았다면, 방화벽이 없을 때 해커가 외부에서 이 API에 바로 접속해 소프트웨어를 조종할 수 있다. 예를 들어 봇으로 허위 정보를 퍼뜨리거나 봇 계정이 정지되게 만들 수 있다.
켜는 방법
섹션 제목: “켜는 방법”- Windows: - Windows Defender 방화벽을 연다(
Win + R에서Firewall.cpl입력) - 사이드바에서 ‘Windows Defender 방화벽 설정 또는 해제’를 누른다 - 개인 네트워크 설정과 공용 네트워크 설정을 모두 ‘Windows Defender 방화벽 사용’으로 바꾸고, ‘허용되는 앱 목록에 있는 앱을 포함하여 들어오는 연결 모두 차단’의 체크를 해제하고, ‘Windows Defender 방화벽이 새 앱을 차단할 때 알림’을 체크한다. - 아래의 확인을 누른다 - Linux:
service iptables start명령으로 방화벽을 켠다.
주의 사항
섹션 제목: “주의 사항”- 방화벽을 켠 뒤에는 서버의 모든 외부 서비스가 허용되어 있는지 확인하자. 방화벽을 꺼 둔 동안 새로 배포한 서비스는 허용 규칙이 없을 가능성이 크다.
- 서버가 핑을 막지 않는다면 ICMP 에코 요청을 허용하는 것도 잊지 말자.
Velocity / BungeeCord 사용
섹션 제목: “Velocity / BungeeCord 사용”백엔드 서버(Spigot / Paper / Purpur 등) 하나만으로 대규모 애플리케이션 계층 공격을 막으려 하지 말자.
백엔드 서버는 연결 처리 속도가 느려서 프록시보다 컴퓨터 자원을 더 많이 쓴다. 공격 규모가 크면 백엔드 서버에 렉이 걸리거나 크래시가 난다.
반면 Velocity / BungeeCord 같은 프록시 서버는 대량의 연결을 받도록 설계되어 있고, 같은 IP의 반복 접속을 제한하는 설정도 기본으로 있다.
connection_throttle: 4000connection_throttle_limit: 3같은 IP 주소는 4000ms 안에 최대 3번까지만 접속할 수 있다는 뜻이다. 이를 넘으면 서버는 그 IP가 다른 닉네임으로 접속을 시도하더라도 모든 로그인 요청을 거부한다.
프록시에 봇 차단 플러그인 설치
섹션 제목: “프록시에 봇 차단 플러그인 설치”프록시에 봇 필터링 플러그인을 설치할 수 있다. 앞서 말했듯 프록시는 대량의 연결을 백엔드 서버보다 효율적으로 처리하므로, 반드시 프록시에 설치하자.
추천하는 봇 차단 플러그인 목록이다.
| 이름 | 소개 | 지원 플랫폼 | 단점 |
|---|---|---|---|
| Sonar | 실제 플레이어에게 영향을 주지 않고 봇을 감지해 제거하는 가벼운 봇 차단 플러그인 | Velocity, BungeeCord | 아직은 없는 듯? |
| LimboFilter | 강력한 봇 필터링 솔루션 | Velocity | 무겁고 설정이 복잡하며, 꼭 필요할 때만 업데이트된다(관리 부족) |
| nAntiBot | 효율적인 봇 차단 플러그인 | Spigot, Velocity, BungeeCord | 클라우드 서비스에 의존해서 서버 네트워크가 나쁘면 쓸 수 없다 |
| EpicGuard | 이벤트 기반 봇 차단 및 VPN 차단 플러그인 | Waterfall(지원 종료), Paper, Velocity | 우회하기 쉽고(그래도 덜 귀찮다), 특정 Paper 서버만 지원한다 |
| AntiAttackRL | 여러 플랫폼을 지원하는 AntiBot 플러그인 | Bukkit, BungeeCord, Folia, Sponge, Velocity 및 그 포크 | 공격받는 동안 신규 플레이어가 바로 들어올 수 없어 관리자가 조치해야 한다. 방어 방식이 낡았다 |
유료 방어 코어
섹션 제목: “유료 방어 코어”돈이 아주 많다면 프록시 서버 코어 선택에서 유료 프록시 코어를 고를 수 있다. NullCordX가 괜찮은 선택이다.
하지만 충분히 고민하지 않았다면 봇 차단에 돈을 쓰는 것은 추천하지 않는다.
무차별 대입 공격 방어
섹션 제목: “무차별 대입 공격 방어”기본 포트 바꾸기
섹션 제목: “기본 포트 바꾸기”기본 포트를 다른 포트로 바꾼다. 가능하면 높은 번호의 포트를 쓰자. 예를 들어 5000이나 55555는 쓰지 않는 편이 좋고, 8371은 추천하지 않으며, 36752는 추천한다.
Linux 기본 SSH 포트 바꾸기
섹션 제목: “Linux 기본 SSH 포트 바꾸기”강력한 비밀번호 설정
섹션 제목: “강력한 비밀번호 설정”봇 프레임워크, 인벤토리 동기화 소프트웨어의 서버, 원격 제어처럼 무차별 대입에 노출되기 쉬운 서비스에는 강력한 비밀번호를 설정하자. 20자 이상이 좋고, 소프트웨어가 허용한다면 다음을 모두 넣자.
- 영문 대소문자
- 숫자
!@#$*_.같은 특수 문자
예를 들어 다음 비밀번호는 쓰지 말자.
123456(짧고 단순하다. 해커가 제일 좋아한다)114514(아주 흔한 단어다. 114514는 인터넷에서 흔한 밈이다)#sI3wA@!(복잡하지만 짧아서 여전히 무차별 대입에 약하다)skyworkserver(서버 이름)yizhan(사람 이름, 아이템 이름, 지명 등)111111111111111111111111111(길지만 단순해서 여전히 뚫리기 쉽다)minimouse4820030611(생일 같은 개인 정보가 들어 있다)
다음 비밀번호도 가능하면 피하자.
yizhan114514(흔한 단어의 조합)shuodedaoli(중국어 병음이고, 해당하는 중국어도 흔한 말이다. 이 비밀번호의 중국어는 흔한 밈인 ‘说的道理’다)#tianjifuwuqi(앞의 몇 글자를 빼면 전부 약한 비밀번호다)
네트워크 계층과 전송 계층 공격 방어
섹션 제목: “네트워크 계층과 전송 계층 공격 방어”고방어 IDC에 서버 호스팅 / DDoS 방어 VPS 구매
섹션 제목: “고방어 IDC에 서버 호스팅 / DDoS 방어 VPS 구매”대부분의 MC 서버에는 150 G 정도의 방어면 충분하고 가성비도 좋다.
호스팅 비용은 보통 한 달에 800 RMB 정도이고, 속도는 50 Mbps다.
업그레이드는 많아도 300 G 방어까지만 하자(그 이상은 포기하자. 그건 당신을 망하게 하려는 거다).
VPS라면 VPS 업체에 방어 서비스를 문의하자.
Minecraft 프록시 서비스 사용
섹션 제목: “Minecraft 프록시 서비스 사용”TCPShield, Cloudflare, Minekube 등이 있다.
Minecraft 공격 완화에 특화된 로드 밸런싱 프록시를 제공하고, 서버 IP 주소도 효과적으로 숨길 수 있다.
단점은 이런 프록시 중 아직 중국 국내에 서버를 둔 곳이 없는 것 같다는 점(지연이 크다)과 설정에 시간이 좀 든다는 것이다.
Cloudflare에 A(또는 AAAA, CNAME) 레코드로 원본 서버를 연결해 두고(SRV까지 곁들여서) 방어했다고 생각하는 것은 자기 위안일 뿐 아무 소용이 없다. Cloudflare는 이런 포트와 프로토콜의 트래픽을 아예 프록시하지 않는다. 주황색 구름(프록시)을 켜도 마찬가지다.
Cloudflare의 터널링 서비스다. 이걸 DDoS 방어용으로 쓰는 건 좀 무리수다.
장점:
- 무료, 가입 불필요
- 477 Tbps 방어, 330개 거점
- 트래픽 무제한
- TCP, UDP, RDP, SSH, HTTP 지원
- SSH는 WebSSH를 제공하고 Access로 관리할 수 있다
- 터널링 기능 내장
단점:
- 지연이 크다(IP 우선 선택 불가)
- 클라이언트에 모드를 설치해야 들어올 수 있다(TCP, UDP 한정)
Cloudflare의 TCP, UDP 프로토콜 방어 서비스다. 아쉽게도 너무 비싸다(1 $/GB, 날강도다).
장점:
- 477 Tbps 방어, 330개 거점
- TCP, UDP, RDP, SSH, HTTP 지원
- Anycast 전용 IPv4 1개 제공
- SSH는 WebSSH를 제공하고 Access로 관리할 수 있다
단점:
- 너무 비싸다(CF Pro + 트래픽 과금)(CF Partner 프로그램은 이미 없어졌다)
- 지연이 크다(IP 우선 선택 불가)
얼마나 비싼가?
Cloudflare Pro가 월 25 $(약 178위안, 무료 트래픽 5GB)이고, 그 뒤로는 GB당 1 $다.
즉 1 TB 트래픽에 $1044, 약 7443위안이 든다. CF Pro 구독료는 별도다. 정말 필요하다면 Papyrus를 고려해 보자.
Minekube의 무료 보호 서비스다. 이 조직은 Gate라는 유명한 프로젝트도 만들었다.
개인적으로는 Cloudflare Tunnel보다 훨씬 낫다고 느낀다(Cloudflare Spectrum보다도 쓰기 좋다).
장점:
- 무료, 가입 불필요
- DDoS 방어 내장
- 트래픽 무제한
- 무료 도메인과 Anycast 전용 IPv4 1개 제공
- 대시보드에서 네트워크 분산, 관리, 차단 목록 등을 설정할 수 있다
- 터널링 기능 내장
단점:
- 지연이 매우 크다
- Geyser 미지원
TCPShield는 Minecraft 전문 네트워크 보호 서비스다.
장점:
- 무료 요금제 제공(무료 트래픽 1 TB)
- L7 보호(트래픽의 정상 여부를 검사한다)
- 트래픽 관리 패널 제공
- 저렴하다
단점:
- 지연이 크다(Asia Network를 켜면 훨씬 낫다)
Asia Network:
- 싱가포르와 도쿄 네트워크 제공
- 가격: 0.01 $/GB(다른 트래픽과 별도 과금, 무료 트래픽 없음)(약 0.07위안)
Geyser를 지원하려면 Premium 요금제가 필요하다(월 100 $, 날강도 수준이다).
Pro 요금제(월 25 $)(약 178위안):
- 무료 트래픽 5 TB
- 트래픽을 걸러 내는 IP 방화벽
가성비가 아주 좋다. 원래 용도는 친구끼리 같이 노는 거지만
장점:
- 트래픽 무제한
- 모든 TCP, UDP 프록시 지원
- 아시아 노드 제공(보통 일본 노드가 배정된다)
- 무료 도메인 제공
- 터널링 기능 내장
- 방화벽 제공
단점:
- 분석 패널이 없다
- 자기 도메인을 연결하려면 Premium이 필요하다
- L7 필터링이 없다
Premium 가격: 월 3달러(약 20위안)(아주 싸다!)
전용 IPv4와 IPv6 IP를 살 수 있다.
무료 요금제는 없지만, Cloudflare Spectrum 때문에 적어 둔다.
VIP 요금제(월 25 $, 약 177위안):
- Geyser 지원
- L7 필터링
트래픽:
- 무제한 트래픽: 뉴욕, 프랑크푸르트 노드만 제공
- Cloudflare Spectrum 트래픽: 양은 알 수 없지만 무제한은 아니다
Enterprise 요금제(월 250 $, 약 1778위안):
- Cloudflare Spectrum 무제한 트래픽
frp 돌려막기
섹션 제목: “frp 돌려막기”좀 비양심적인 방법이다. frp 터널을 잔뜩 준비해 두고, 하나가 공격으로 죽으면 다른 것으로 바꾼 뒤 플레이어에게 다시 접속하라고 알리면 된다.
그럴 시간에 위의 무료 방어 서비스를 쓰는 게 낫다. 조금 느리긴 해도.
IP 바꾸기
섹션 제목: “IP 바꾸기”공격자는 서버의 IP 주소를 알아야 공격할 수 있다.
IP 주소를 계속 바꾸면 된다. 하나가 죽으면 다른 걸로 바꾸는 식이다.
동적 DNS(DDNS)를 쓰면 IP를 바꿀 때 DNS 레코드도 알아서 갱신된다.
리버스 프록시
섹션 제목: “리버스 프록시”IPv4 주소는 매우 한정되어 있어서, 임대든 코로케이션이든 업체가 IP를 자주 바꾸게 해 주지 않는 경우가 많다(아니면 돈을 더 내야 한다).
앞의 방법에서 말했듯 공격자는 서버의 IP 주소를 알아야 공격할 수 있다. 그렇다면 서버 주소를 숨겨 버리면 어떨까?
저렴한 클라우드 서버를 몇 대 더 빌려 리버스 프록시로 쓰고, 원본 서버에 접속하려는 플레이어는 모두 리버스 프록시를 거치게 한다. 지연은 조금 늘어나지만 공격받아서 아예 못 들어가는 것보다는 낫지 않은가?
여기서는 원본 서버를 ‘원본’, 리버스 프록시용 저가 서버를 ‘노드’라고 부른다.
‘노드’는 ‘원본’의 방패가 되어 공격 트래픽을 대신 막는다. 공격자가 원본의 IP를 찾지 못하는 한 서버는 비교적 안전하다.
대신 노드가 공격을 받고, 임계값을 넘으면 여전히 플레이어가 들어올 수 없다. 이 방법은 공격을 받아도 블랙홀 차단이 풀리기를 기다리지 않고 빠르게 접속을 복구할 수 있게 해 줄 뿐이다.
이 방법을 쓰려면 다음 조건을 갖춘 클라우드 서버를 노드로 구해야 한다. 조건이 꽤 까다롭고, 고방어 서버만큼 돈이 들지는 않지만 그렇게 싸지도 않다.
- 중국 본토 안에 있을 것 (특히 중요하다. 플레이어가
200ms+지연을 겪기를 바라지 않는다면) - 안정적일 것
- 비교적 저렴할 것
- 대역폭이 비교적 넉넉할 것
리버스 프록시로 쓸 수 있는 소프트웨어로는 hopper-rs, nginx, haproxy 등이 있다. 제대로 설정하면 리버스 프록시가 IP 주소를 전달하므로, 서버에 보이는 플레이어 IP가 전부 같은 IP로 나오지는 않는다.
여건이 되면 빠른 설치 스크립트를 직접 만들어 두자. 노드가 공격으로 차단되었을 때 새 노드를 빌려 금방 리버스 프록시를 배포할 수 있다.