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

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

.htaccess 파일은 아파치(Apache) 웹 서버를 비롯한 수많은 웹 서버에서 지원하는 서버 설정 파일입니다. 겉보기에는 평범해 보이는 이 파일 하나에 다양한 기능이 담겨 있으며, 올바르게 활용하면 웹 서버가 요청을 처리하는 방식 자체를 효과적으로 정의할 수 있습니다.

뿐만 아니라 .htaccess는 해커의 무단 접근으로부터 워드프레스 파일을 보호하는 데에도 매우 유용합니다. 이 글에서는 .htaccess를 활용해 워드프레스 파일과 디렉토리를 보호하는 다양한 방법을 자세히 살펴보겠습니다.

1. .htaccess로 워드프레스 파일과 디렉토리를 보호하는 방법

본격적인 작업에 앞서, 무엇보다 먼저 .htaccess 파일 자체를 보호하는 것부터 시작하겠습니다. 그리고 늘 강조하듯이, 어떤 변경이든(아무리 사소한 것이더라도) 진행하기 전에는 반드시 사이트를 백업하고, 이 경우 로컬 컴퓨터에 .htaccess 파일 사본을 몇 개 저장해 두세요. 실수로 파일을 잘못 건드렸을 때 발생할 수 있는 피해를 최소화하기 위함입니다.

i. .htaccess 파일 보호하기

.htaccess 파일은 웹 루트 폴더인 public_html에서 쉽게 찾을 수 있습니다. 이 파일에 접근하는 방법은 크게 두 가지로, FileZilla 같은 FTP 프로그램을 사용하거나 워드프레스 호스팅 계정의 파일 관리자(File Manager)를 이용하는 것입니다. 여기서는 파일 관리자를 통해 파일에 접속하고 보호하는 방법을 알려드리겠습니다.

1단계: 아이디와 비밀번호로 웹 호스팅 계정에 로그인합니다. 호스팅 계정 정보를 모르겠다면 호스팅 업체의 안내 문서를 참고하세요.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

2단계: 파일 관리자(File Manager)를 클릭합니다.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

3단계: 다음으로 public_html 폴더를 클릭합니다.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

4단계: 폴더 안에서 .htaccess 파일을 찾아 마우스 오른쪽 버튼으로 클릭한 뒤, 편집(edit) 옵션을 선택합니다.

파일에 접속했다면 아래 코드 조각을 추가합니다.

# Deny access to .htaccess

<Files .htaccess>

Order allow,deny

Deny from all

</Files>

이렇게 하면 사용자가 .htaccess 파일에 접근하는 것이 차단됩니다. 간단하지 않나요?

.htaccess 파일을 안전하게 확보했으니, 이제 나머지 파일들도 차례대로 보호해 보겠습니다. 먼저 wp-admin 폴더부터 시작합니다.

ii. .htaccess로 wp-admin 폴더 접근 제한하기

wp-admin 폴더에는 관리자 도구를 구동하는 파일들이 들어 있습니다. 이 폴더의 admin.php 파일은 다음과 같은 역할을 수행합니다.

  • 데이터베이스 연결 활성화
  • 워드프레스 대시보드 표시
  • 사이트 로그인 페이지 제어

위에서 볼 수 있듯이 wp-admin 디렉토리는 매우 중요한 폴더이며, 무단 접근으로부터 철저히 보호해야 합니다. 관리자 패널에 침입한 해커는 웹사이트 전체를 마음대로 조작할 수 있기 때문입니다. 이를 막으려면 .htaccess 파일을 통해 워드프레스 관리자 폴더에 대한 접근을 제한하고, 허용된 특정 IP 주소만 접속할 수 있도록 설정해야 합니다.

이를 위해서는 별도의 .htaccess 파일을 새로 만들어(아래 코드 사용) wp-admin 폴더에 업로드해야 합니다. 새 .htaccess 파일을 만들 때는 텍스트 편집기에서 새 파일을 연 뒤 이름을 .htaccess라고 지정하세요. .htaccess.txt나 .htaccess.doc처럼 확장자가 붙으면 안 되고, 순수하게 .htaccess여야 합니다. 그다음 아래 코드를 붙여 넣습니다.

# Limit logins and admin by IP

<Limit GET POST PUT>

order deny,allow

deny from all

allow from 12.34.56.78

</Limit>

새로 만든 .htaccess 파일을 wp-admin 폴더에 업로드하려면, 웹 호스팅 계정에 로그인한 후 파일 관리자를 엽니다.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

파일 관리자를 클릭하면 사이트의 모든 파일과 폴더가 표시됩니다. 이어서 public_html 폴더를 클릭하세요.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

