서버 운영 첫걸음 ③ 화이트리스트·롤백·백업, 서버를 지키는 기본기
시리즈 마지막 화는 서버를 지키는 법을 다룬다. online-mode 와 화이트리스트, op 권한 줄이기, CoreProtect 롤백, 여러 시점의 백업, fractureiser 사례로 본 플러그인 출처 관리, IP 노출 기초와 업데이트 순서를 정리했다.

서버 운영자에게 가장 아픈 순간은 렉이 아니다. 몇 주 동안 지은 마을이 하룻밤 사이에 불타 있거나, 업데이트 한 번에 세계가 열리지 않을 때다. 그리고 이런 일은 대부분 '미리 해 둘 수 있었던 일'을 하지 않아서 생긴다.
「서버 운영 첫걸음」 마지막 3화는 서버를 지키는 기본기를 다룬다. 누가 들어올 수 있는지 정하는 법, 권한을 나누는 법, 사고가 났을 때 되돌리는 법, 백업과 업데이트 순서, 그리고 플러그인과 IP 를 둘러싼 보안 상식까지. 1화의 Paper 서버와 2화의 플러그인을 전제로 한다.
문 단속 — online-mode 와 화이트리스트
online-mode 는 켜 둔다
server.properties 의 online-mode=true 는 마인크래프트 계정 서버에서 확인된 정품 계정만 들여보낸다. 이것을 끄면 인증을 거치지 않은 계정도 들어올 수 있어, 누구든 다른 사람의 닉네임으로 접속할 수 있게 된다. 그 닉네임에 op 가 걸려 있다면 결과는 뻔하다.
예외는 하나다. 1화에서 본 Velocity 프록시를 쓰면 뒤쪽 서버는 online-mode 를 끄고 인증을 프록시에 맡긴다. 이때는 Velocity 문서의 안내대로 방화벽이나 localhost 바인딩으로 프록시 말고는 뒤쪽 서버에 접속하지 못하게 막아야 한다. Velocity 문서는 방화벽 사용을 "강력히 권장"한다.
친구끼리라면 화이트리스트
화이트리스트를 켜면 whitelist.json 에 있는 사람만 들어온다. Minecraft Wiki 에 따르면 자바 에디션 26.3 부터는 white-list 기본값이 켜짐(true)으로 바뀌었다. 그 이전 버전 서버라면 직접 켜야 한다.
/whitelist on— 켜기/whitelist add 닉네임— 추가/whitelist remove 닉네임— 빼기- 파일을 직접 고쳤다면
/whitelist reload
enforce-whitelist=true 로 두면, 목록에서 뺀 사람이 이미 접속해 있을 때 다시 불러오는 순간 내보낸다. 서버 목록에 접속자 이름을 보여 주기 싫다면 hide-online-players=true 도 있다.
권한은 작게 — op 를 아끼는 법
/op 는 편하지만 무겁다. 자바 에디션의 권한 단계는 0~4 이고, op-permission-level 기본값은 4, 곧 서버 관리 명령까지 모든 명령이다. 친구에게 "건축 좀 편하게 하라고" op 를 주면 서버를 멈추고 다른 사람을 내보낼 권한까지 같이 준 셈이다.
| 단계 | Minecraft Wiki 의 구분 | 주요 내용 |
|---|---|---|
| 1 | Moderator | 스폰 보호 구역 무시 |
| 2 | Gamemaster | 대부분의 게임 명령, 명령 블록, 게임 모드·난이도 변경 |
| 3 | Admin | 멀티플레이 관리 명령 |
| 4 | Owner | 서버 관리 명령을 포함한 모든 명령 |
- op 는 운영자 본인 한 명만. 나머지는 2화의 LuckPerms 그룹으로 필요한 권한만 준다.
- WorldEdit, CoreProtect 롤백, 밴 같은 강한 권한은 그룹을 따로 만들어 믿는 사람에게만.
- 사람이 빠지면
/deop와 그룹 정리를 바로 한다. op 명단은ops.json에 있다.
그리핑이 났을 때 — CoreProtect 롤백
2화에서 CoreProtect 를 미리 넣어 뒀다면 당황할 필요가 없다. 순서는 이렇다.
- 조사.
/co i로 조사 모드를 켜고 망가진 블록을 눌러 누가 했는지 본다. 넓게 보려면/co lookup u:닉네임 t:1d. - 미리 보기.
/co rollback u:닉네임 t:1h r:20 #preview— 실제로 바꾸지 않고 결과만 보여 준다. - 되돌리기. 미리 보기가 맞으면
#preview를 빼고 실행한다. - 실수했다면.
/co undo로 방금 한 롤백을 거꾸로 되돌린다.
CoreProtect 문서에 따르면 롤백에서 반경(r:)을 적지 않으면 10칸이 적용된다. 서버 전체를 되돌리려면 r:#global 을 쓴다. 범위를 좁게 시작해 넓혀 가는 편이 안전하다.

백업 — 습관이 전부다
Paper 문서는 "제대로 작동하는 백업은 크든 작든 모든 서버에 필수"라고 적는다. 무엇을, 어떻게, 얼마나 자주가 핵심이다.
무엇을
- 세계 폴더 (
world, 그리고 서버에 따라 따로 생기는 네더·엔드 폴더) server.properties,whitelist.json,ops.json등 설정 파일plugins폴더의 플러그인 .jar 와 각 플러그인의 설정 폴더
어떻게 — 서버를 켠 채로 복사할 때
save-off— 세계 파일 쓰기를 잠시 멈춘다.save-all flush— 모든 청크를 즉시 저장한다. 잠깐 멈칫할 수 있다.- 세계 폴더를 압축하거나 다른 곳으로 복사한다.
save-on— 쓰기를 다시 켠다.
가장 확실한 방법은 서버를 끈 상태에서 통째로 복사하는 것이다. 매일 새벽 재시작 시간에 맞춰 윈도우 작업 스케줄러나 리눅스 cron 으로 복사 스크립트를 돌리면 손이 덜 간다. 호스팅 업체를 쓴다면 자체 백업 기능부터 확인하자.
얼마나, 어디에
Paper 문서는 여러 시점의 백업을 안전한 곳에 두라고 권한다. 어제 것 하나만 있으면, 그리핑을 사흘 뒤에 알아챘을 때 쓸 백업이 없다. 하루 단위 며칠치, 주 단위 몇 주치를 남기고, 서버와 다른 디스크나 클라우드에 하나 더 둔다. 그리고 가끔은 실제로 복원해 열어 본다. 열어 본 적 없는 백업은 백업이 아니다.
플러그인은 공식 배포처에서만
2화에서 Paper 문서를 빌려 말했듯, 플러그인은 서버 컴퓨터 전체에 접근할 수 있다. 이것이 실제 피해로 이어진 대표 사례가 2023년 6월의 fractureiser 다. 조사단이 GitHub 에 정리한 기록에 따르면, CurseForge 와 BukkitDev 에 올라온 여러 프로젝트에서 악성 코드가 발견됐고, 일부는 인기 모드팩에도 들어갔다.
- 윈도우와 리눅스를 노렸다.
- 마이크로소프트 계정 토큰, 디스코드 토큰, 브라우저 쿠키와 저장된 로그인 정보를 훔쳤다.
- 컴퓨터 안의 다른 .jar 파일 — Bukkit·Spigot 플러그인, Forge·Fabric 모드 등 — 을 찾아 스스로 퍼뜨렸다.
조사단은 이 사건이 끝났다고 밝혔지만, 비슷한 모방 공격의 가능성은 남아 있다고 적었다. 교훈은 단순하다.
- Hangar, Modrinth, BukkitDev, SpigotMC, 개발자의 공식 사이트·GitHub 에서만 받는다.
- "유료 플러그인 무료 배포", 출처를 알 수 없는 카페·디스코드 첨부 파일은 받지 않는다.
- 배포처가 체크섬을 제공하면 맞춰 본다. Paper 다운로드 페이지도 SHA-256 값을 함께 보여 준다.
- 쓰지 않는 플러그인은 지운다. 넣어 둔 것 하나하나가 관리 대상이다.

DDoS 와 IP 노출 기초
집 컴퓨터로 서버를 열고 주소를 그대로 알려 주면, 그 주소는 집 인터넷의 IP다. 서버를 노린 공격은 곧 집 회선 전체를 노린 공격이 된다.
- 친구끼리라면 주소를 공개된 곳에 올리지 않는다. 화이트리스트는 접속을 막을 뿐, 트래픽 공격을 막지는 못한다.
- 공개 서버로 키울 생각이라면 집이 아닌 호스팅으로 옮기는 것이 현실적이다. 업체를 고를 때 DDoS 방어 여부를 확인한다.
- 포트는 필요한 것만 연다. 자바 25565(TCP), 베드락을 받는다면 19132(UDP) 정도다. 원격 접속이나 데이터베이스 포트까지 열어 두지 않는다.
- 프록시를 쓴다면 뒤쪽 서버 포트는 외부에 열지 않는다(Velocity 문서의 권고).
업데이트 순서
새 버전이 나오면 바로 올리고 싶지만, 플러그인 서버는 순서를 지켜야 한다. Paper 문서의 안내를 바탕으로 정리하면 이렇다.
- 기다린다. 쓰는 플러그인들이 새 버전을 지원한다고 밝힐 때까지. 핵심 플러그인 하나라도 안 되면 미룬다.
- 백업한다. 세계, 설정, 플러그인 .jar 와 설정까지.
- 플러그인을 준비한다.
plugins안에update폴더를 만들고 새 .jar 를 넣어 두면 재시작 때 교체된다. - 서버를 끄고 Paper 를 바꾼다. 새 .jar 를 시작 명령에 쓰는 이름으로 바꿔 덮어쓴다. 문서는 켜져 있는 서버의 .jar 를 바꾸지 말라고 못 박는다.
- 켜고 로그를 본다. 플러그인 오류나 충돌이 없는지 시작 로그를 꼼꼼히 확인한다.
Paper 문서는 플러그인 충돌 위험 때문에 자동 업데이트를 권하지 않는다. 업데이트는 운영자가 자리에 있을 때 한다.
3화 정리, 그리고 그다음
- online-mode 는 켠다. 친구 서버는 화이트리스트
- op 는 나 하나, 나머지는 LuckPerms 그룹
- 롤백은
#preview로 먼저 보고, 실수하면/co undo - 백업은 여러 시점, 다른 장소, 가끔 복원 시험
- 플러그인은 공식 배포처에서만. fractureiser 를 기억하자
- 업데이트는 플러그인 지원 확인 → 백업 → 교체 → 로그 확인
세 화를 따라왔다면 친구들과 오래 놀 수 있는 서버의 기본은 갖췄다. 언젠가 더 많은 사람을 맞고 싶어진다면 MINECAP 의 서버 리스트에 서버를 올리고, 서버 홍보 게시판에 소개 글을 남겨 보자. 그때는 이번 화의 보안 수칙이 더 중요해진다.
참고 자료
- Minecraft Wiki — server.properties
- Minecraft Wiki — Server
- Minecraft Wiki — Permission level
- Minecraft Wiki — Commands/save
- CoreProtect Docs — Commands
- PaperMC Docs — Updating
- PaperMC Docs — Adding plugins
- PaperMC Docs — Velocity Security
- PaperMC Docs — Velocity Player information forwarding
- fractureiser investigation (GitHub)
- fractureiser — Technical Breakdown
이 기사에 대해 이야기하고 싶나요?
MINECAP에서 다른 마인크래프트 유저들과 의견을 나눠 보세요.