Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

워드프레스 보안 강화: PHP 실행 및 디렉터리 탐색 비활성화 방법

워드프레스(WordPress) 사이트의 파일과 디렉터리는 사이트 보안에 매우 중요한 역할을 합니다. 워드프레스를 설치한 직후 가장 우선순위로 삼아야 할 작업이 바로 이 설정입니다. 어떤 파일을 누가 볼 수 있는지, 사용자가 어떤 작업을 수행할 수 있는지 적절한 권한을 설정하면 사이트의 전반적인 보안 수준이 크게 향상됩니다. 이 글에서는 PHP 실행 비활성화와 디렉터리 탐색 차단이 사이트 보안을 어떻게 개선하는지 자세히 알아보겠습니다.

PHP 실행 비활성화: 왜 필요하고, 어떻게 할까?

업로드(Uploads), 테마(Themes), 플러그인(Plugins) 폴더와 같은 특정 워드프레스 폴더는 기본적으로 쓰기 가능하도록 설정되어 있습니다. 이러한 권한 덕분에 사용자는 사이트에 이미지나 동영상을 업로드하고, 테마와 플러그인을 설치할 수 있습니다. 플러그인이나 테마를 설치할 때마다 새로운 파일들이 해당 폴더에 저장되는데, 폴더가 쓰기 가능하지 않다면 이런 작업은 불가능합니다.

많은 사람이 워드프레스로 사이트를 구축하는 이유 중 하나는 테마와 플러그인을 통해 손쉽게 사이트를 커스터마이징할 수 있기 때문입니다. 테마와 플러그인 폴더가 기본적으로 쓰기 가능하기 때문에 누구나 자신의 웹사이트에 원하는 테마나 플러그인을 자유롭게 설치할 수 있습니다. 하지만 안타깝게도 이러한 권한은 피싱 공격, SEO 스팸, 무차별 대입 공격(brute force attack) 등과 같은 해킹 시도의 빌미가 될 수도 있습니다. 해커는 이를 악용해 악성 스크립트를 업로드하고 원격으로 실행할 수 있으며, 그 결과 사이트 전체에 대한 접근 권한을 탈취하거나 웹사이트 자체를 파괴할 수도 있습니다.

실제로 Mailpoet 해킹 사건에서는 해커들이 악성 PHP 코드를 업로드 폴더에 올린 뒤 이를 실행해 사이트를 장악한 바 있습니다.

쓰기 권한을 아예 제거하는 것은 현실적이지 않습니다. 그렇게 되면 이미지를 업로드하거나 플러그인과 테마를 설치할 수 없기 때문입니다. 대신 할 수 있는 최선의 방법은 PHP 실행을 비활성화하여 성공적인 공격의 영향 범위를 줄이는 것입니다. 이렇게 하면 특정 폴더 내에서의 스크립트 실행 권한이 제거됩니다.

PHP 실행을 비활성화하는 가장 간단한 방법은 해당 기능을 차단하고 싶은 폴더의 .htaccess 파일에 특정 코드를 추가하는 것입니다.

참고: 파일을 수정하기 전에 반드시 사이트 백업을 먼저 진행하세요. 다음 단계에서 사소한 실수 하나만으로도 사이트가 깨지거나 다른 문제가 발생할 수 있습니다. 백업을 해두면 문제가 생겼을 때 정상 동작하는 사이트 버전으로 빠르게 복원할 수 있습니다.

1단계: 업로드 폴더에서 PHP 실행을 비활성화하려면 업로드 폴더 안에 .htaccess 파일을 생성합니다. 이 폴더는 public_html 아래의 wp-content 경로에서 찾을 수 있습니다.

워드프레스 보안 강화: PHP 실행 및 디렉터리 탐색 비활성화 방법

2단계: 윈도우에서는 메모장, Mac에서는 TextEdit을 열어 새 파일을 만듭니다. 아래 코드를 입력한 뒤 .htaccess라는 이름으로 저장합니다(.htaccess.txt로 저장되지 않도록 주의하세요):

# BEGIN WordPress
 
 <IfModule mod_rewrite.c>
 
 RewriteEngine On
 
 RewriteBase /
 
 RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f
 
 RewriteCond %{REQUEST_FILENAME} !-d
 
 RewriteRule . /index.php [L] </IfModule>
 
 # END WordPress

3단계: 코드를 저장한 후 해당 파일을 업로드 폴더에 업로드합니다.

워드프레스 보안 강화: PHP 실행 및 디렉터리 탐색 비활성화 방법

4단계: 이제 업로드 폴더에 새로운 .htaccess 파일이 생성되었습니다. 파일을 마우스 오른쪽 버튼으로 클릭하고 편집(Edit)을 선택한 뒤, 아래 코드를 추가합니다.

