워드프레스 해킹 당했을 때 복구 및 방어 방법
워드프레스는 전 세계에서 가장 많이 쓰이는 홈페이지 제작 도구입니다. 하지만 이렇게 널리 쓰이다 보니 해커들의 주요 타겟이 되어 매년 수많은 해킹 피해가 발생하고 있습니다.
실제로 제가 운영하던 워드프레스 사이트도 한번 해킹을 당한 적이 있었는데, 사이트가 완전히 망가지고 복구하는데 며칠이나 걸렸습니다. 이런 피해를 예방하기 위해서는 복구와 방어 방법을 반드시 알아둬야 합니다.

워드프레스 해킹 인지 및 초기 대응
해킹 징후 감지
웹사이트에 다음과 같은 이상 징후가 나타난다면, 워드프레스 해킹을 의심해봐야 합니다. 마치 감기에 걸렸을 때 몸이 으슬으슬 춥고 열이 나는 것처럼, 웹사이트도 해킹당하면 분명 이상 신호를 보냅니다.
- 웹사이트 콘텐츠 변조: 웹사이트 내용이 멋대로 바뀌거나, 이상한 코드가 삽입된 경우. 예를 들어, 평소와 다른 광고 배너가 나타나거나, 웹사이트 디자인이 엉망으로 바뀌는 경우를 들 수 있습니다.
- 관리자 계정 탈취: 관리자 계정으로 로그인이 안 되거나, 처음 보는 관리자 계정이 추가된 경우. 이는 마치 집 열쇠를 도둑맞은 것과 같습니다.
- 악성코드 감염 경고: 웹사이트 방문자들에게 악성코드 감염 경고가 뜨는 경우. 사용자들이 웹사이트에 접속하는 것을 꺼리게 됩니다.
- 트래픽 급증 또는 급감: 웹사이트 트래픽이 갑자기 엄청나게 늘거나, 반대로 뚝 떨어지는 경우. 정상적인 활동으로는 설명하기 어렵습니다.
- 서버 자원 과다 사용: 서버 CPU 사용량이나 트래픽이 평소보다 훨씬 많이 늘어난 경우. 웹사이트가 해커에게 악용되고 있을 가능성이 높습니다.
- 스팸 메일 발송: 웹사이트를 통해 스팸 메일이 발송되는 경우. 웹사이트의 평판이 나빠질 수 있습니다.
- Google 검색 결과 이상: 구글 검색 결과에 웹사이트가 악성코드를 배포하는 사이트로 표시되는 경우. 검색 엔진에서 웹사이트가 차단될 수도 있습니다.
초기 대응 절차
해킹 징후를 발견했다면, 당황하지 말고 침착하게 다음 절차를 따라 대응해야 합니다. 마치 응급 환자를 발견했을 때 신속하게 대처하는 것처럼, 초기 대응이 중요합니다.
- 웹사이트 접속 차단: 더 큰 피해를 막기 위해 웹사이트 접속을 일시적으로 차단합니다. .htaccess 파일을 수정하거나, 방화벽 설정을 변경하여 외부 접속을 막을 수 있습니다. 클라우드 서버를 사용한다면, 보안 그룹 설정을 통해 특정 IP 주소만 접속하도록 제한하는 것이 좋습니다.
- 백업 파일 확보: 해킹이 발생하기 직전의 백업 파일을 찾아 확보합니다. 백업 파일은 웹사이트를 이전 상태로 되돌리는 데 매우 중요합니다. 마치 보험처럼, 백업 파일은 만약의 사태에 대비하는 든든한 존재입니다.
- 해킹 원인 분석: 웹 서버 로그, 데이터베이스 로그 등을 분석하여 해킹이 어떻게 발생했는지 원인을 파악합니다. 원인을 알아야 재발을 방지할 수 있습니다. 탐정처럼 꼼꼼하게 조사해야 합니다.
- 관계 기관 신고: 개인 정보 유출과 같이 심각한 피해가 발생했다면, 한국인터넷진흥원(KISA) 등 관련 기관에 즉시 신고합니다. 법적인 조치가 필요할 수도 있습니다.
워드프레스 해킹 복구 방법
백업 복원
가장 확실하고 빠른 복구 방법은 백업 파일을 이용해 웹사이트를 이전 상태로 되돌리는 것입니다. 마치 타임머신을 타고 과거로 돌아가는 것과 같습니다.
- 백업 파일 준비: 미리 준비해둔 백업 파일(데이터베이스, 웹사이트 파일)을 준비합니다. 백업 파일이 없다면, 다음 방법을 시도해야 합니다.
- 워드프레스 재설치: 웹 호스팅 서버에 워드프레스를 새로 설치합니다. 깨끗한 도화지 위에 다시 그림을 그리는 것과 같습니다.
- 백업 파일 복원: 준비된 백업 파일을 사용하여 데이터베이스와 웹사이트 파일을 복원합니다. 백업 시점에 따라 웹사이트 내용이 다를 수 있습니다.
- 정상 작동 확인: 웹사이트가 제대로 작동하는지 꼼꼼하게 확인합니다. 모든 페이지를 방문해보고, 기능이 제대로 작동하는지 테스트해야 합니다.
수동 복구
백업 파일이 없거나, 백업 파일이 손상된 경우에는 어쩔 수 없이 직접 웹사이트를 수정하여 복구해야 합니다. 마치 의사가 수술을 통해 환자를 치료하는 것처럼, 꼼꼼하고 정확한 작업이 필요합니다.
- 악성 코드 제거: 웹사이트 파일과 데이터베이스에서 악성 코드를 찾아 제거합니다. WinMerge와 같은 파일 비교 도구를 사용하면 변경된 파일을 쉽게 찾을 수 있습니다. 특히
wp-includes폴더 안의general-template.php파일이 자주 변조되므로 주의 깊게 살펴봐야 합니다. 마치 집 안 구석구석 숨어있는 먼지를 청소하는 것처럼 꼼꼼하게 작업해야 합니다. - .htaccess 파일 점검: .htaccess 파일이 변조되었는지 확인하고, 변조된 경우 정상적인 내용으로 복구하거나 삭제합니다. .htaccess 파일은 웹 서버 설정을 변경하는 파일이므로, 잘못 수정하면 웹사이트에 심각한 문제가 발생할 수 있습니다.
- 워드프레스, 테마, 플러그인 최신 버전 업데이트: 워드프레스, 테마, 플러그인을 최신 버전으로 업데이트합니다. 최신 버전에는 보안 패치가 포함되어 있어 해킹 위험을 줄일 수 있습니다. 마치 자동차를 정기적으로 점검하는 것과 같습니다.
- 비밀번호 변경: 워드프레스 관리자 계정, 데이터베이스 계정, FTP 계정 등의 비밀번호를 복잡하고 강력한 비밀번호로 변경합니다. 모든 사용자의 비밀번호를 재설정하는 것이 좋습니다. 마치 집 현관문의 비밀번호를 바꾸는 것처럼 중요한 작업입니다.
- 보안 플러그인 설치: 웹사이트 보안을 강화하기 위해 보안 플러그인을 설치합니다. 방화벽, 악성코드 검사, 로그인 보안 강화 등 다양한 기능을 제공하는 플러그인을 활용할 수 있습니다.
데이터베이스 복구
데이터베이스가 손상된 경우, 다음 방법을 통해 복구를 시도할 수 있습니다. 마치 망가진 뼈를 다시 맞추는 것처럼, 신중하게 접근해야 합니다.
- 데이터베이스 백업 복원: 데이터베이스 백업 파일이 있다면, 백업 파일을 복원합니다.
- wp-config.php 파일 확인: wp-config.php 파일에 데이터베이스 연결 정보가 정확하게 입력되어 있는지 확인합니다. wp-config.php 파일은 워드프레스와 데이터베이스를 연결하는 중요한 파일입니다.
- 데이터베이스 복구 스크립트 실행: 워드프레스 데이터베이스 복구 스크립트(
wp-repair.php)를 실행하여 데이터베이스를 복구합니다.wp-config.php파일에define('WP_ALLOW_REPAIR', true);코드를 추가합니다.http://yourdomain.com/wp-admin/maint/repair.php주소로 접속하여 데이터베이스를 복구합니다.- 복구가 완료되면
define('WP_ALLOW_REPAIR', true);코드를 삭제합니다.
- phpMyAdmin을 이용한 복구: phpMyAdmin과 같은 데이터베이스 관리 도구를 사용하여 테이블을 복구합니다. phpMyAdmin은 데이터베이스를 관리하는 데 유용한 도구입니다.
워드프레스 해킹 방어 방법
기본 보안 수칙 준수
가장 기본적인 보안 수칙을 지키는 것만으로도 대부분의 해킹 시도를 막을 수 있습니다. 마치 건강한 식습관과 규칙적인 운동이 건강을 지켜주는 것처럼, 기본적인 보안 수칙은 웹사이트를 안전하게 지켜줍니다.
- 최신 버전 유지: 워드프레스, 테마, 플러그인을 항상 최신 버전으로 유지합니다. 업데이트에는 보안 취약점에 대한 패치가 포함되어 있습니다.
- 강력한 비밀번호 사용: 워드프레스 관리자 계정, 데이터베이스 계정, FTP 계정 등에 복잡하고 강력한 비밀번호를 사용합니다. 비밀번호는 최소 12자 이상, 영문, 숫자, 특수문자를 조합하여 만드는 것이 좋습니다.
- 불필요한 플러그인 제거: 사용하지 않는 플러그인은 제거하여 해킹 경로를 줄입니다. 플러그인은 많을수록 보안에 취약해질 수 있습니다.
- 정기적인 백업: 웹사이트 파일과 데이터베이스를 정기적으로 백업합니다. 백업은 만약의 사태에 대비하는 가장 확실한 방법입니다.
- 신뢰할 수 있는 테마 및 플러그인 사용: 공식 저장소에서 다운로드하거나, 평판이 좋은 개발자의 테마 및 플러그인을 사용합니다. 출처가 불분명한 테마나 플러그인은 악성코드를 포함하고 있을 수 있습니다.
보안 플러그인 활용
보안 플러그인을 사용하면 웹사이트 보안을 더욱 강화할 수 있습니다. 마치 집에 경비 시스템을 설치하는 것과 같습니다.
- Wordfence Security: 악성코드 검사, 방화벽, 로그인 보안 등 다양한 기능을 제공하는 종합 보안 플러그인입니다.
- Sucuri Security: 웹사이트 모니터링, 악성코드 제거, 방화벽 기능을 제공하는 보안 플러그인입니다.
- iThemes Security: 로그인 보안 강화, 파일 변경 감지, 404 오류 모니터링 등 다양한 기능을 제공하는 보안 플러그인입니다.
- All In One WP Security & Firewall: 사용자 계정 보안, 로그인 보안, 데이터베이스 보안, 파일 시스템 보안, 방화벽 기능을 제공하는 플러그인입니다.
고급 보안 설정
더욱 강력한 보안을 위해 다음과 같은 고급 설정을 적용할 수 있습니다. 마치 요새를 짓는 것처럼, 철저하게 방어해야 합니다.
- 2단계 인증(Two-Factor Authentication) 설정: 로그인 시 ID와 비밀번호 외에 추가 인증 단계를 거치도록 설정합니다. 2단계 인증을 사용하면 비밀번호가 유출되더라도 해커가 로그인하기 어렵습니다.
- 로그인 시도 횟수 제한: 로그인 시도 횟수를 제한하여 무차별 대입 공격(Brute Force Attack)을 방지합니다.
- XML-RPC 비활성화: xmlrpc.php는 워드프레스 초기 버전에서 모듈 간 통신에 사용되었지만, 보안 취약점이 있으므로 비활성화하는 것이 좋습니다. Disable XML-RPC 플러그인을 사용하면 간단하게 비활성화할 수 있습니다. 단, Jetpack과 같은 플러그인에서 사용하는 경우, 신중하게 결정해야 합니다.
- 워드프레스 어드민 URL 변경: 기본 어드민 URL(wp-login.php)을 변경하여 해킹 시도를 어렵게 만듭니다. wp-login.php 파일 이름을 변경하고, 파일 내의 모든 관련 부분을 변경된 이름으로 수정합니다.
- 파일 권한 설정: 웹사이트 파일 및 디렉토리의 권한을 적절하게 설정합니다. (일반적으로 파일은 644, 디렉토리는 755 권한) 잘못된 파일 권한 설정은 해킹의 원인이 될 수 있습니다.
- SSL 인증서 설치: SSL 인증서를 설치하여 웹사이트와 사용자 간의 통신을 암호화합니다. SSL 인증서는 웹사이트 주소창에 자물쇠 모양을 표시하여 사용자가 안전하게 웹사이트를 이용할 수 있도록 해줍니다.
- 정기적인 보안 점검: 웹사이트 보안 상태를 정기적으로 점검하고, 취약점을 발견하면 즉시 조치합니다. 마치 건물을 정기적으로 안전 점검하는 것과 같습니다.
웹 방화벽(WAF) 사용
웹 방화벽(WAF)은 웹 애플리케이션을 보호하는 전문적인 보안 솔루션입니다. 마치 도시를 보호하는 성벽과 같습니다.
웹 방화벽(WAF)은 웹 애플리케이션에 특화된 방화벽으로, SQL 삽입, XSS 공격 등 다양한 웹 공격을 차단할 수 있습니다. Cloudflare와 같은 서비스를 사용하여 웹 방화벽을 구축할 수 있습니다.
마무리
워드프레스 해킹은 누구에게나 발생할 수 있는 문제입니다. 하지만 미리 복구 방법을 숙지하고, 철저하게 방어 대책을 세운다면 충분히 예방하고 극복할 수 있습니다.