WordPress는 다양한 용도로 모든 크기의 웹 사이트를 만드는 데 사용되는 다목적으로 널리 사용되는 콘텐츠 관리 시스템입니다. 작은 개인 블로그에서 대규모 회사 사이트 및 전자 상거래 저장소에 이르기까지 WordPress는 다양한 요구 사항에 맞게 다양한 기능과 사용자 지정을 제공합니다. 그러나 설치의 다양한 크기 및 사용 사례로 인해 WordPress에는 트래픽 볼륨 및 스토리지 요구 사항과 같은 요인에 따라 고유한 호스팅 요구 사항이 있습니다.
이 문서에서는 Azure의 WordPress 배포에 대해 설명합니다. 안전하고 확장 가능하며 비용 효율적인 설치를 보장하기 위해 고려해야 할 사항과 구현에 대한 지침을 제공합니다.
일반 WordPress 보안 및 성능 팁
이렇게 엄청난 인기 때문에, WordPress는 해커의 표적이 됩니다. 플랫폼에서 실행되는 웹 사이트는 맬웨어 및 피싱 공격과 같은 보안 위협에 취약할 수 있습니다. 다음 팁은 보다 안전하고 성능이 우수한 WordPress 설치를 만들어 이러한 위험을 해결하는 데 도움이 될 수 있습니다.
호스팅 아키텍처에 VM(가상 머신) 또는 Azure App Service를 사용하든, 다른 솔루션을 사용하든 모두 이러한 팁이 적용됩니다.
Azure Web Application Firewall 사용
Web Application Firewall은 일반적인 웹 기반 공격 대비 웹 사이트를 보호하는 데 도움이 됩니다. 웹 사이트와 인터넷 간의 필터 역할을 합니다. 이 용량에서 Web Application Firewall은 들어오는 트래픽을 모니터링하고 웹 사이트 코드의 취약성을 악용할 수 있는 악의적인 요청을 차단합니다. Web Application Firewall은 SQL 삽입, XSS(교차 사이트 스크립팅) 및 CSRF(교차 사이트 요청 위조)를 비롯한 다양한 공격으로부터 웹 사이트를 보호하는 데 도움이 됩니다.
Azure Front Door의 Web Application Firewall을 사용하여 웹 애플리케이션에 대한 중앙 집중식 보호를 받아야 합니다. Azure Front Door는 전 세계 사용자가 애플리케이션의 정적 및 동적 웹 콘텐츠에 빠르고 안정적이며 안전하게 액세스할 수 있도록 지원하는 콘텐츠 전송 네트워크입니다. Azure Front Door에 Web Application Firewall을 배포하면 일반적인 악용 및 취약성에 대해 웹 서비스를 방어할 수 있습니다.
사용하지 않는 플러그 인 및 테마 제거
WordPress 설치에서 사용되지 않는 플러그 인 및 테마를 제거해야 합니다. 이 단계는 WordPress 웹 사이트를 안전하게 유지하고 성능을 최적화하는 데 중요합니다. 적극적으로 사용하지 않는 플러그 인이나 테마조차도 해커가 오래되었거나 연결되지 않은 코드의 취약성을 악용할 수 있는 진입점을 제공하여 보안 위험을 초래할 수 있습니다. 또한 웹 사이트에 많은 플러그 인과 테마를 설치하면 로드 시간과 서버 리소스 사용량을 늘려 성능이 저하될 수 있습니다.
PHP 프로세서에서 정적 콘텐츠 오프로드
PHP 프로세서의 부하를 줄이려면 이미지, 비디오 및 CSS 파일과 같은 정적 콘텐츠를 오프로드해야 합니다. 정적 콘텐츠를 오프로드하면 웹 사이트 성능을 최적화하고 서버 부하를 줄일 수 있습니다. 사용자가 웹 사이트를 방문하면 서버는 PHP 코드를 처리하고 HTML 콘텐츠를 동적으로 생성합니다. 이 프로세스는 리소스를 많이 사용합니다. 그러나 정적 콘텐츠는 자주 변경되지 않으므로 서버 파일 시스템 또는 콘텐츠 전송 네트워크에서 직접 정적 콘텐츠를 제공할 수 있습니다. 이러한 자산을 오프로드하면 서버의 CPU 및 RAM 부하를 줄일 수 있습니다. 이 구성을 사용하면 페이지 로드 시간이 빨라지고 웹 사이트 성능이 향상되며 사용자 환경이 향상됩니다.
Azure Front Door와 같은 콘텐츠 전송 네트워크 서비스에서 정적 리소스를 제공하는 다른 이점도 있습니다. 예를 들어 정적 콘텐츠를 오프로드할 때 사용자의 지리적 위치에 가까운 서버를 배치하여 대기 시간을 줄이고 웹 사이트 속도를 높일 수 있습니다.
참고 항목
프라이빗 엔드포인트를 사용하여 Azure Front Door로 원본을 보호하려면 Azure Front Door의 프리미엄 SKU를 사용해야 합니다. 자세한 내용은 Private Link를 사용하여 원본 보호를 참조하세요.
콘텐츠 전송 네트워크 캐시 무효화
Azure Front Door 또는 Azure Content Delivery Network와 같은 콘텐츠 전송 네트워크를 사용하는 대규모 WordPress 설치의 경우 캐시 무효화 논리를 구현해야 합니다. 새 이벤트가 발생할 때마다 영향을 받는 페이지에 대한 콘텐츠 전송 네트워크의 캐시를 무효화해야 합니다. 이벤트의 예로는 새 문서 게시, 기존 페이지 업데이트, 주석 추가 등이 있습니다. 무효화 논리는 변경 내용에 영향을 주는 모든 URL을 찾아야 합니다. 특히 논리는 콘텐츠 전송 네트워크 캐시에서 범주 및 아카이브와 같이 동적으로 생성된 페이지를 찾아 무효화해야 합니다. 일부 설치된 테마 및 플러그 인에서는 사소한 변경이라도 모든 페이지에 영향을 줄 수 있습니다.
검색 논리를 구현하는 방법은 모든 URL에 대해 캐시 무효화를 수동으로 트리거할 수 있는 플러그 인을 사용하는 것입니다. 그러나 모든 URL을 한 번에 무효화하면 WordPress 사이트에서 트래픽이 급증할 수 있습니다.
2단계 인증 활성화
2단계 인증은 설치 보안을 강화하고 관리자 계정을 무단 액세스 및 공격으로부터 보호하는 데 도움이 됩니다. 2단계 인증을 활용하려면 miniOrange 인증 플러그 인과 같은 플러그 인을 사용할 수 있습니다. 다른 기능 중에서 이 플러그 인은 WordPress 사이트에 관리자로 로그인하는 사용자를 위한 2단계 인증 방법으로 Microsoft Authenticator를 구성하는 방법을 제공합니다.
XML-RPC 액세스 사용 안 함
XML-RPC는 타사 애플리케이션이 웹 사이트의 서버와 상호 작용하는 방법을 제공하는 원격 프로토콜입니다. 그러나 이 프로토콜은 무차별 암호 대입 공격을 시작하거나 콘텐츠 관리 시스템에서 취약성을 악용하는 데 사용하는 해커의 일반적인 대상이기도 합니다. Azure Front Door를 사용하는 경우 /xmlrpc.php
형식으로 URL에 대한 거부 규칙을 설정하여 XML-RPC를 사용하지 않도록 설정할 수 있습니다.
관리 패널에 대한 액세스 제한
기본적으로 WordPress 관리 패널은 계정 자격 증명과 /wp-login.php
또는 /wp-admin
형식이 있는 올바른 URL을 가진 모든 사용자가 액세스할 수 있습니다. 따라서 해커 및 기타 악의적인 행위자가 자격 증명을 추측하거나, 세션 하이재킹을 수행하거나, 무차별 암호 대입 공격을 시작하거나, WordPress의 취약성을 악용하여 액세스 권한을 얻을 수 있습니다.
Web Application Firewall은 일부 공격을 방지하는 데 도움이 될 수 있지만 많은 관리자는 네트워크 수준에서 WordPress 관리 패널에 대한 액세스를 제한하는 것을 선호합니다.
예를 들어 Azure Front Door에서 개인 URL에 대한 액세스를 차단할 수 있습니다. 그런 다음 Azure Application Gateway를 사용하여 허브 및 스포크 토폴로지를 사용하는 프라이빗 네트워크에서 내부 액세스를 제공할 수 있습니다. Application Gateway의 내부 인스턴스는 Web Application Firewall 규칙 및 Azure Front Door 규칙을 지원합니다. 이러한 규칙은 내부 공격으로부터 WordPress 설치를 보호하는 데 도움이 됩니다. 내부 공격의 위험을 허용할 수 있는 경우 Application Gateway 대신 Azure Load Balancer의 내부 인스턴스를 사용할 수 있습니다. Load Balancer는 OSI(Open Systems Interconnect) 모델의 계층 4에서 작동합니다.
이 아키텍처의 Visio 파일을 다운로드합니다.
특정 WordPress 플러그 인은 /wp-admin/admin-ajax.php
형식의 URL이 공개적으로 액세스 가능하고 이 거부 규칙에서 제거되어야 합니다.
Azure Key Vault에 암호 저장
Azure에서 WordPress 배포의 보안을 보장하려면 데이터베이스 암호, TLS 또는 SSL 인증서와 같은 비밀을 Key Vault에 저장하는 것이 좋습니다. 이 클라우드 기반 서비스는 암호화 키, 인증서 및 비밀의 보안 스토리지 및 관리를 제공합니다.
Key Vault를 사용하면 권한 있는 애플리케이션 및 서비스가 비밀에 안전하게 액세스할 수 있습니다. WordPress 컨테이너 이미지 또는 애플리케이션 코드에 일반 텍스트로 저장할 필요가 없습니다.
성능 조정
WordPress 성능을 최적화하려면 다양한 설정을 조정하고 플러그 인을 사용해야 합니다. 다음 플러그 인은 WordPress 설치를 디버깅하는 데 유용할 수 있습니다.
쿼리 모니터는 각 SQL 쿼리 및 기타 작업에 소요된 시간에 대한 분석을 제공합니다. 예를 들어 PHP 오류, 후크 및 작업, 블록 편집기 블록, 큐에 추가된 스크립트 및 스타일시트, HTTP API 호출 등이 있습니다.
Laps는 WordPress 페이지 로드에 대한 성능 정보를 보여주는 플러그 인입니다. 쉽게 검사할 수 있는 시각적 요약을 제공하며 PHP 실행, 핵심 프로세스, 플러그 인 로드, 테마 로드, 기본 포스트 루프, 사이드바, 데이터베이스 쿼리 및 네트워크 요청과 같은 이벤트를 자동으로 추적합니다. 이 분석에서는 WordPress 페이지 로드에 소요되는 시간을 보여줍니다.
WordPress의 호스팅 챌린지
WordPress 애플리케이션 아키텍처에는 다음을 비롯한 몇 가지 호스팅 문제가 있습니다.
- 확장성. 호스팅 아키텍처는 최대 트래픽 기간 동안 스케일 아웃할 수 있어야 합니다.
- RWX(ReadWriteMany) 스토리지. 기본적으로 WordPress는 모든 정적 자산, 플러그 인 및 테마 소스 코드를
/wp-content/
디렉터리에 저장합니다. 스케일 아웃하는 동안 모든 노드는 해당 디렉터리에서 읽고 쓸 수 있어야 합니다. - IOPS(초당 입출력 작업 수) 스토리지 클래스입니다. WordPress는 PHP 프로세서가 들어오는 요청 중에 참조, 로드 및 실행하는 1,000개 이상의 작은 .php 파일로 구성됩니다. 일부 프로토콜의 경우 다수의 작은 파일을 로드하면 오버헤드가 증가할 수 있습니다. 전체 성능은 총 크기가 동일한 파일을 로드하는 것보다 느립니다. 따라서 스토리지 솔루션은 높은 IOPS를 지원해야 합니다.
- 캐시 무효화. 애플리케이션에 새 작업이 있는 경우(예: 새 문서를 게시하는 경우) 모든 노드에서 캐시를 무효화해야 합니다.
- 캐시를 빌드하는 시간입니다. 지정된 노드의 첫 번째 사용자의 경우 캐시가 빌드될 때까지 응답 시간이 느려질 수 있습니다.
Azure의 WordPress 호스팅 옵션
WordPress는 App Service, AKS(Azure Kubernetes Service) 및 Azure Virtual Machines에서 실행할 수 있습니다. 설치 크기는 선택한 호스트에서 중요한 요소입니다. 중소 규모 설치의 경우 App Service는 비용 효율적인 옵션입니다. 그러나 대규모 설치의 경우 AKS 또는 VM 호스팅을 고려해야 합니다.
App Service의 WordPress
Microsoft는 Linux VM에서 App Service에서 WordPress를 실행하기 위한 완전 관리형 솔루션을 제공합니다. 자세한 내용은 WordPress 사이트 만들기를 참조하세요. 이 솔루션:
- WordPress 설치를 빠르고 쉽게 배포할 수 있도록 설계되었습니다.
- 중소 규모의 WordPress 설치에 적합합니다.
- 복잡한 구성 또는 관리 없이도 Azure 플랫폼의 확장성, 안정성 및 보안을 제공합니다.
- 자동 업데이트, 백업 및 모니터링을 수행하여 사이트를 항상 사용할 수 있도록 합니다.
자세한 내용은 App Service의 WordPress를 참조하세요.
스토리지 집약적인 워크로드
대규모 WordPress 설치는 스토리지를 많이 사용할 수 있습니다. 이러한 시나리오에서는 IOPS 클래스가 높고 대기 시간이 짧은 스토리지 솔루션을 사용해야 합니다. Azure NetApp Files를 사용하는 것이 좋습니다. Azure NetApp Files는 스토리지 집약적 WordPress 배포를 지원할 수 있습니다. 또한 데이터 보호, 백업 및 복원, 지역 간 복제 및 재해 복구와 같은 추가 기능을 제공합니다.
WordPress의 컨테이너 배포의 경우 AKS를 사용해야 합니다. Azure NetApp Files를 사용하여 Kubernetes CSI(Container Storage Interface) 드라이버를 통해 스토리지를 구현합니다. Azure NetApp Files는 모든 노드가 동일한 스토리지에서 읽고 쓸 수 있도록 ReadWriteMany
모드를 제공합니다. 자세한 내용은 AKS WordPress 아키텍처를 참조하세요.
VM에서 실행되는 대규모 WordPress 설치의 경우 NFS(네트워크 파일 시스템) 프로토콜을 통해 Azure NetApp Files를 탑재해야 합니다. 자세한 내용은 가상 머신의 WordPress를 참조하세요.
변경 불가능한 WordPress 컨테이너
기존 호스팅 방법에 대한 다른 방법은 변경 불가능한 컨테이너에 WordPress를 배포하는 것입니다. 이 방법에는 장점과 단점이 있습니다. 소스 코드와 변경 불가능한 컨테이너 내의 모든 리소스는 고정되어 있으며, 배포 후에는 수정할 수 없습니다. 새 버전의 컨테이너 이미지에서 새 플러그 인 설치 또는 WordPress 코어 업데이트를 포함하여 모든 변경을 수행해야 합니다. 이 방법은 일관성을 보장하고 롤백을 간소화하는 데 도움이 되지만 변경하려면 배포 파이프라인을 빌드해야 합니다. 또한 변경 불가능한 컨테이너는 제공하는 영구 스토리지 옵션이 제한될 수 있습니다. 미디어 파일 및 기타 데이터를 처리하기 위한 솔루션을 개발해야 할 수도 있습니다. 이러한 제한에도 불구하고 변경 불가능한 컨테이너 배포는 보안, 확장성 및 이식성 측면에서 이점을 제공합니다.
사용자 지정 컨테이너 이미지를 사용하여 Azure Container Apps, AKS 및 App Service를 비롯한 다양한 플랫폼에서 변경할 수 없는 컨테이너화된 버전의 WordPress를 배포할 수 있습니다. Azure Container Registry에서 컨테이너 이미지를 호스트할 수 있습니다.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
보안 주체 작성자:
- Vaclav Jirovsky | 클라우드 솔루션 아키텍트
기타 기여자:
- Adrian Calinescu | 선임 클라우드 솔루션 아키텍트
LinkedIn 비공개 프로필을 보려면, LinkedIn에 로그인하세요.
다음 단계
제품 설명서:
- Azure Front Door란?
- Azure 웹 애플리케이션 방화벽이란?
- Azure Key Vault 정보
- Azure Load Balancer란?
- Azure Application Gateway란?
- Azure Virtual Network란?
- Azure Firewall이란?
- VPN Gateway란?
학습 모듈: