소개
대부분의 워드프레스 해킹은 누군가가 당신의 사이트를 노리고 침입하는 것이 아닙니다. 보통은 오래된 플러그인, 취약한 로그인, 또는 방치된 설정과 같은 일반적인 취약점을 찾아 인터넷을 스캔하는 자동화된 봇에 의한 것입니다. 만약 당신의 사이트가 침입하기 쉬워 보인다면, 봇들은 몇 분 안에 공격을 시도할 수 있습니다.
사이트를 보호하기 위해 보안 엔지니어의 전문 기술이 필요한 것은 아닙니다. 서로 잘 어우러지는 몇 가지 기본적인 보안 조치만 있으면 됩니다. 주요 워드프레스 설정을 철저히 잠그고, 서버 규칙을 추가하며, 모든 것을 최신 상태로 유지하세요. 백업과 모니터링은 반드시 수행해야 할 필수 사항으로 삼으세요. 그러면 문제를 조기에 발견하고 빠르게 복구할 수 있으며, 몇 주 뒤에야 피해를 알게 되는 상황을 피할 수 있습니다.
이 가이드는 실용적인 내용을 다룹니다. 먼저 영향력이 큰 기본 사항부터 시작하여, 더 심층적인 보안 강화 단계로 넘어갑니다.
워드프레스 사이트에 대한 일반적인 보안 공격 {#common-security-attacks-on-wordpress-sites}
대부분의 워드프레스 공격은 익숙한 패턴을 따릅니다. 봇은 먼저 일반적인 진입점을 탐색한 다음, 악용하기 가장 쉬운 곳으로 이동합니다.
다음은 실제 워드프레스 사이트에서 마주칠 수 있는 가장 흔한 위험 요소들입니다.
무차별 대입 공격 {#brute-force}
무차별 대입 공격은 자동화하기 쉽고 여전히 효과가 있기 때문에 통합니다. 봇은 하나의 비밀번호를 추측하는 대신, 로그인 페이지에서 분당 수천 개의 사용자 이름과 비밀번호를 시도합니다. 크리덴셜 스터핑은 다른 침해 사고에서 유출된 인증 정보를 사용하기 때문에 훨씬 더 효과적입니다. 유출된 인증 정보가 일치하면 즉시 관리자 권한을 획득하게 됩니다.
이러한 공격이 발생하면 트래픽 급증, 반복적인 리디렉션, 플러그인 또는 서버 인증 로그에 기록된 수많은 로그인 실패 사례를 확인할 수 있습니다. 해킹 사고가 발생하지 않았더라도 CPU 자원을 소모하고 사이트 속도를 저하시키며 로그를 넘쳐나게 만듭니다.
취약한 플러그인과 테마 {#vulnerable-plugins-and-themes}
워드프레스 코어에 문제가 발생하기도 하지만, 대개 진짜 문제는 플러그인과 테마에 있습니다. 공격자들은 버전 확인이 쉽고 악용 코드가 빠르게 확산되기 때문에 이를 표적으로 삼습니다.
효과적인 SEO를 위한 올인원 플랫폼
모든 성공적인 비즈니스의 배후에는 강력한 SEO 캠페인이 있습니다. 하지만 선택할 수 있 는 최적화 도구와 기법이 무수히 많기 때문에 어디서부터 시작해야 할지 알기 어려울 수 있습니다. 이제 걱정하지 마세요. 제가 도와드릴 수 있는 방법이 있으니까요. 효과적인 SEO를 위한 Ranktracker 올인원 플랫폼을 소개합니다.
주의해야 할 징후로는 개발이 중단된 플러그인, 유료 도구의 무료 복제본, 업데이트 지연 등이 있습니다. 이로 인한 영향은 원격 코드 실행부터 데이터베이스 탈취, SEO 스팸 삽입에 이르기까지 다양합니다.
악성코드 삽입 {#malware-injection}
악성 코드는 종종 쓰기 권한이 있거나 간과되기 쉬운 곳에 숨어 있습니다. 이는 wp-content/uploads/에 삽입된 악성 스크립트, 엉망인 PHP 코드로 은밀하게 수정된 플러그인 파일, 또는 템플릿이나 게시물을 통해 확산되도록 데이터베이스에 주입된 코드일 수 있습니다.
전형적인 징후로는 모바일 전용 리디렉션, 정체불명의 관리자 사용자, 이상한 크론 작업, 비정상적인 예약 작업, 외부 요청 급증, 그리고 Search Console 또는 호스팅 업체의 악용 경고 등이 있습니다. 이는 종종 반복적인 감염, 스팸, 그리고 블랙리스트 등재 위험으로 이어집니다.
SEO 스팸 공격 {#seo-spam-attacks}
SEO 스팸은 사람이 항상 눈에 띄는 것은 아닙니다. 공격자는 크롤러만 볼 수 있는 숨겨진 링크, 스팸 페이지 또는 콘텐츠를 추가합니다. 데이터베이스에 스팸을 주입하거나, 승인되지 않은 사이트맵을 추가하거나, .htaccess를 조작하여 봇에게 다른 콘텐츠를 제공할 수도 있습니다.
첫 번째 징후는 대개 검색 결과에서 나타납니다: 이상한 색인 URL과 갑작스러운 트래픽 감소가 그것입니다. 도메인이 스팸 키워드로 순위가 매겨지기 시작하고, 실제 페이지의 노출은 줄어듭니다. 스팸이 데이터베이스 전반에 흩어져 있는 경우가 많아 정리에 더 많은 시간이 소요됩니다.
SQL 인젝션 {#sql-injection}
SQL 인젝션은 플러그인이나 사용자 정의 코드가 안전하지 않은 데이터를 데이터베이스로 전송할 때 발생합니다. 흔한 징후로는 이상한 URL 쿼리 문자열, 방화벽 로그의 SQLi 경고, 갑작스러운 데이터베이스 부하 급증 등이 있습니다. 공격자가 사용자 계정이나 설정을 변경할 경우 데이터 도난, 콘텐츠 변경, 지속적인 접근 권한 획득으로 이어질 수 있습니다.
크로스 사이트 요청 위조(CSRF) {#cross-site-request-forgery}
크로스 사이트 요청 위조(CSRF)는 사용자가 워드프레스에 로그인된 상태에서 플러그인이 적절한 보안 검사를 수행하지 않을 때 발생합니다. 공격자는 사용자를 속여 링크를 클릭하게 함으로써 사용자 생성, 이메일 변경, 설정 업데이트와 같은 작업을 유발할 수 있습니다.
클릭 직후 의도하지 않은 관리자 변경이 발생하는 것은 위험 신호입니다. 공격이 사용자의 세션을 통해 수행되기 때문에 로그상으로는 정상적으로 보일 수 있지만, 권한을 은밀하게 변경하여 시스템 장악으로 이어질 수 있습니다.
크로스 사이트 스크립팅 {#cross-site-scripting}
크로스 사이트 스크립팅(XSS)은 플러그인이나 테마가 사용자 콘텐츠를 사전 검증 없이 표시할 때 발생합니다. 저장형 XSS는 악성 코드가 저장되어 나중에 관리자 영역에서도 실행될 수 있어 더욱 위험하며, 공격자가 설정을 변경하거나 사용자를 추가하거나 플러그인을 설치할 수 있게 합니다.
게시물이나 설정에서 이상한 스크립트가 보이거나, 로그인 전용 리디렉션이 발생하거나, 자신이 변경하지 않은 내용이 나타나는 것을 볼 수 있습니다. 이는 세션 탈취와 데이터베이스에 저장된 지속적인 감염으로 이어질 수 있습니다.
기본 보안 필수 사항 {#baseline-security-essentials}
기본적인 조치부터 시작하여 취약점을 제거하고, 기본적으로 시스템이 해킹당하기 어렵게 만드세요.
안전한 워드프레스 호스팅 선택하기 {#choose-a-secure-wordpress-hosting}
워드프레스를 강화하더라도 호스팅 환경이 취약하면 피해를 입을 수 있습니다. 호스팅은 사이트가 실행되는 환경을 제어하며, 이 환경은 보안에 큰 영향을 미칩니다.
보안 중심 호스팅에는 다음이 포함되어야 합니다.
- 격리 및 안전한 기본 설정
계정 간에 상호 영향을 미칠 수 있는 과밀한 서버에 사이트가 호스팅된다면, 처음부터 추가적인 위험에 노출되는 것입니다. 강력한 계정 격리, 합리적인 파일 권한 설정, 그리고 기본적으로 위험한 서비스를 열어두지 않는 설정을 갖춘 호스팅을 찾으세요.
- 서버 수준 보호
신뢰할 수 있는 호스팅 업체는 방화벽 규칙, 봇 필터링, 보안 패치, 강화된 구성을 처리합니다. 단순히 충분한 안전성을 확보하기 위해 서버에 로그인하여 설정을 직접 조정할 필요가 없어야 합니다.
- 백업 및 빠른 복원
문제가 발생했을 때는 속도가 중요합니다. 자동 백업과 신속한 복구는 비즈니스를 구합니다.
- 가시성
액세스 로그, 오류 로그, 성능 지표는 서비스 중단으로 이어지기 전에 무차별 대입 공격, PHP 문제, 리소스 급증 등을 포착하는 데 도움이 됩니다.
- SSL
SSL 인증서는 로그인 및 세션을 암호화하여 전송 중인 데이터의 기밀성을 보장합니다. 안전한 호스팅은 인증서 설정을 간편하게 하고 만료 문제를 방지하기 위해 자동 갱신을 지원합니다.
효과적인 SEO를 위한 올인원 플랫폼
모든 성공적인 비즈니스의 배후에는 강력한 SEO 캠페인이 있습니다. 하지만 선택할 수 있는 최적화 도구와 기법이 무수히 많기 때문에 어디서부터 시작해야 할지 알기 어려울 수 있습니다. 이제 걱정하지 마세요. 제가 도와드릴 수 있는 방법이 있으니까요. 효과적인 SEO를 위한 Ranktracker 올인원 플랫폼을 소개합니다.
관리형 WordPress 플랫폼에서는 일반적인 위협이 WordPress에 도달하기 전에 차단하기 위한 다양한 보호 장치가 이미 마련되어 있습니다. 예를 들어, Cloudways 관리형 호스팅에는 방화벽, 자동 백업, 선택적 WAF 애드온, SafeUpdates와 같은 플랫폼 수준의 보안 기능이 포함되어 있습니다. 이 경우에도 업데이트와 접근 제어는 여전히 귀하의 책임이지만, 더 안전한 기반에서 시작할 수 있습니다.
Cloudways는 전문가가 지원하는 웹사이트 마이그레이션 서비스도 제공하며, 첫 번째 마이그레이션은 무료로 제공됩니다.
SSL 인증서 설치 {#install-an-ssl-certificate}
웹사이트 URL 옆에 있는 작은 자물쇠 아이콘을 본 적이 있나요? 이는 사이트가 HTTPS를 사용하고 있음을 의미합니다. 이는 방문자에게 사이트 연결이 안전하며 그들의 데이터가 보호받고 있음을 알려줍니다. SSL이 없다면 해커가 로그인 정보나 결제 데이터와 같은 민감한 정보를 가로챌 수 있습니다.
SSL(Secure Sockets Layer)은 웹사이트와 방문자 간의 데이터를 암호화합니다. 이를 통해 트래픽을 보호하여 비밀번호와 고객 데이터가 일반 텍스트로 전송되지 않도록 합니다. 블로그, 온라인 스토어, 포트폴리오 등 어떤 사이트를 운영하든 SSL 인증서 설치는 더 이상 선택 사항이 아니라 필수입니다.
SSL 옵션 선택하기
대부분의 호스팅 제공업체는 몇 번의 클릭만으로 활성화할 수 있는 무료 SSL 옵션을 제공합니다. Cloudways에서는 플랫폼에서 바로 무료 Let’s Encrypt 인증서를 활성화할 수 있습니다.
비즈니스용 인증서나 특정 유효성 검증이 필요한 경우, DigiCert나 Sectigo와 같은 공급업체에서 구매할 수도 있습니다.
CSR 생성
인증서 서명 요청(CSR)은 서버가 인증서 제공업체에 보내는 요청입니다. 일반적으로 호스팅 대시보드 내에서 'CSR 생성' 옵션을 찾을 수 있습니다.
도메인, 조직명, 위치와 같은 기본 정보를 입력한 후 CSR을 생성하세요. 인증서 제공업체는 이를 사용하여 인증서를 발급합니다.
도메인 소유권 확인
인증서가 발급되기 전에 도메인 소유권을 증명해야 합니다. 제공업체에 따라 일반적으로 확인 이메일 수신, DNS 레코드 추가, 또는 작은 확인 파일 업로드 중 하나를 수행해야 합니다. 이 검증이 완료되면 인증서가 발급됩니다.
인증서 설치
호스팅 대시보드에서 인증서를 설치하거나 업로드하세요. 'SSL 관리'나 '보안 설정'과 같은 메뉴를 찾아 안내에 따라 해당 도메인에 인증서를 연결하세요.
HTTPS 강제 적용
SSL 설치가 완료되면 모든 트래픽이 기본적으로 HTTPS로 연결되도록 설정하십시오. 이렇게 하면 방문자가 항상 사이트의 보안 버전에 접속할 수 있습니다.
'Really Simple SSL'과 같은 플러그인을 사용하거나, wp-config.php 파일의 다음 설정을 통해 워드프레스 관리자 대시보드에 HTTPS를 강제 적용할 수 있습니다:
내부 링크 업데이트
사이트의 설정이나 데이터베이스에 여전히 구형 HTTP URL이 참조되어 있다면, 브라우저에서 혼합 콘텐츠 경고가 표시될 수 있습니다. 모든 콘텐츠가 HTTPS를 통해 로드되도록 해당 내부 링크를 업데이트하십시오.
보안 외에도 SSL은 신뢰도를 높이고 SEO에 도움이 됩니다. 이는 방문자에게 귀하가 개인정보 보호를 중요하게 여긴다는 것을 알리는 간단한 업그레이드입니다.
워드프레스, 테마, 플러그인 최신 버전 유지 {#keep-wordpress-themes-and-plugins-updated}
업데이트는 보안입니다. 대부분의 릴리스는 알려진 취약점을 수정합니다. 취약점이 공개되면 봇이 구버전을 사용하는 사이트를 스캔하며, 이 과정에서 감염이 발생합니다.
워드프레스 코어 업데이트
코어 업데이트에는 겉보기에는 사소한 업데이트라도 보안 수정 사항이 포함되는 경우가 많습니다.
워드프레스 코어를 업데이트하려면 다음 단계를 따르세요:
- 워드프레스 관리자 대시보드 → 업데이트로 이동합니다.
- 워드프레스에서 업데이트가 가능한 경우 '지금 업데이트'를 클릭합니다.
- 업데이트가 완료된 후 사이트를 열어 정상적으로 로드되는지, 로그인이 가능한지 확인하세요.
실용적인 업데이트 루틴
- 최소한 마이너 버전에 대해서는 자동 업데이트를 활성화하세요.
- 주요 업데이트 시에는 스테이징 환경을 사용하십시오.
- 패치 및 회귀 테스트를 위해 매월 유지보수 시간을 확보하십시오.
Cloudways와 같은 호스팅 플랫폼을 선택하면, SafeUpdates 기능이 백업 및 스테이징 워크플로를 통해 워드프레스 코어, 플러그인, 테마 업데이트를 예약하고, 변경 사항을 프로덕션 환경에 적용합니다.
테마 업데이트
워드프레스 테마를 업데이트하려면 다음 단계를 따르세요:
- 워드프레스 관리자 대시보드 → 업데이트로 이동하세요.
- 테마 업데이트가 나열되어 있다면, 체크박스를 선택한 다음 '테마 업데이트'를 클릭하세요.
- 업데이트가 완료된 후, 홈페이지, 메뉴 및 주요 페이지가 올바르게 로드되는지 확인하세요.
사용하지 않는 플러그인과 테마 제거
사용하지 않는 플러그인과 테마는 서버에 남아 있습니다. 이를 삭제하여 보안 위험을 줄이고 공격 표면을 축소하세요.
정리 체크리스트:
- 사용하지 않는 플러그인과 테마를 삭제하세요. 비활성화만 하면 파일이 남아 있습니다.
- 양식, 캐싱, SEO 또는 전자상거래와 관련된 플러그인의 경우, 먼저 스테이징 환경에서 제거를 테스트하십시오.
- 활성 테마 하나와 백업용 테마 하나만 남겨두세요.
- 정리 후 로그인, 양식, 결제, 검색 기능이 정상적으로 작동하는지 확인하십시오.
- 매월 설치된 플러그인과 테마를 검토하십시오.
사용하지 않는 워드프레스 플러그인을 삭제하려면 다음 단계를 따르세요:
- 워드프레스 관리자 대시보드에서 플러그인 → 설치된 플러그 인으로 이동하세요.
- 필요하지 않은 플러그인을 찾으세요.
- '비활성화'를 클릭하세요. 그러면 '삭제' 옵션이 나타납니다.
- '삭제'를 클릭하고 메시지가 표시되면 확인하십시오.
다음으로, 사용하지 않는 테마를 삭제하려면 다음 단계를 따르세요:
- 워드프레스 관리자 대시보드에서 '외관 ' → '테마'로 이동하세요.
- 필요 없는 테마를 클릭하세요.
- '삭제'를 클릭하고 메시지가 나타나면 확인하세요.
신뢰할 수 있는 테마와 플러그인을 선택하세요
기능이 훌륭해 보인다고 해서 모든 플러그인이 신뢰할 만한 것은 아닙니다. 꾸준한 최근 업데이트, 명확한 설명서, 활발한 지원, 그리고 최신 워드프레스 버전과의 호환성을 확인하세요.
설치 전 확인 사항:
- 사용이 중단된 플러그인과 테마는 피하십시오.
- 무료화된 플러그인과 테마는 피하십시오.
- 공식 마켓플레이스 외의 다운로드의 경우, 공급자를 신뢰할 수 없는 한 주의하십시오.
- 최근에 업데이트되지 않았거나 현재 사용 중인 WordPress 버전을 명확하게 지원하지 않는 것은 건너뛰세요.
실용적인 보안 운영 {#practical-security-operations}
다음은 일상적인 위험을 줄이고, 봇의 무분별한 접속을 차단하며, 문제를 조기에 발견하는 데 도움이 되는 정기적인 절차입니다.
공격자들은 로그인 페이지가 예측 가능하고 항상 접근 가능하기 때문에 이를 노립니다. 관리자 접속 경로를 철저히 차단하여 봇이 막히게 하고, 도난당한 비밀번호가 즉시 접근 권한으로 이어지지 않도록 하십시오.
2단계 인증 사용 {#use-two-factor-authentication}
2단계 인증은 대부분의 크리덴셜 스터핑 및 자격 증명 재사용을 통한 해킹을 차단합니다. 관리자 계정에 이 기능을 활성화하면 비밀번호가 유출되더라도 로그인이 차단됩니다.
워드프레스 사이트에서 2단계 인증을 활성화하려면 신뢰할 수 있는 2단계 인증 플러그인과 휴대폰용 인증 앱을 선택하세요. 일반적인 2단계 인증 플러그인으로는 miniOrange 2FA, WP 2FA, Wordfence Login Security, Two Factor 등이 있습니다.
2단계 인증 활성화:
- 워드프레스 대시보드에서 플러그인 → 새로 추가로 이동하세요.
- 2FA 플러그인을 검색한 다음, 설치하고 활성화하세요.
- 왼쪽 사이드바에서 플러그인 메뉴를 엽니다(보통 '보안' 아래에 있거나 별도의 항목으로 표시됨).
- '2단계 인증 ' 또는 '2FA'를 찾아 '인증 앱'을 선택하세요.
- 인증 앱에서 QR 코드를 스캔하거나 설정 키를 입력하세요.
- 확인을 위해 일회용 코드를 입력한 다음, '활성화 '를 클릭하세요.
- 복구 코드를 다운로드하여 비밀번호 관리자에 저장하세요.
관리자 역할에 2단계 인증 적용:
- 플러그인 설정을 엽니다(보통 '설정' 또는 '보안' → '2FA' 아래에 있습니다).
- '2FA 필수'를 켭니다.
- 관리자 및 편집자 역할에 대해 이 기능을 적용하고, 전자상거래 스토어를 운영하 는 경우 '쇼핑몰 관리자'를 추가하세요.
- 별도의 기기에서 최소 두 개의 관리자 계정을 등록한 후 변경 사항을 저장하세요.
기본 로그인 URL 변경 {#change-the-default-login-url}
대부분의 워드프레스 사이트는 로그인용 /wp-login.php와 관리자 대시보드용 /wp-admin/과 같은 동일한 기본 URL을 사용합니다. 봇은 이러한 URL을 알고 있으므로 계속해서 시도합니다.
로그인 URL을 변경한다고 해서 집요한 공격자를 막을 수는 없지만, 자동화된 로그인 스팸과 무차별 대입 공격 시도를 줄일 수는 있습니다.
다음 단계에 따라 워드프레스의 기본 로그인 URL을 변경하세요:
- 플러그인 → 새로 추가로 이동합니다.
- 로그인 URL 변경 플러그인을 설치한 다음 활성화하세요.
- 설정 또는 보안에서 플러그인 설정을 엽니다.
- 새로운 로그인 URL 을 설정하고 변경 사항을 저장하세요.
- 로그아웃한 후 시크릿 창에서 새 URL을 테스트하세요.
고유한 관리자 사용자 이름 사용 {#use-a-unique-admin-username}
** **“admin”은 모든 무차별 대입 공격 목록에서 가장 먼저 시도되는 단어입니다. 이 이름을 사용하면 공격자에게 필요한 정보의 절반을 제공하게 됩니다.
워드프레스에서 고유한 관리자 사용자 이름을 사용하려면 다음을 따르세요:
- 사용자 → 새로 추가로 이동합니다.
- 고유한 사용자 이름으로 새 사용자를 생성하세요. 도메인 이름, 브랜드 이름 또는 이메일 접두사를 사용하지 마세요.
- 역할을 '관리자'로 설정한 후 계정을 생성하세요.
- 로그아웃한 후 새 관리자 계정으로 다시 로그인하세요.
- 사용자 → 전체 사용자로 이동합니다.
- 기존 관리자 계정을 찾아 역할을 더 낮은 역할로 변경하거나 삭제하십시오. 계정을 삭제하는 경우, WordPress에서 메시지가 표시되면 해당 콘텐츠를 새 관리자에게 할당하십시오.
로그인 시도 횟수 제한 {#limit-login-attempts}
봇이 무제한으로 비밀번호를 시도하지 못하게 하세요. 몇 번의 실패 후, 해당 IP를 잠시 차단하세요.
먼저 간단한 옵션부터
- Wordfence, Limit Login Attempts Reloaded 또는 Loginizer와 같이 속도 제한을 처리하는 플러그인을 설치하십시오.
