웹사이트 검색

Ubuntu의 WordPress에서 보안 업데이트 및 설치를 구성하는 방법


상태: 더 이상 사용되지 않음

이 문서에서는 더 이상 지원되지 않는 Ubuntu 버전에 대해 설명합니다. 현재 Ubuntu 12.04를 실행하는 서버를 운영 중인 경우 지원되는 Ubuntu 버전으로 업그레이드하거나 마이그레이션하는 것이 좋습니다.

  • Ubuntu 14.04로 업그레이드합니다.
  • Ubuntu 14.04에서 Ubuntu 16.04로 업그레이드
  • 서버 데이터를 지원되는 버전으로 마이그레이션

이유:

대신 참조:

소개

WordPress는 오늘날 인터넷에서 가장 널리 사용되는 CMS(콘텐츠 관리 시스템)입니다. 강력하고 단순하기 때문에 많은 사람들이 사용하지만 때때로 사람들은 보안을 희생하면서 편리함을 위해 절충합니다.

이것은 디렉터리 소유권 및 권한 할당을 선택하는 방법과 업그레이드를 수행하도록 선택하는 방법의 경우입니다. 이를 수행하는 다양한 방법이 있습니다. 테마와 플러그인을 업그레이드하고 설치하는 비교적 안전한 방법을 선택합니다.

이 가이드에서는 VPS에 LAMP 스택을 설치했다고 가정합니다.

또한 Ubuntu 12.04에 WordPress를 설치했다고 가정합니다. 여기에서 Ubuntu 12.04에 WordPress를 설치하는 방법에 대한 가이드를 따를 수 있습니다.

사용자와 필요한 소프트웨어가 있으면 이 가이드를 따라 시작할 수 있습니다.

SSH로 보안 업데이트 설정

키 기반 업데이트 및 설치를 구성하지 않은 경우 이러한 작업 중 하나를 시도할 때마다 연결 정보를 묻는 메시지가 표시됩니다.

호스트 이름, FTP 사용자 이름 및 FTP 암호와 같은 FTP 자격 증명을 제공하라는 메시지가 표시됩니다.

FTP는 본질적으로 안전하지 않은 프로토콜이므로 대부분의 경우 사용하지 않는 것이 좋습니다. 안전한 대안을 사용하도록 설치를 구성할 것입니다.

권한 변경

위의 WordPress 설치 가이드를 따랐다면 Apache 웹 사용자에게 웹 디렉토리의 권한을 부여한 것을 알 수 있습니다. 이것은 시작하는 매우 빠른 방법이지만 잠재적으로 보안 위험이 될 수 있습니다. 이상적인 상황에서는 콘텐츠 소유자를 웹 프로세스에서 분리합니다. SSH 업데이트를 허용하기 위한 준비의 일환으로 이 작업을 수행합니다.

WordPress 설치를 소유하기 위해 wp-user라는 사용자를 생성합니다.

sudo adduser wp-user

설정하려는 암호를 포함하여 많은 질문을 받게 됩니다. 암호를 설정하지 않으려면 반복되는 암호 질문을 포함하여 모든 프롬프트에서 "ENTER\를 누르십시오.

다음으로 WordPress 파일이 제공되는 /var/www/html 디렉토리로 변경합니다.

cd /var/www/html

설치 중에 구성한 www-data Apache 웹 사용자에서 변경하여 이 디렉토리 아래의 모든 것에 대한 소유권을 새 사용자에게 부여합니다.

sudo chown -R wp-user:wp-user /var/www/html

WordPress용 SSH 키 생성

이제 WordPress 사용자를 위한 SSH 키 쌍을 생성해야 합니다. 다음 명령을 실행하여 WordPress 사용자에 로그인합니다.

sudo su - wp-user

ssh-keygen 명령으로 키 쌍을 생성합니다.

ssh-keygen -t rsa -b 4096

키를 저장할 위치와 이름을 묻는 메시지가 표시됩니다. /home/wp-user/wp_rsa를 선택합니다. 또한 암호를 선택하라는 메시지가 표시됩니다. 암호 인증 없이 키를 생성하려면 프롬프트에서 "ENTER\를 누르십시오.

일반 사용자 계정으로 종료합니다.

exit

권한을 안전하게 유지하려면 약간의 유지 관리가 필요합니다. WordPress 사용자에게 소유권을 부여하고 싶지만 www-data 그룹을 그룹 소유자로 설정합니다. 그런 다음 다른 액세스를 잠그려고 합니다.

sudo chown wp-user:www-data /home/wp-user/wp_rsa*
sudo chmod 0640 /home/wp-user/wp_rsa*

웹 프로세스가 로그인할 수 있도록 ~/.ssh 디렉토리를 만들고 적절한 권한과 소유권을 부여해야 합니다.

sudo mkdir /home/wp-user/.ssh
sudo chown wp-user:wp-user /home/wp-user/.ssh/
sudo chmod 0700 /home/wp-user/.ssh/

이제 사용자가 해당 자격 증명을 사용하여 로그인할 수 있도록 공개 키를 인증된 키 파일에 입력할 수 있습니다. 이 파일이 아직 없기 때문에 공개 키를 복사하기만 하면 됩니다.

sudo cp /home/wp-user/wp_rsa.pub /home/wp-user/.ssh/authorized_keys

다시 말하지만, 보안을 유지하면서 액세스할 수 있도록 이러한 파일의 권한과 소유권을 조정해야 합니다.

sudo chown wp-user:wp-user /home/wp-user/.ssh/authorized_keys
sudo chmod 0644 /home/wp-user/.ssh/authorized_keys

이 키는 동일한 컴퓨터에 있는 WordPress 사이트 내에서 로그인하는 데만 사용되므로 이 서버에 대한 로그인을 제한할 수 있습니다.

sudo nano /home/wp-user/.ssh/authorized_keys

파일 맨 처음에 다른 텍스트 앞에 빨간색으로 표시된 부분을 추가하여 키 사용을 로컬 컴퓨터로 제한합니다.

<예비>

파일을 저장하고 닫습니다.

키를 사용하도록 WordPress 구성 조정

이제 WordPress에서 SSH 로그인을 인증하는 데 필요한 패키지를 설치할 수 있습니다.

sudo apt-get update
sudo apt-get install php5-dev libssh2-1-dev libssh2-php

이제 유틸리티가 있으므로 구성 파일을 편집하고 구성한 값을 설정할 수 있습니다.

sudo nano /var/www/html/wp-config.php

파일 끝에 다음 줄을 추가합니다.

define('FTP_PUBKEY','/home/wp-user/wp_rsa.pub');
define('FTP_PRIKEY','/home/wp-user/wp_rsa');
define('FTP_USER','wp-user');
define('FTP_PASS','');
define('FTP_HOST','127.0.0.1:22');

파일을 저장하고 닫습니다.

이제 새로운 업데이트 절차를 활용하려면 Apache를 다시 시작해야 합니다.

sudo service apache2 restart

결과 테스트

이제 구성이 올바른지 테스트할 수 있습니다. 다음 URL의 브라우저에서 사이트를 방문하여 WordPress 사이트에 관리자로 로그인합니다.

<예비>

새 테마 설치를 시도하여 설정이 올바르게 구성되었는지 확인할 수 있습니다. "모양\을 클릭한 다음 "테마\를 클릭하십시오.

상단에서 "테마 설치\를 클릭합니다.

테마를 검색하거나 "추천\ 테마를 클릭하십시오. "설치\를 클릭하여 사이트에 테마를 설치하십시오. 지정한 키 파일을 사용하여 성공적으로 로그인, 다운로드 및 패키지를 설치해야 합니다.

"활성화\를 클릭하여 새 테마로 전환한 다음 "사이트 방문\을 클릭하여 결과를 볼 수 있습니다.

일반적인 문제

SSH 키를 잘못 구성한 경우 몇 가지 문제가 발생할 수 있습니다.

웹 인터페이스를 통해 변경 사항을 푸시하려고 할 때 볼 수 있는 한 가지 일반적인 오류는 다음과 같습니다.

<예비>

이 오류는 매우 불특정합니다. 여러 가지 이유로 발생할 수 있으며 그 중 일부는 다음과 같습니다.

  • 공개 키, 개인 키 및 이를 포함하는 디렉토리에 대한 부적절한 권한.\n웹 프로세스는 이러한 각 파일을 읽을 수 있어야 하므로 웹 서버 그룹이 소유자인 경우 각 파일에는 최소 640 권한이 있어야 합니다.\n반면에 ~.ssh 디렉토리는 로그인할 사용자만 액세스할 수 있으면 됩니다. 이는 이 예에서 wp-user 사용자를 의미합니다. 디렉토리의 내용은 이 사용자가 유사하게 소유해야 하며 다른 사람이 쓸 수 없어야 합니다.\n
  • 부적절한 파일 소유권. 이러한 동일한 키는 올바른 당사자가 소유해야 합니다. 소유자와 그룹 소유자 사이에서 이는 로그인 중인 사용자와 웹 프로세스 사용자가 혼합된 경우가 많습니다.\n이 예에서 wp-user는 개인 키와 공개 키를 모두 소유하는 반면 www-data 그룹은 그룹 소유자입니다. 이를 통해 서버가 파일을 읽을 수 있도록 허용하면서 올바른 사용자와 연결할 수 있습니다.\n
  • 부적절한 파일 형식. 공개 또는 개인 키에 형식 문제가 있는 경우 WordPress는 키를 거부하고 사용을 거부합니다. ~/.ssh/authorized_keys 파일도 마찬가지입니다. Authorized_keys 파일에 추가한 부분 from=\127.0.0.1\ ...은 공개 키에 없어야 합니다. SSH가 유효한 파일로 간주하더라도 WordPress는 시도를 SSH 데몬에 보내기 전에 유효하지 않은 것으로 거부합니다.\n

테마 및 플러그인을 업데이트하거나 설치하는 과정에서 또 다른 일반적인 오류는 다음과 같습니다.

Could not create directory...

이것은 일반적으로 잘못된 웹 디렉토리 소유권과 관련된 문제입니다. wp-user 계정으로 파일을 업데이트하려는 경우 업로드 디렉토리도 이 사용자가 소유하고 액세스할 수 있어야 합니다.

즉, /var/www/html 디렉토리 내의 파일과 폴더를 wp-user 계정에 제공해야 합니다. 위의 지침을 따른 후에도 여전히 문제가 있는 경우 -R 옵션을 chown 명령에 전달했는지 확인하십시오.

확인해야 할 또 다른 사항은 업로드 디렉토리에 WordPress 사용자에 대한 쓰기 권한이 있는지입니다. 문서 루트로 변경:

cd /var/www/html

이 폴더에 있는 파일의 권한을 확인하면 소유자(첫 번째 열)에 대한 쓰기 권한이 표시되지만 두 번째 또는 세 번째 열에 대한 권한은 표시되지 않습니다.

ls -l
total 180
-rw-r--r--  1 wp-user wp-user   177 Nov 18 15:21 index.html
-rw-r--r--  1 wp-user wp-user   418 Sep 24 20:18 index.php
-rw-r--r--  1 wp-user wp-user    20 Nov 18 15:24 info.php
-rw-r--r--  1 wp-user wp-user 19929 Jan 18  2013 license.txt
-rw-r--r--  1 wp-user wp-user  7128 Oct 23 16:08 readme.html
-rw-r--r--  1 wp-user wp-user  4892 Oct  4 10:12 wp-activate.php
drwxr-xr-x  9 wp-user wp-user  4096 Oct 29 16:08 wp-admin/
-rw-r--r--  1 wp-user wp-user   271 Jan  8  2012 wp-blog-header.php
-rw-r--r--  1 wp-user wp-user  4795 Sep  5 21:38 wp-comments-post.php
-rw-r--r--  1 wp-user wp-user  3350 Nov 19 12:23 wp-config.php
-rw-r--r--  1 wp-user wp-user  3177 Nov  1  2010 wp-config-sample.php
drwxr-xr-x  5 wp-user wp-user  4096 Nov 19 12:25 wp-content/
. . .

보시다시피 -rw-r--r--를 읽는 파일 권한과 drwxr-xr-x를 읽는 디렉터리 권한은 파일과 디렉토리를 소유한 wp-user는 쓰기 권한이 있고 다른 사용자는 그렇지 않습니다.

테마, 플러그인 등을 포함하는 wp-content 디렉토리 내의 유사한 검사는 이러한 디렉토리가 wp-user 사용자가 소유하고 쓰기 가능한지 여부를 보여줍니다.

cd /var/www/html/wp-content
ls -l
total 16
-rw-r--r-- 1 wp-user wp-user   28 Jan  8  2012 index.php
drwxr-xr-x 3 wp-user wp-user 4096 Oct 29 16:08 plugins
drwxr-xr-x 6 wp-user wp-user 4096 Nov 19 13:10 themes
drwxr-xr-x 2 wp-user wp-user 4096 Nov 19 13:10 upgrade

이러한 디렉터리는 올바르게 구성되어 있습니다.

결론

WordPress는 편리하고 비교적 쉽게 구성하고 관리할 수 있지만 보안이 사이트의 주요 관심사가 아니어야 한다는 의미는 아닙니다.

모든 보안 릴리스에서 즉시 수행되어야 하는 설치 업데이트와 같은 간단한 작업은 간단해야 합니다. 또한 안전하지 않은 프로토콜을 사용하거나 안전하지 않은 디렉터리 권한을 설정하도록 강요하는 절차가 되어서도 안 됩니다.

업데이트 절차 및 올바른 디렉터리 권한을 보호하는 것은 다소 큰 보안 문제를 방지할 수 있는 쉬운 작업 중 하나입니다.

저스틴 엘링우드