Technote

보안 입문

연재 워드프레스 하드닝 체크리스트 8부 중 1부

하드닝의 시작은 관리자가 몇 명인지 세는 일입니다

설정으로 문을 몇 개 닫든, 열쇠를 가진 사람이 여덟 명이면 지켜야 할 것도 여덟 개입니다. 역할 점검이 모든 하드닝보다 앞에 옵니다.

하드닝을 시작할 때 대부분 설정 파일부터 엽니다. 그런데 순서가 하나 앞에 있습니다. 지금 이 사이트에서 무엇이든 할 수 있는 사람이 몇 명인지 세는 일입니다. 설정으로 닫은 문이 몇 개든, 열쇠를 가진 사람이 여덟 명이면 지켜야 할 것도 여덟 개입니다.

워드프레스는 역할과 권한 체계를 처음부터 갖추고 있습니다. 도구가 없는 것이 아니라 기본값이 방치되기 쉬울 뿐입니다. 이번 회차는 그 도구를 실제로 쓰는 절차입니다.

관리자 수를 세는 것이 첫 번째 측정입니다

목록은 관리 화면의 사용자 페이지에서도 볼 수 있지만, 명령으로 뽑아 두면 다음 점검 때 비교할 수 있는 기록이 남습니다.

wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
wp user list --role=editor --field=user_login

처음 뽑아 보면 목록이 기억보다 깁니다. 제작 때 만든 임시 계정, 외주 업체 계정, 퇴사한 담당자, 연동용으로 만들어진 계정, 그리고 “잠깐 필요해서” 권한을 올려 준 뒤 되돌리지 않은 계정이 남아 있습니다.

관리자 계정 하나는 사이트 권한 전체의 사본입니다. 플러그인 설치 · 파일 편집 · 사용자 추가 · 설정 변경이 전부 됩니다. 계정이 늘어난다는 것은 지켜야 할 비밀번호와 기기가 늘어난다는 뜻이고, 그중 가장 약한 하나가 사이트 전체의 수준이 됩니다.

역할은 기능이 아니라 폭발 반경을 정합니다

기본 역할이 할 수 있는 일 — 사고가 났을 때 그 계정으로 가능한 범위가 곧 피해 범위다

편집자는 글을 쓰고 고치고 발행합니다. 플러그인을 설치할 일이 없습니다. 그런데 편집만 하는 사람이 관리자인 사이트가 흔한데, 이유는 대개 “언젠가 한 번 필요했기 때문” 입니다. 그 한 번을 위해 상시 권한을 두는 대신, 필요한 때에 잠깐 올렸다가 되돌리는 편이 낫습니다.

필요한 권한이 기본 역할과 어긋난다면 역할을 하나 만드는 방법도 있습니다. 편집자에 특정 기능 하나만 더한 역할은, 그 사람을 관리자로 올리는 것보다 언제나 좁습니다.

공용 계정은 만들지 않습니다. 여러 사람이 한 계정을 쓰면 누가 무엇을 했는지가 기록에 남지 않고, 사고가 났을 때 어디서부터 봐야 하는지 알 수 없습니다. 한 사람이 떠날 때 비밀번호를 전원이 바꿔야 하는 것도 같은 구조의 비용입니다.

정리 절차 — 지우기 전에 낮춥니다

계정 정리의 순서 — 바로 지우면 그 계정에 딸린 것이 함께 끊긴다

쓰지 않는 계정을 바로 지우면 딸린 것이 함께 끊깁니다. 연동 플러그인이 그 계정으로 외부 API 를 호출하고 있을 수 있고, 예약 작업이 그 사용자 이름으로 돌고 있을 수 있습니다. 먼저 구독자로 낮추고 한 주 지켜본 뒤 지우면, 무엇이 그 계정에 매여 있었는지가 조용한 장애 대신 눈에 보이는 형태로 드러납니다.

삭제할 때 워드프레스는 그 사용자의 글을 어떻게 할지 묻습니다. 다른 사용자로 이전을 고르지 않으면 글이 함께 사라집니다. 발행된 글이 있는 계정은 반드시 이전을 선택합니다.

같은 화면에서 애플리케이션 비밀번호도 함께 봅니다. 사람이 로그인하지 않아도 API 로 접근하는 경로이고, 한번 만들고 잊히기 쉽습니다. 무엇에 쓰는지 설명할 수 없는 항목은 취소합니다 — 필요하면 다시 만들면 됩니다.

권한 설계와 계정 위생에 관한 글은 보안 아카이브에 더 있고, 운영 중인 사이트의 권한 · 설정 전반을 한 번에 점검받고 싶다면 최적화 지원 사업에 진단이 포함돼 있습니다.

다음 회차

관리자 수를 줄였다면, 남은 관리자 계정 하나가 탈취됐을 때의 피해를 줄일 차례입니다. 다음 회차는 관리 화면에서 코드를 실행할 수 있게 열려 있는 경로를 닫는 상수 두 개입니다.

이 주제의 다른 글

노하우 목록으로

보안 입문

업데이트 순서 — 코어 · 플러그인 · 테마

한 번에 전부 올리면 빠르지만, 깨졌을 때 무엇 때문인지 알 수 없습니다. 순서를 정하고 사이사이에 확인하는 것은 느린 방법이 아니라 원인을 특정할 수 있게 하는 방법입니다.

운영 · 관리자 3분 읽기

보안 실무

동의와 추적 — 고지 없이 심는 태그의 위험

최소한만 모으고, 모은다는 사실을 알리고, 거부를 존중한다. 원칙은 세 줄이고 대부분의 사고는 한 곳에서 납니다 — 동의를 받기 전에 이미 발사된 태그입니다.

마케터 4분 읽기

₩270,000 · 신청하기