wp-admin 폴더를 클릭합니다.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

그런 다음 업로드(Upload) 버튼을 클릭합니다.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

방금 로컬 컴퓨터에서 만든 .htaccess 파일을 선택해 열리는 창에 업로드합니다.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

새 .htaccess 파일 업로드가 완료되면 끝입니다! 이제 명시적으로 권한을 부여한 사용자 외에는 누구도 관리자 패널에 접속할 수 없습니다.

참고로 이 설정은 wp-admin 접근만 제한할 뿐, 워드프레스 사이트 자체의 접근을 막는 것은 아닙니다. 등록된 사용자는 여전히 wp-admin에 접속할 수 있지만, 이 역시 사용자 역할(role)별 권한 설정으로 세분화해서 제한할 수 있습니다.

iii. wp-config.php 무단 접근 차단하기

wp-config 파일은 워드프레스의 기본 설정을 담당하며, MySQL 설정값, 시크릿 키, 데이터베이스 연결 정보 등 워드프레스 설치 환경의 민감한 정보가 모두 포함되어 있습니다. 이렇게 중요한 데이터가 담긴 파일인 만큼, 외부의 시선으로부터 반드시 보호해야 합니다.

.htaccess 파일을 활용하면 웹 사용자가 이 중요한 파일에 접근하는 것을 손쉽게 막을 수 있습니다. 앞서 '.htaccess 파일 보호하기' 섹션에서 설명한 방법대로 파일 관리자에서 .htaccess 파일을 연 뒤, 아래 코드를 추가하기만 하면 됩니다.

<files wp-config.php>

order allow,deny

deny from all

</files>

위 코드를 추가하면 wp-config.php에 대한 무단 접근이 차단됩니다.

iv. wp-content/uploads 접근 차단 및 PHP 실행 비활성화 방법

해커들은 해킹이 발각되어 처리된 이후에도 사이트에 다시 침입할 수 있도록 백도어(backdoor)를 남기는 경우가 많습니다. 이러한 백도어 파일은 흔히 wp-includes 또는 wp-content/uploads/ 디렉토리 안에서 워드프레스 파일로 위장하며, 대부분 .php 파일 형태를 띱니다. 워드프레스 파일과 폴더를 더욱 안전하게 지키려면 이런 종류의 파일이 실행되지 않도록 차단해야 합니다. 즉, 해당 디렉토리에서 PHP 실행을 비활성화하면 됩니다.

.htaccess로 PHP 실행을 비활성화하는 과정은 아래 안내를 그대로 따라 하면 매우 간단합니다.

먼저 텍스트 편집기에서 새 .htaccess 파일을 만들고 다음 코드를 추가합니다.

<Files *.php>

deny from all

</Files>

다음으로 웹 호스팅 계정에 로그인해 파일 관리자를 엽니다. 여기서 콘텐츠와 업로드 폴더에 접근할 수 있는데, wp-content/upload/ 폴더를 찾습니다.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

업로드(Upload) 버튼을 클릭해 새로 만든 .htaccess 파일을 업로드합니다.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

업로드 버튼을 누르면 새 창이 열리고, 로컬 컴퓨터에서 .htaccess 파일을 선택할 수 있습니다.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

.htaccess 파일을 wp-content/upload/ 폴더에 업로드했다면, 이번에는 wp-includes 폴더에도 동일하게 추가해야 합니다.

wp-content/upload/ 폴더에 추가했을 때와 마찬가지로, 파일 관리자를 열어 사이트 홈 디렉토리에서 wp-includes 폴더로 이동합니다.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

wp-includes 폴더를 클릭한 후 업로드 버튼을 누릅니다.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

업로드 버튼을 클릭하면 로컬 컴퓨터에서 파일을 선택할 수 있습니다. 방금 만든 .htaccess 파일을 선택해 업로드하세요.

.htaccess 파일로 워드프레스 파일·디렉토리 보호하는 방법 완벽 가이드

이렇게 중요한 두 폴더에 모두 .htaccess를 추가하면, 해당 폴더 안에서는 어떠한 PHP 파일도 실행되지 않습니다.

v. htaccess로 워드프레스 디렉토리 열람(directory browsing) 비활성화하기

디렉토리 열람은 웹사이트에 접속하려 할 때 웹 페이지 대신 파일과 폴더 목록이 표시되는 기능을 말합니다. 예를 들어 www.example.com 사이트에 private이라는 디렉토리가 있다고 가정해 보겠습니다. 이 디렉토리에서 디렉토리 열람이 비활성화되어 있지 않다면, 누군가 주소창에 www.example.com/private/을 입력하는 순간 private 디렉토리 내부의 모든 파일과 폴더가 고스란히 노출됩니다.

