WordPress 보안 모범 사례

게시 됨: 2022-03-10

WordPress 보안에 대한 많은 신화와 FUD(공포, 불확실성, 의심)가 있습니다. 잠재적인 공격에 대해 웹사이트를 강화할 때 고려해야 할 사항이 많습니다. 그렇다면 기업은 최상의 웹 보호를 제공하는 WordPress 보안 모범 사례를 어떻게 배울 수 있습니까?

지난 주에 저는 WordPress 보안 문제를 이해하기 위해 웨비나 대화를 주최했습니다. 세션에는 Ayush Malakar(Fresh Consulting의 전체 스택 및 WordPress 개발자)와 Sean O'Shaughnessy(WordPress VIP 솔루션 엔지니어링 책임자)가 참여했습니다.

이 두 전문가는 4가지 안내 질문을 통해 개발자, 관리자, 사이트 소유자 및 경영진이 염두에 두어야 할 보안 모범 사례를 탐색했습니다. 이야기한 내용을 요약해 보겠습니다.

오픈 소스 소프트웨어는 안전한가요?

모든 오픈 소스가 동등하게 생성되는 것은 아닙니다. 그러나 WordPress는 18년 동안 사용되었으며 전 세계 웹 사이트의 40% 이상을 지원하므로 채택이 증가하고 있음이 분명합니다. 그러나 세계에서 가장 인기 있는 오픈 소스 소프트웨어에도 보안 취약성에 대한 질문이 있습니다. 공개된 모든 코드가 공격에 취약하지 않습니까?

반드시 그런 것은 아니라고 Ayush는 말합니다.

직관에 어긋나는 것처럼 보일 수 있지만 오픈 소스 소프트웨어는 실제로 비공개 소스인 독점 소프트웨어보다 더 안전할 수 있습니다. 여기 이유가 있습니다.

잠재적 위협에 대한 더 많은 시선

오픈 소스는 공개된 상태에서 작동하기 때문에 숨길 것이 없습니다. 커뮤니티의 많은 개발자가 이를 보고 업데이트하여 자신감과 신뢰를 불러일으키고 있습니다. 취약점이 발견되면 가능한 한 빨리(보통 하루나 이틀 이내에) 패치됩니다.

지속적인 코드 테스트 및 버그 포상금

누구나 WordPress에 기여할 수 있으며 수천 명의 WordPress 핵심 기여자로 구성된 커뮤니티에서 코드를 테스트합니다. 코드가 지속적으로 테스트됨에 따라 점점 더 안정적입니다.

또한 버그 바운티 프로그램은 대중이 무차별 대입 공격, DDoS, 피싱 등의 취약점과 취약점을 찾도록 권장합니다.

보안 업데이트

보안 업데이트가 발생하면 핵심 코드를 최신 상태로 유지하고 최신 공격 벡터로부터 보호하는 것은 웹사이트 개발자의 몫입니다. 자동 업데이트도 사용할 수 있으며 엔터프라이즈 개발자는 이것이 각 프로젝트에 적합한 선택인지 고려해야 합니다.

내 코드는 안전한가요?

워드프레스 코어는 워드프레스 웹사이트를 구성하는 코드의 "버킷" 중 하나일 뿐입니다. 커뮤니티에서 개발한 소프트웨어의 맨 위에는 웹사이트의 애플리케이션 코드(테마 또는 프론트엔드, 플러그인)가 있습니다.

오픈 소스 WordPress 핵심 코드는 커뮤니티에서 개발하지만 개별 웹사이트용으로 작성되거나 배포된 애플리케이션 코드도 보안 취약성을 유발할 수 있습니다.

공격에 대해 애플리케이션 코드를 최대한 강화하기 위해 취할 수 있는 다양한 조치가 있습니다. 허용 가능한 위험 수준에 따라 프로젝트마다 다른 결정을 내릴 수 있지만 가장 중요한 것은 잠재적인 공격 벡터를 인식하는 것입니다.

여기에서 웨비나 전문가가 몇 가지 조언을 제공합니다.

WordPress 보안 도구

개발자가 자사 및 타사 코드의 보안 결함을 식별하는 데 사용할 수 있는 다양한 도구가 있습니다.

"도구에 대해 이야기할 때마다 이러한 도구의 장단점을 이해하고 도구를 최대한 활용하는 방법을 이해해야 합니다."

— Ayush Malakar, Fresh Consulting

