Technote

Security Intro

DISALLOW_FILE_EDIT 하나로 막히는 공격 경로

관리자 비밀번호가 한 번 새면, 내장 테마 편집기는 웹셸 설치 화면이 됩니다. 상수 한 줄이 그 최단 경로를 지웁니다.

워드프레스 관리자에는 테마 · 플러그인 파일을 브라우저에서 고치는 편집기가 내장돼 있습니다. 편의 기능이지만, 공격자 관점에서 보면 관리자 세션 하나 = PHP 실행 권한이라는 등식을 만들어 주는 기능입니다.

세 번째 칸을 없애면 등식이 끊긴다

차단은 한 줄

define( 'DISALLOW_FILE_EDIT', true );

wp-config.php 에 넣으면 편집기 메뉴가 사라지고, 화면을 직접 호출해도 거부됩니다. 파일 수정은 배포 절차(Git · WP-CLI)로만 이루어져야 하고, 실제로 그렇게 운영하는 사이트라면 이 기능을 잃는 것이 아무 손실이 아닙니다.

한 단계 더: DISALLOW_FILE_MODS

define( 'DISALLOW_FILE_MODS', true );   // 프로덕션 전용

플러그인 · 테마의 설치와 업데이트까지 화면에서 막습니다. 설치가 WP-CLI 로만 가능해지므로, 배포 절차 밖에서 코드가 서버에 들어오는 경로가 사라집니다. 단 자동 보안 패치도 함께 꺼지므로, 업데이트를 정기 절차로 돌리는 운영이 전제입니다 — 스테이징 검증 없이 도입하면 방치로 이어집니다.

이 한 줄이 대체하지 못하는 것

  • 비밀번호 · 2단계 인증 — 세션 유출 자체를 줄이는 층은 따로 필요합니다.
  • 업로드 실행 차단 — 편집기 말고도 PHP 가 서버에 들어오는 길이 있습니다. 업로드 디렉터리의 PHP 실행 차단이 그 문을 닫습니다.
  • 이미 심어진 셸 제거 — 예방 상수는 과거를 지우지 못합니다. 침해가 의심되면 진단이 먼저입니다.

서버 · 애플리케이션 양쪽의 하드닝을 한 번에 정리하는 것이 최적화 지원 사업의 보안 항목입니다. 진단 → 조치 → 재스캔의 순서는 작업 과정에 공개돼 있습니다.

More on this topic

All technotes

Security Practical

The first hour after you discover a compromise

The most common mistake in this moment is deleting things in a hurry. Here is what to stop first, what to preserve, and in what order to recover…

Founders 8 min read

₩270,000 · Join the program