<FilesMatch “\.(php|php\.)$”> 

Order Allow,Deny 

Deny from all 

</FilesMatch>

아래 이미지는 .htaccess 파일에 코드를 추가한 실제 모습입니다.

워드프레스 보안 강화: PHP 실행 및 디렉터리 탐색 비활성화 방법

이렇게 설정하면 "PHP"가 포함된 모든 파일이 감지되어 실행이 차단됩니다. 예를 들어 해커가 "maliciousPHPFileDisguisedAsJPEGfile.php.jpg"처럼 이미지 파일로 위장한 PHP 파일을 업로드하더라도 실행이 차단됩니다.

최대한의 보안을 위해 플러그인 폴더와 테마 폴더의 .htaccess 파일에도 동일한 코드를 추가하는 것이 좋습니다.

수동으로 PHP 실행을 비활성화하는 작업은 다소 위험할 수 있습니다. 파일 관리자(File Manager)에서 작업할 때는 각별히 주의해야 하며, 작은 실수 하나가 사이트에 심각한 피해를 초래할 수 있습니다. 따라서 검증된 플러그인을 사용해 PHP 실행을 비활성화하는 것이 더 쉽고 안전한 방법입니다. MalCare 보안 서비스는 사이트 강화(Site Hardening) 기능을 제공하여 사용자가 클릭 몇 번으로 PHP 실행을 차단할 수 있도록 지원합니다.

워드프레스 보안 강화: PHP 실행 및 디렉터리 탐색 비활성화 방법

이 기능을 활성화하려면 FTP 접속 정보가 필요합니다.

워드프레스 보안 강화: PHP 실행 및 디렉터리 탐색 비활성화 방법

PHP 실행을 비활성화하면 사이트 보안이 한층 강화되지만, 여기서 한 걸음 더 나아가 디렉터리 탐색(directory browsing)까지 차단하면 더욱 완벽한 보안을 구축할 수 있습니다.

디렉터리 탐색 차단: 왜 필요하고, 어떻게 할까?

때때로 방문자가 워드프레스 사이트의 디렉터리 목록을 아주 쉽게 열람할 수 있는 경우가 있습니다. 예를 들어 Westworld Fansite 사이트의 방문자는 브라우저 주소창에 "https://westworldfansite.com/wp-includes/"를 입력하는 것만으로 wp-includes 폴더에 담긴 파일 목록을 확인할 수 있습니다.

무해해 보일 수 있지만, 디렉터리 목록은 해커가 사이트 침입에 악용할 수 있는 민감한 정보를 그대로 노출합니다. 따라서 이러한 목록은 반드시 숨겨야 합니다. 모호함을 통한 보안(security by obscurity)은 일반적으로 권장되지 않지만, 가능한 한 많은 정보를 숨기는 것이 유리합니다. 해커가 당신의 사이트에 대해 알수록 공격 가능성은 그만큼 높아집니다.

워드프레스 보안 강화: PHP 실행 및 디렉터리 탐색 비활성화 방법

사이트 보안을 강화하기 위해 우리는 .htaccess 파일에 아래 코드를 추가해 디렉터리 탐색을 비활성화했습니다.

.htaccess 파일을 수정하기 전에 반드시 사이트 백업을 잊지 마세요. 작은 실수 하나가 사이트 전체에 큰 문제를 일으킬 수 있습니다. 백업을 해두면 문제가 발생했을 때 정상 상태로 빠르게 복구할 수 있습니다.

또한 사용자의 탐색을 차단하고 싶은 디렉터리의 .htaccess 파일을 직접 수정해야 합니다. 예를 들어 wp-includes 폴더를 보호하고 싶다면 해당 폴더의 .htaccess 파일에 다음 한 줄을 추가합니다:

Options All –Indexes

코드를 저장한 후 디렉터리 목록 조회를 다시 시도했더니 403 오류 페이지가 표시되며 접근이 차단되었습니다.

워드프레스 보안 강화: PHP 실행 및 디렉터리 탐색 비활성화 방법

마무리하며

PHP 실행 비활성화와 디렉터리 탐색 차단은 웹사이트 보안을 확실히 개선해 주지만, 이것은 워드프레스 사이트를 해킹 시도로부터 지키는 여러 방법 중 하나일 뿐입니다. 그 외에도 보안 플러그인 사용, SSL 인증서 적용, 고유하고 강력한 사용자명과 비밀번호 설정, HTTP 인증 및 2단계 인증(2FA) 도입 등 다양한 보안 조치를 함께 적용하면 더욱 안전한 사이트를 운영할 수 있습니다.