이러한 도구는 정적 또는 동적 코드 분석을 수행할 수 있습니다. 정적 분석은 코드를 실행하지 않고 수행되며 일반적으로 코드 결함의 약 85%를 찾아낼 수 있습니다. 동적 코드 분석은 실행 중 코드가 어떻게 작동하는지 연구하는 데 의존하며 SQL 데이터베이스, 애플리케이션 서버 또는 웹 서비스와 같은 다른 시스템 구성 요소와의 상호 작용으로 인해 발생하는 보안 문제를 찾는 추가 기능이 있습니다.

이 코드 분석을 수행하는 기계와 인간의 이점을 비교하는 것이 중요합니다. 머신 러닝(ML) 및 인공 지능(AI)을 1차 방어선으로 사용하여 공통 증권을 식별할 수 있습니다. 그러나 나중에 사람이 코드를 살펴보는 것도 가치가 있습니다. 이를 통해 인간은 기능 기반 취약성, 엣지 케이스 등과 같은 다양한 측면에서 작업할 수 있습니다.

전문가가 권장하는 몇 가지 도구는 다음과 같습니다.

  • WPScan은 개발자가 코드에서 보안 허점을 스캔하는 데 사용할 수 있는 CLI 도구입니다. Ayush는 개발자가 cron 작업에서 이것을 실행할 것을 권장합니다.
  • PHP_CodeSniffer(PHPCS)는 코드를 검사하고 구문에서 보안 취약점에 이르는 문제를 강조 표시합니다. WordPress에는 일련의 특정 표준이 있습니다. 이는 CI(지속적 통합) 파이프라인에서 실행되도록 설정할 수 있으며 모든 WordPress VIP 리포지토리에서 실행됩니다.
  • 정적 코드 분석을 위해 Fresh Consulting에서 사용하는 Sonar Cloud는 PHP와 JS 코드 모두에서 취약성과 보다 안전한 구현을 스캔합니다.

“적절한 양의 입력 유효성 검사를 수행하고 있습니까? 우리는 코드 내에서 가질 모든 종류의 출력을 적절하게 살균하고 있습니까?”

— Sean O'Shaughnessy, WordPress VIP

보안 및 WordPress 플러그인

타사 플러그인을 선택할 때는 리뷰와 평점이 좋고 다운로드 횟수가 많으며 웹사이트에서 사용할 수 있는 유연성을 갖춘 플러그인을 찾으십시오. 플러그인이 업데이트되었고 최신 버전의 WordPress와 호환되는지 확인하십시오.

직접 작성할 수 있는 플러그인을 사용하지 마십시오. 특히 적은 양의 코드만 필요한 경우 플러그인을 사용하는 대신 테마에 이 코드를 작성하세요. 그러면 플러그인을 업데이트할 때 취약점이 도입되지 않습니다.

“제가 추천하고 싶은 것은 테마 자체에 코드를 작성하는 것입니다. 과거에 내가 본 것은 업데이트를 수행하기 위해 최소한의 작업을 수행하는 플러그인이기 때문입니다. 그리고 기술이 발전함에 따라 해당 플러그인은 그렇지 않을 가능성이 있습니다. 이러한 플러그인이 취약점을 유발할 가능성은 우리가 예상하는 것보다 높을 수 있습니다.”

— Ayush Malakar, Fresh Consulting

항상 그렇듯이 코드를 최신 상태로 유지하는 것이 중요합니다. 핵심 및 플러그인 업데이트를 확인하고 WordPress, 플러그인 및 테마를 최신 상태로 유지하십시오.

보안 및 WordPress 엔드포인트

XML-RPC 및 REST API는 WordPress가 다른 시스템 또는 애플리케이션의 프런트 엔드와 통신하는 데 사용하는 끝점입니다. 이러한 끝점과 필요하지 않은 경우 비활성화할 수 있는 잠재적인 공격 벡터이므로 이러한 끝점이 애플리케이션에 중요한지 여부를 이해하는 것이 중요합니다.

잠재적인 공격 벡터로서의 XML-RPC

XML-RPC는 WordPress와 다른 시스템 간의 통신을 가능하게 하는 사양입니다. WordPress의 초기 버전에서 XML-RPC는 기본적으로 꺼져 있습니다. 그러나 버전 3.5부터 기본적으로 활성화되어 있습니다. 주된 이유는 WordPress 모바일 앱이 WordPress 설치와 통신할 수 있도록 허용하기 위해서였습니다.

잠재적인 공격 벡터로서의 REST API

WordPress REST API를 사용할 때 최상의 보안 방법을 사용하십시오. 예를 들어 콘텐츠가 분리된 프런트 엔드로 흘러야 하는 헤드리스 아키텍처에서 기업은 이를 계속 열어 두어야 할 수 있지만 노출된 상태로 남아 있는 사람들이 적절한 인증과 권한을 갖고 있는지 확인하십시오.