이것은 사이트에 재앙이 될 수 있습니다. 해커는 노출된 파일 구조 정보를 바탕으로 정교한 공격 계획을 세울 수 있기 때문입니다. htaccess로 워드프레스의 디렉토리 열람을 비활성화하면 웹사이트에 대한 접근 수준을 효과적으로 낮출 수 있습니다.

특정 디렉토리의 디렉토리 열람을 비활성화하려면, 텍스트 편집기에서 .htaccess 파일을 만들고(추가 확장자 없이 .htaccess로만 저장) 아래 코드를 추가한 뒤 워드프레스 파일 접근을 제한합니다.

# disable directory browsing

Options All -Indexes

코드를 추가한 후, 이 기능을 비활성화하고 싶은 디렉토리에 새로 만든 .htaccess 파일을 업로드합니다. 예를 들어 wp-includes 폴더의 디렉토리 열람을 막고 싶다면, 앞서 설명한 대로 파일 관리자를 통해 해당 .htaccess 파일을 wp-includes 폴더에 업로드하면 됩니다.

vi. 특정 IP 주소의 사이트 접근 차단하기

특정 IP 주소에서 스팸을 반복적으로 보내거나 해킹 시도, 무단 접속 시도를 하는 사용자를 발견한 적이 있을 것입니다. .htaccess 파일을 사용하면 해당 IP 주소가 아예 사이트에 접속하지 못하도록 차단해 워드프레스 무단 접근을 완전히 막을 수 있습니다. 아래 코드를 .htaccess 파일에 복사해 넣으세요.

<Limit GET POST>

order allow,deny

deny from 123.456.78.9

allow from all

</Limit>

위 코드의 IP 주소는 예시일 뿐입니다. 실제 차단하려는 IP 주소로 값을 교체하면 됩니다. 차단할 IP가 하나가 아니라 여러 개라면, 아래와 같은 형식의 줄을 하나씩 추가하면 됩니다.

deny from 213.546.87.9

개별 IP가 아니라 IP 대역 전체를 차단하고 싶다면, 아래와 같이 마지막 옥텟(octet)을 생략하면 됩니다.

deny from 213.546.87

이렇게 하면 213.546.87.0부터 213.546.87.255까지의 모든 IP 주소가 차단됩니다.

실수로 사이트 관리자나 팀원의 IP 주소를 차단했다면, IP 화이트리스트 등록 방법 가이드를 참고해 해제하세요.

vii. 특정 도메인의 사이트 접근 차단하기

스팸을 보내는 IP 주소를 일일이 파악하기 어려운 경우도 있습니다. 하지만 공격이 특정 악성 도메인에 게시된 링크를 통해 이루어진다는 사실은 알고 있을 수 있습니다. .htaccess를 활용하면 이런 유해 사이트의 링크를 통해 유입되는 방문자를 차단할 수 있습니다.

도메인을 차단하려면 아래 코드를 .htaccess 파일에 추가합니다.

SetEnvIfNoCase Referer "badsite.com" bad_referer

Order Allow,Deny

Allow from ALL

Deny from env=bad_referer

위 코드에서 'badsite'를 차단하려는 도메인으로 교체하세요. 이렇게 하면 차단된 도메인에서 사이트로 접속하려는 사용자는 에러 메시지를 받게 되며, 사이트에 접근할 수 없습니다.

2. 대안 솔루션: 보안 플러그인 활용

위에서 소개한 방법들은 워드프레스 파일과 디렉토리 접근을 제한하는 데 효과적이지만, 그만큼 위험도 크다는 점은 부인할 수 없습니다. 그 이유는 바로 매우 중요한 설정 파일을 직접 수정하기 때문입니다. 점 하나만 잘못 찍어도 사이트 전체가 오작동할 수 있습니다. 무섭지 않나요?

따라서 전문가가 아니라면, 직접 파일을 수정하는 대신 워드프레스 보안 플러그인을 사용해 사이트를 강화(hardening)하는 것이 좋습니다. MalCare라는 워드프레스 플러그인은 사이트 보안을 전담해 줍니다. 특정 IP 블랙리스트 등록, 웹사이트 강화 조치 적용, 로그인 페이지 보호, 멀웨어 검사 등 필수 보안 조치를 모두 처리해 줍니다!

완벽한 웹사이트 보안 솔루션이 필요하다면,

MalCare를 무료로 사용해 보세요!