Azure의 WordPress

Azure App Service
Azure Front Door
AKS(Azure Kubernetes Service)
Azure 웹 애플리케이션 방화벽
Azure Private Link

WordPress는 다양한 용도로 모든 크기의 웹 사이트를 만드는 데 사용되는 다재다능하고 인기 있는 콘텐츠 관리 시스템입니다. 소규모 개인 블로그에서 대규모 회사 사이트 및 전자 상거래 저장소에 이르기까지 WordPress는 다양한 요구 사항에 맞게 다양한 기능과 사용자 지정을 제공합니다. 그러나 설치의 다양한 크기 및 사용 사례로 인해 WordPress에는 트래픽 볼륨 및 스토리지 요구 사항과 같은 요인에 따라 고유한 호스팅 요구 사항이 있습니다.

이 문서에서는 Azure의 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와 같은 콘텐츠 배달 네트워크 서비스에서 정적 리소스를 제공하는 다른 이점도 있습니다. instance 경우 정적 콘텐츠를 오프로드할 때 사용자의 지리적 위치에 가까운 서버를 배치하여 대기 시간을 줄이고 웹 사이트 속도를 높일 수 있습니다.

참고

프라이빗 엔드포인트를 사용하여 Azure Front Door에서 원본을 보호하려면 Azure Front Door의 프리미엄 SKU를 사용해야 합니다. 자세한 내용은 Private Link 사용하여 원본 보안을 참조하세요.

콘텐츠 배달 네트워크 캐시 무효화

Azure Front Door 또는 Azure Content Delivery Network와 같은 콘텐츠 배달 네트워크를 사용하는 대규모 WordPress 설치의 경우 캐시 무효화 논리를 구현해야 합니다. 새 이벤트가 발생할 때마다 영향을 받는 페이지에 대한 콘텐츠 배달 네트워크의 캐시를 무효화해야 합니다. 이벤트의 예로는 새 아티클 게시, 기존 페이지 업데이트, 메모 추가 등이 있습니다. 무효화 논리는 변경 내용에 영향을 주는 모든 URL을 찾아야 합니다. 특히 논리는 콘텐츠 배달 네트워크 캐시에서 범주 및 아카이브와 같은 동적으로 생성된 페이지를 찾아 무효화해야 합니다. 일부 설치된 테마와 플러그 인을 사용하면 사소한 변경이 모든 페이지에 영향을 줄 수 있습니다.

검색 논리를 구현하는 쉬운 방법은 모든 URL에 대해 캐시 무효화를 수동으로 트리거할 수 있는 플러그 인을 사용하는 것입니다. 그러나 모든 URL을 한 번에 무효화하면 WordPress 사이트에서 트래픽이 급증할 수 있습니다. Content Delivery Network에 대한 캐시 무효화 논리의 예는 Azure 캐시 플러시 및 GitHub의 후크 구현 배포를 참조하세요.

2단계 인증 사용

2단계 인증은 설치 보안을 강화하고 관리자 계정을 무단 액세스 및 공격으로부터 보호하는 데 도움이 됩니다. 2단계 인증을 활용하려면 miniOrange 인증 플러그 인과 같은 플러그 인을 사용할 수 있습니다. 다른 기능 중에서 이 플러그 인은 Microsoft Authenticator를 관리자 권한으로 WordPress 사이트에 로그인하는 사용자를 위한 2단계 인증 방법으로 구성할 수 있는 방법을 제공합니다.

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 내부 instance 사용할 수 있습니다. Load Balancer OSI(Open Systems Interconnection) 모델의 4계층에서 작동합니다.

WordPress 관리 패널에 대한 차단된 공용 액세스를 보여 주는 아키텍처 다이어그램 허브 및 스포크 토폴로지의 VPN은 내부 액세스를 제공합니다.

이 아키텍처의 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 페이지 로드에 소요되는 시간을 분석합니다.

WordPress의 호스팅 문제

WordPress 애플리케이션 아키텍처를 사용하면 다음을 비롯한 몇 가지 호스팅 문제가 있습니다.

  • 확장성. 호스트 아키텍처는 최대 트래픽 기간 동안 스케일 아웃할 수 있어야 합니다.
  • ReadWriteMany(RWX) 스토리지. 기본적으로 WordPress는 모든 정적 자산, 플러그 인 및 테마 소스 코드를 /wp-content/ 디렉터리에 저장합니다. 스케일 아웃하는 동안 모든 노드는 해당 디렉터리에서 읽고 쓸 수 있어야 합니다.
  • IOPS(초당 입력/출력 작업) 스토리지 클래스입니다. WordPress는 PHP 프로세서가 들어오는 요청 중에 참조, 로드 및 실행하는 1,000개가 넘는 작은 .php 파일로 구성됩니다. 일부 프로토콜에서는 많은 작은 파일을 로드하면 오버헤드가 증가할 수 있습니다. 전체 성능은 총 크기가 동일한 파일을 로드하는 것보다 느립니다. 따라서 스토리지 솔루션은 높은 IOPS를 지원해야 합니다.
  • 캐시 무효화. 새 문서를 게시하는 경우와 같이 애플리케이션에 새 작업이 있는 경우 모든 노드에서 캐시를 무효화해야 합니다.
  • 캐시를 빌드하는 시간입니다. 지정된 노드의 첫 번째 사용자의 경우 캐시가 빌드될 때까지 응답 시간이 느려질 수 있습니다.

Azure의 WordPress 호스팅 옵션

WordPress는 AKS(App Service, Azure Kubernetes Service) 및 Azure Virtual Machines 실행할 수 있습니다. 설치 크기는 선택한 호스트에서 중요한 요소입니다. 중소 규모의 설치의 경우 App Service 비용 효율적인 옵션입니다. 그러나 대규모 설치의 경우 AKS 또는 VM 호스팅을 고려해야 합니다.

App Service의 WordPress

Microsoft는 App Service on Linux VM에서 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에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

보안 주체 작성자:

기타 기여자:

  • Adrian Calinescu | 선임 클라우드 솔루션 설계자

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.

다음 단계

제품 설명서:

학습 모듈: