콘텐츠로 이동

서버 크래시 예방

서버의 크래시 취약점을 일부러 찔러 보는 악의적인 사람들이 있다.

너무 걱정할 필요는 없다. 꾸준히 유지보수되는 플러그인에는 보통 크래시 취약점이 없다. 그래도 대비는 해 두는 게 좋다.

Minecraft 서버가 자주 당하는 크래시 유형을 몇 가지 정리했다.

오래되었거나 아직 발견되지 않은 취약점이 있는 플러그인을 설치하면, 버그로 플러그인이 스스로 뻗거나 심하면 공격자가 취약점을 악용할 수 있다. 이런 문제는 서버 운영자가 미리 대비해야 한다. 우선 플러그인을 고를 때부터 다음을 지킨다.

  1. 처음 설치할 때 WARN과 ERROR를 최대한 해결하고, 도저히 안 되면 바로 다른 플러그인으로 바꾼다
  2. 업데이트가 끊긴 플러그인은 되도록, 가능하면 아예 쓰지 않는다
  3. 크랙(유출) 플러그인은 되도록, 가능하면 아예 쓰지 않는다
  4. 가능하면 사용자가 많은 플러그인을 쓴다

믿을 만한 플러그인만 골랐더라도 대비는 여전히 필요하다. 구체적인 방법은 다음과 같다.

  1. 플레이어가 쓸 수 있는 명령어를 제한한다. 화이트리스트 방식으로 플레이어가 실제로 쓰는 명령어만 열어 두는 것이 가장 좋다.

  2. 서버 플러그인을 숨기고 위장해서, 공격자가 서버에서 어떤 플러그인을 쓰는지 최대한 알아내지 못하게 한다.

블랙리스트에 추가를 권장하는 명령어

섹션 제목: “블랙리스트에 추가를 권장하는 명령어”
블랙리스트 명령어
# WorldEdit exploit
- "//calc"
- "//calculate"
- "//eval"
- "//evaluate"
- "//solve"
- "//asc"
- "//ascend"
- "//desc"
- "//descend"
# HolographicDisplays exploit
- "/hd readtext"
- "/holo readtext"
- "/hologram readtext"
- "/holograms readtext"
- "/holographicdisplays readtext"
# PermissionsEx exploit
- "/pex promote"
- "/pex demote"
- "/promote"
- "/demote"
- "/execute"
# Multiverse exploit
- "/mv ^"
- "/mv help <"
- "/mvhelp <"
- "/$"
# FAWE exploit
- "//to"
- "/to"

이런 취약점은 사실상 피하기 어렵다. Log4j처럼 발견되기 전까지는 아무도 모른다.

서버 운영자는 최대한 관련 소식에 귀를 기울여서 취약점이 나오면 빨리 알아채고, 공격자가 틈을 파고들지 못하게 해야 한다.

패킷 전송/아이템 관련 (바닐라 취약점이라고도 함)

섹션 제목: “패킷 전송/아이템 관련 (바닐라 취약점이라고도 함)”

간단히 말해, 서버가 처리하지 못하거나 처리가 느린 패킷을 보내는 공격이다.

대표적인 예로 책 크래시, 표지판 크래시가 있다(최근 버전에서는 수정됨).

구버전 서버라면 이런 공격을 막는 플러그인을 설치해야 한다. 아래는 추천 플러그인이며, 네 개를 모두 함께 설치하는 것을 권장한다.

다운로드. Minecraft 바닐라 취약점을 고치는 플러그인이다. 불법 아이템, 유효하지 않은 닉네임 등을 처리한다.

구매. 정확히 말하면 LPX가 막는 것은 바닐라 취약점이 아니라, 공격자가 특수한 패킷으로 Netty 처리를 타임아웃시키는 공격(NettyCrashers)이다. 서버가 크래시되지는 않지만 플레이어의 게임 경험을 크게 해친다.

이 플러그인은 최신 버전에서도 여전히 쓸모가 있다.

구매 (inactive로 표시된 것은 유지보수자가 바뀌었는데 Spigot에 아직 알리지 않아서다), GitHub

Panilla는 서버에서 NBT와 패킷 악용을 막는 플러그인이다. 서바이벌 모드에서 얻을 수 없는 것들을 막고 여러 취약점을 수정한다. 서버 크래시뿐 아니라 불법 NBT로 인한 클라이언트 크래시도 막아 준다.

다운로드. Surf는 Minecraft의 여러 취약점을 수정하며, Folia도 지원한다.