워드프레스 보안 강화하기

참고: 인기 테마인 BE 테마(33%)The 7(35%) 할인 행사를 진행하고 있습니다.

들어가며

워드프레스는 다양한 테마와 플러그인을 사용할 수 있다는 점은 워드프레스의 가장 큰 중점 중 하나입니다. 이렇듯 기능을 확장하고 레이아웃을 향상시키는 이러한 테마와 플러그인은 워드프레스의 보안을 약화시킬 수 있는 원인이 되기도 합니다.

그러므로 가급적 사용하는 플러그인의 개수를 줄이고 새로운 업데이트가 나오면 즉시 업데이트하여 최신 상태를 유지해야 보안 위협으로부터 보호할 수 있습니다.

근래 들어 특히 워드프레스가 멀웨어에 감염되거나 해킹으로 인해 피해를 입은 사례가 부쩍 눈에 띕니다. 얼마 전에 다른 블로그가 호스팅되고 있는 해외 웹호스팅 업체에서 “SiteLock”과 협력하여 보안을 강화했다는 메시지를 보내왔습니다. 그러면서 다음과 같은 사항이 언급되었습니다.

이러한 검사를 통해 알려진 멀웨어를 식별하여 악의적인 것이 감지되면 검색엔진에서 차단(blacklist)되기 전에 조치를 취할 수 있는 시간을 제공하기 위해 즉시 이메일 경고를 고객에게 보내는 단순한 “경보 시스템” 역할을 합니다.

많은 시간과 비용을 들여서 열심히 구축한 사이트가 검색엔진에서 검색이 되지 않게 된다면 정말로 큰 문제가 아닐 수 없습니다. 실제로 Google Blocks Thousands Of WordPress Sites Following Malware Attack(멀웨어 공격 후에 구글에서 수천 개의 워드프레스 사이트 차단)이라는 기사에서처럼 멀웨어 감염에 의해 검색엔진에서 퇴출된다면… 생각만해도 끔찍한 것 같습니다.

워드프레스를 안전하게 운영하기 위해 다음과 같은 몇 가지 사항만 고려해도 많은 도움이 될 것입니다. 참고로 아래 내용은 제가 이 블로그에 산발적으로 올렸던 내용을 종합하면서 몇 가지 사항을 추가했습니다.

사용자 이름에 admin, administrator 사용 금지

스팸 차단 플러그인을 설치하여 확인해보면 스패머들은 admin, administrator 등의 아이디(사용자 이름)로 로그인을 시도합니다. (또, 특이한 것은 demo라는 사용자 이름으로도 자주 시도하더군요.)

오늘날 대부분의 공격은 wp-admin / wp-login에 접속하여 주로 admin이라는 사용자 이름으로 로그인을 시도하는 형태로 이루어진다고 합니다. 실제로 근래에 카페2*에서 호스팅하는 사이트가 멀웨어에 감염되어 며칠 전 데이터와 DB로 복원시키고 비밀번호까지 모두 바꾼 후에 제게 연락을 해와서 살펴보니 관리자 아이디로 admin이 사용되고 있었습니다.

관리자 사용자 이름이  admin인 경우 다음과 같이 관리자 사용자 이름을 바꾸도록 합니다.

  • 새로운 사용자를 추가합니다.
  • 역할을 “관리자“로 지정하고 저장합니다.
  • 로그아웃한 후에 새로 만든 관리자 계정으로 로그인합니다.
  • 이전 관리자 계정(admin)을 삭제합니다.

강력한 비밀번호 사용

강력한 비밀번호를 사용해야 한다는 점은 익히 알고 있기 때문에 별다른 설명이 필요하지 않을 것 같습니다. 복잡하고 길고 독특한(고유한) 비밀번호를 사용하도록 합니다. 남들이 쉽게 짐작할 수 있는 비밀번호를 사용하지 말고 숫자와 대소문자 및 특수기호를 조합하여 만들도록 합니다.

wp-admin 경로 숨기기

관리자 로그인 경로(wp-admin)를 숨기면 보안에 도움이 됩니다. 자세한 내용은 다음 두 글을 참고해보시기 바랍니다.

wp-login 페이지 경로 변경하기

wp-login의 경로를 변경하여 보안을 강화하는 방법이 있습니다. WPS Hide Login이라는 플러그인을 설치하면 Login URL을 변경할 수 있습니다. 자세한 내용은 이 글을 참고해보시기 바랍니다.

로그인 시도 제한

무차별 대입 공격(Brute Force)과 같은 공격은 로그인 폼을 타겟으로 합니다. 그러므로 위에서 언급한 플러그인을 사용하여 로그인 페이지의 경로를 변경하면 이러한 공격을 피하는 데 도움이 됩니다. 또 다른 옵션으로 All In One WP Security & Firewall 플러그인이 있습니다. 이 플러그인은 자체로 매우 강력한 보안 플랫폼입니다. 다수의 바람직한 보안 관행을 실행하는 보안 플러그인을 사용하여 사이트에 추가적인 보안과 방화벽을 추가합니다. (이 플러그인은 바로 위에 설명된 플러그인(예: WPS Hide Login)의 기능을 포함하는 것 같으니 함께 사용하지 않도록 합니다.)

All In One WP Security & Firewall

또는, 이 페이지에서 검색되는 보안 관련 플러그인을 사용해볼 수 있습니다.