“이 성, WordPress, 애플리케이션이 있고 도개교가 있다고 해서 애플리케이션이 본질적으로 안전한 것은 아닙니다. 그러나 그것은 길입니다. 성으로 들어가는 길입니다. 따라서 이러한 사항을 잘 이해하고 파악하고 설명하는 것은 애플리케이션 보안에 대한 더 나은 자세를 갖추는 데 확실히 중요합니다.”

— Sean O'Shaughnessy, WordPress VIP

내 호스팅은 안전한가요?

호스트가 요구 사항에 충분히 안전한지 결정할 때 고려해야 할 사항이 많이 있습니다. 사용 가능한 모든 보안 옵션을 고려하고 보안 사고를 유발하는 플러그인 업데이트와 같은 긴급 상황 시 신속한 지원의 중요성을 잊지 않는 것이 좋습니다.

“호스팅 제공업체가 빠르고 능동적인 지원을 제공하고 있습니까? 또한 애플리케이션 또는 플러그인 취약점이 게시될 때 어떻게 대응하고 있습니까?”

— Sean O'Shaughnessy, WordPress VIP

전반적으로 공동 책임 호스팅을 고려하는 플랫폼을 찾으십시오. 고려해야 할 몇 가지 기능은 다음과 같습니다.

파일 시스템 권한

일부 호스트는 파일을 쓸 수 있는 대신 읽기 전용 파일 시스템을 제공합니다. 이것은 웹 프로세스 사용자가 어디에나 파일을 쓸 수 없도록 하여 잠재적인 공격 벡터를 차단합니다.

컨테이너화

다른 고객의 웹사이트에서 귀하의 사이트 리소스를 격리하는 호스트를 찾으십시오. 이것이 포괄적인 보안 수단은 아니지만 컨테이너화는 보안의 기본 수단을 제공합니다. 보너스로 수평적 또는 수직적 확장성을 위한 전용 리소스도 허용합니다.

버전 관리

WordPress 호스팅 플랫폼이 SFTP를 차단하고 버전 제어 시스템을 통한 코드 업데이트를 허용하면 애플리케이션의 공격 표면이 줄어듭니다. 또한 버전 제어를 통해 애플리케이션 소스 코드를 관리하면 해당 코드의 완전하고 감사 가능하며 컨텍스트가 풍부한 기록과 함께 코드의 "원래" 복사본을 소스로 제공합니다.

회사에서 WordPress 보안을 적용하려면 어떻게 해야 합니까?

보안은 코드나 호스트 수준의 고려 사항이 아닙니다. 인적 요소도 있으며 회사는 정기적인 보안 검사 및 암호 위생 규칙과 같은 프로세스를 구축할 수 있으며 이는 웹 사이트 보안을 향상시키는 데 큰 도움이 됩니다.

"조직 수준에서는 여러 계층의 지속적인 인증 또는 유효성 검사를 적용하는 관점에서 생각하는 것이 중요합니다."

— Sean O'Shaughnessy, WordPress VIP

제로 트러스트 및 최소 권한 액세스 관리

신중하게 고려된 역할과 액세스 관리를 통해 조직은 사람들이 최소한의 권한(따라서 최소한의 위험)으로 업무를 수행할 수 있도록 할 수 있습니다. 사용자의 역할과 기능을 적절하게 정의하고 할당해야 합니다. 이 기능은 기본적으로 WordPress와 함께 제공되며 모든 사용 사례에 맞게 확장할 수 있습니다.

비밀번호 위생

사용자는 모든 응용 프로그램에 대해 고유하고 추측하기 어려운 암호를 만들어야 합니다. Sean은 문자, 숫자 및 기호의 조합보다 임의의 단어 모음을 사용하는 것을 옹호하는 이 만화를 특히 좋아합니다.

XKCD 만화

2FA 및 SSO

2FA(2단계 인증) 및 SSO(Single Sign-On) 기술은 본질적으로 웹 사이트의 보안을 향상시키지 않지만 지원되는 모든 응용 프로그램에서 중앙 집중식 사용자 관리의 이점을 제공합니다.

주요 WordPress 보안 정보

  • 오픈 소스에는 보안 이점이 있습니다.
  • WordPress 및 플러그인을 최신 상태로 유지
  • 버전 관리 사용
  • WordPress 엔드포인트 이해
  • 보안을 담당하는 호스트 찾기
  • 조직 수준에서 성숙한 보안 관행 채택

한 시간 동안 진행되는 웨비나에서 WordPress 보안에 대한 더 많은 정보를 다뤘습니다. 생방송을 놓쳤다면 여기에서 녹음을 확인하는 것이 좋습니다.