wp-config.php 및 .htaccess 숨기기

wp-config.php 파일과 .htaccess 파일에 접근하지 못하도록 .htaccess에 규칙을 추가할 수 있습니다.

.htaccess에 다음 코드를 추가하면 wp-config.php에 접근하지 못하게 됩니다.

<Files wp-config.php>
order allow,deny
deny from all
</Files>

그리고 .htaccess에 다음 코드를 추가하면 .htaccess에 접근하지 못하게 됩니다.

<Files .htaccess>
order allow,deny
deny from all
</Files>

이 작업을 수행하려면 FTP에 접속할 수 있어야 합니다. FTP 사용법은 이 글을 참고해보세요.

참고로 Stop Spammers Spam Prevention 플러그인을 설치하면 wp-config.php에 접근하지 못하도록 차단하는 기능이 포함되어 있습니다.

파일 편집 비활성화

해커가 침입하면 파일을 변경하는 가장 쉬운 방법은 워드프레스 대시보드에서 외모 > 테마 편집기로 이동하여 파일을 수정하는 것입니다. 그러므로 테마 편집기에서 파일을 편집할 수 없도록 설정하면 보안이 향상됩니다. 이를 위해 wp-config.php 파일에 다음 라인을 추가합니다.

define('DISALLOW_FILE_EDIT', true);

이제 FTP를 통해서만 파일을 수정할 수 있고 워드프레스 내에서 자체 파일을 수정할 수 없게 됩니다.

데이터/DB 백업

간혹 해킹 등으로 인해 피해를 입었을 때 백업이 제대로 되어 있지 않아서 사이트 전체를 버리는 경우를 목격하기도 합니다. 업체에서 자동으로 백업해주는 경우에도 주기적으로 내 하드 디스크나  USB에 백업본을 저장하는 것이 좋을 듯 합니다. 드물지만 웹호스팅 업체 서버에 문제가 생겨서 자료를 모두 잃어버리는 경우도 있습니다. 이 경우 업체로부터 보상을 받기란 쉽지가 않을 것입니다. 보통 업체에서 ‘백업 책임은 고객에게 있습니다’라고 명시하고 있습니다. 따라서 소중한 자료는 내가 잘 보관하는 습관을 들여야 하겠습니다.

플러그인으로 인한 보안 취약

워드프레스에서 플러그인은 기능을 확장하고 추가하는 중요한 역할을 하며, 워드프레스의 가장 큰 장점 중 하나입니다. 하지만 그 반대급부로 보안에 안 좋은 영향을 미칠 수 있습니다. 가령 슬라이더 레볼루션(Slider Revolution)은 이름처럼 슬라이더의 혁명이라고 할 만큼 다이내믹한 슬라이더를 만들 수 있는 유용한 툴입니다.

하지만 이 플러그인에서 발견된 보안 취약점 때문에 100,000개의 사이트가 해킹에 영향을 받은 것으로 드러나 큰 문제가 된 적이 있습니다.

이외에도 많은 사용자가 사용하는 Contact Form 7 등에도 보안 문제가 있다고 하네요. (저는 Contact Form 7을 삭제하고 대신 Quform을 사용하고 있습니다.)

가급적 플러그인 사용 개수를 최소화하고 가능한 항상 최신 업데이트를 설치하는 것이 중요합니다. 어떤 플러그인에 보안 문제가 발생하면 즉시 삭제하고 비슷한 기능의 다른 플러그인을 설치하도록 합니다.

마치며

앞에서 언급했듯이 항상 워드프레스, 테마, 플러그인을 최신 상태로 유지하는 것도 보안에 중요합니다. 그리고 사용자 로그인 기능이 없다면 특정 IP에서만 로그인이 가능하도록 설정하는 것도 가능합니다. 일반인들이 로그인 페이지에 접속하지 못하도록 wp-login.php 페이지 자체에 접근을 차단하려면 다음과 같은 코드를 .htaccess 파일에 추가하도록 합니다.

<Files wp-login.php>
Order Deny,Allow
Deny from All
Allow from xxx.xxx.xx.xxx
</Files>

여기서 xxx.xxx.xx.xxx 부분에 허용할 IP 주소를 입력하면 됩니다.

워드프레스 보안과 관련하여 염려가 많이 되는 경우 이 글에 소개된 Hide My WP 플러그인을 사용할 수 있습니다. 이 플러그인은 유료 플러그인임에도 불구하고 베스트 셀링 목록에 올라와 있어 사람들의 보안에 대한 관심을 엿볼 수 있는 것 같습니다.

Hide My WP - Amazing Security Plugin for WordPress

이외에도 웹호스팅을 선택할 때에도 무조건 저렴한 상품을 선택하기보다는 어떤 보안 조치가 적용되고 있는지를 따져보는 것도 바람직할 것입니다. 보안에 대해 보다 심화된 정보를 원하시면 이 글이 도움이 될 것입니다.

추가: 워드프레스 테이블 Prefix가 기본 설정인 wp_인 경우 반드시 다른 접두사로 변경해야 안전합니다. 자세한 내용은 “Prefix를 변경하여 보안 강화하기” 글을 참고하여 기본 테이블 Prefix를 변경하시기 바랍니다.



기부를 통해 이 블로그를 후원하실 수 있습니다.
워드프레스 설치/제작/문제해결이 필요한 경우 서비스(유료)를 요청해주세요.