보안

사이트가 해킹된 경우 해야 할 일

A compromised website needs three things in order: contain it, find out how they got in, then rebuild it clean. Doing those out of order is how sites get reinfected within a day.

손상된 웹사이트를 복구하려면 세 가지를 순서대로 해야 합니다: 먼저 차단하고, 침입 방식을 파악한 후, 깨끗하게 재구성하는 것입니다. 순서를 바꾸면 일주일 안에 다시 감염될 수 있습니다.

이 페이지를 처음부터 끝까지 따라가세요. 공격이 어떻게 발생했는지에 대한 가정은 없습니다.

의심되는 파일을 단순히 삭제하고 계속 진행하지 마세요. 거의 모든 침해는 한 가지 이상의 다시 들어갈 수 있는 방법을 남깁니다: 두 번째 백도어, 불법 관리자 계정, 예약된 작업, 또는 수정된 핵심 파일. 보이는 증상을 제거하고 그것으로 멈추는 것이 같은 주 안에 사이트가 다시 공격받는 가장 흔한 이유입니다.

실제로 손상되었는지 확인하는 방법

  • 검색 결과에 작성하지 않은 의약품, 도박, 또는 외국어 페이지가 표시됩니다.
  • 방문자가 다른 곳으로 리디렉션되며, 종종 모바일에서만 또는 검색 엔진에서만 발생합니다.
  • 브라우저 또는 검색 엔진이 도메인에 대한 경고를 표시합니다.
  • 설명할 수 없는 이름이나 수정 날짜가 있는 파일이 나타납니다.
  • 사이트가 스팸을 보내거나 도메인이 메일 제공자에 의해 거부되기 시작합니다.
  • 아무도 만들지 않은 관리자 계정이 존재합니다.

이 중 하나라고 해서 반드시 해킹을 의미하지는 않습니다. 단순히 느리거나 오류를 표시하는 사이트는 플러그인 충돌이나 리소스 제한인 경우가 많습니다. 이 정도만 해당되면 먼저 Website Not Loading을 확인하세요.

단계 1: 차단하기

조사하기 전에 사이트를 오프라인으로 전환하세요. 공개 상태로 유지되는 매 순간이 평판, 검색 순위, 방문자에게 더 많은 피해를 입힙니다.

아무것도 삭제하지 않고 가장 빠르게 수행하는 방법은 암호 보호로, 웹 서버 수준에서 전체 사이트 앞에 로그인을 배치합니다:

  1. Websites로 이동하여 사이트를 엽니다.
  2. Password protect 탭을 엽니다.
  3. 활성화하고 사용자 이름과 암호를 설정합니다.

이제 사이트는 공격자를 포함한 모든 방문자에게 로그인 프롬프트를 반환하는 동안 패널, SFTP, SSH를 통해 전체 액세스를 유지할 수 있습니다.

KPanel의 사이트 Security 탭을 보여주는 스크린샷으로 맬웨어 스캔, IP 차단 목록 및 보호 기능이 표시되어 있습니다

공격자의 IP 주소를 알고 있으면 사이트의 Security 탭에 있는 IP block list에도 추가하세요.

사이트를 삭제하거나 아직 아무것도 복원하지 마세요. 현재 상태는 공격이 어떻게 작동했는지에 대한 유일한 증거입니다. 지금 손상된 사이트의 백업을 가져가고, 감염된 것으로 명확하게 표시하고, 따로 보관하세요. 필요할 수 있습니다.

단계 2: 침입 방식 파악하기

현실적인 답변은 몇 가지뿐이며, 각각은 다음에 수행할 작업을 변경합니다.

패널 감사 로그를 확인하세요. Settings로 이동한 후 Account로 이동한 다음 View log를 선택합니다. 팀의 누구도 사용하지 않는 IP 주소로 인한 작업은 Kapsule 계정 자체에 도달했음을 의미합니다. 이것은 훨씬 더 큰 사건입니다: Account Security를 참조하고 계정도 손상된 것으로 취급하세요. 사이트의 Activity 탭은 패널을 통해 수행된 변경 사항을 다룹니다.

사이트의 Logs 탭에서 오류 및 액세스 로그를 확인하세요. 단일 플러그인 경로에 대한 반복된 요청이나 업로드 엔드포인트로의 POST 폭발은 보통 방식의 이름을 나타냅니다. Reading Error Logs를 참조하세요.

사이트의 Security 탭에서 맬웨어 스캔을 실행하세요. 결과를 읽는 방법은 Scanning For and Removing Malware를 참조하세요.

만료된 것이 무엇인지 확인하세요. 만료된 플러그인, 테마 또는 핵심 버전이 가장 흔한 진입점입니다. Keeping WordPress Updated를 참조하세요.

단계 3: 깨끗하게 재구성하기

깨끗한 사이트로 끝내는 방법은 두 가지가 있으며, 그 중 하나만 신뢰할 수 있습니다.

신뢰할 수 있는 방법: 침해 전에 가져온 백업에서 복원하기

로그에서 침해가 언제쯤 시작되었는지 대략 파악한 후 그 날짜보다 편하게 전에 가져온 백업에서 복원합니다.

  1. 사이트의 Backups 탭으로 이동합니다.
  2. 감염 전 백업을 선택합니다.
  3. staging first로 복원합니다. 복원 대화상자는 의도적으로 staging을 기본값으로 설정합니다.
  4. staging 복사본을 확인합니다: 알 수 없는 파일 없음, 알 수 없는 관리자 사용자 없음, 리디렉션 없음.
  5. 만족하면 라이브로 복원합니다. 라이브로 복원하려면 도메인 이름을 입력하여 확인해야 합니다.

파일과 데이터베이스를 별도로 복원하는 방법을 포함한 자세한 내용은 Restoring From a Backup을 참조하세요.

관리형 데이터베이스가 있는 WordPress 및 WooCommerce 사이트의 경우, 사이트의 PITR 탭에서 지정 시간 복구는 마지막 야간 백업이 아닌 특정 분으로 데이터베이스를 복원할 수 있습니다. 그렇지 않으면 하루의 주문을 잃을 수 있을 때 중요합니다.

복원은 그 백업 이후에 생성된 정당한 콘텐츠와 주문을 포함하여 모든 것을 되돌립니다. 복원하기 전에 현재 사이트에서 유지해야 할 데이터를 내보내고, 손상된 사이트에서 내보낸 콘텐츠 자체가 주입된 코드를 가질 수 있음을 주의하세요. 가져오기 전에 검토하세요.

신뢰할 수 없는 방법: 제자리에서 청소하기

깨끗한 백업이 없다면 사이트를 수동으로 청소해야 합니다. 이것이 얼마나 철저해야 하는지에 대해 자신에게 정직하세요.

  • 맬웨어 스캔이 표시하는 모든 파일을 격리합니다. Scanning For and Removing Malware를 참조하세요.
  • WordPress 핵심, 모든 플러그인 및 모든 테마를 제자리에서 업데이트하는 대신 소스에서 새 사본으로 바꿉니다.
  • 적극적으로 사용하지 않는 플러그인이나 테마를 삭제합니다. 비활성 코드는 도달 가능할 때 여전히 실행됩니다.
  • 스캐너가 다루지 않는 파일을 검사합니다: .htaccess, wp-config.php, 그리고 이미지가 아닌 uploads 폴더의 모든 것.
  • 사이트의 Cron jobs 탭에서 생성하지 않은 작업에 대해 예약된 작업을 확인합니다.
  • 특히 옵션 및 게시물 콘텐츠에서 주입된 콘텐츠에 대해 데이터베이스를 확인합니다.

단계 4: 모든 자격 증명 변경하기

사이트가 도달할 수 있었던 모든 것이 탈취되었다고 가정하세요.

  • WordPress 관리자 암호. 사이트의 WordPress 탭에서 모든 것을 재설정하고, 모든 사용자가 로그아웃하도록 강제하여 탈취된 세션 쿠키가 더 이상 작동하지 않도록 하고, 생성하지 않은 애플리케이션 암호를 삭제합니다. Resetting a WordPress Password를 참조하세요.
  • 알 수 없는 관리자 계정. 이들을 삭제하고, 관리자 권한이 필요하지 않은 모든 계정을 강등합니다.
  • 데이터베이스 자격 증명, 사이트의 Database 탭에서.
  • SFTP 계정 사이트의 SFTP 탭에서. 하나를 삭제하면 열려 있는 세션이 종료됩니다.
  • SSH 키 사이트의 SSH access 탭에서. 인식하지 못한 모든 키를 제거합니다.
  • Kapsule 암호, 그리고 생성하지 않은 API 키를 취소합니다. API Keys and Developer Access를 참조하세요.

단계 5: 다시 가져오고 강화하기

사이트가 깨끗하다고 확신하면 암호 보호를 끄고 세상을 다시 들어오게 하세요.

그다음 열려 있던 문을 닫으세요:

  • 모든 것을 업데이트된 상태로 유지하세요. Keeping WordPress UpdatedManaging Plugins를 참조하세요.
  • 사이트의 Security 탭에서 보안 보호를 활성화합니다: 무차별 대입 보호, 국가 필터링, IP 차단 목록.
  • Kapsule 계정과 사이트의 자체 관리자 계정에서 2단계 인증을 활성화합니다.
  • 알려진 좋은 사이트의 새 백업을 가져가세요. Taking a Backup를 참조하세요.
  • 확장된 백업 보존을 고려하세요, 따라서 몇 주 동안 알아차리지 못한 침해도 여전히 복구 가능합니다.

지원팀에 연락해야 할 때

다음 중 하나라도 해당되면 Open a support ticket을 하세요:

  • 침해가 사이트가 아닌 Kapsule 계정을 통해 발생했습니다.
  • 사이트가 스팸을 보내거나 발신 평판이 영향을 받았습니다.
  • 사용 가능한 백업이 없고 사이트를 깨끗하게 유지할 수 없습니다.
  • 계정 또는 사이트가 일시 중지되었습니다. Why Your Account Was Suspended를 참조하세요.
  • 다른 고객의 사이트가 당신의 사이트를 공격하고 있다고 생각합니다. Reporting Abuse를 참조하세요.

발견한 내용, 처음 알아챈 시기, 이미 변경한 내용을 포함하세요. 자체 조사에서 공유할 수 있는 내용이 많을수록 답변이 더 빠릅니다.

문제 해결

검색 엔진이 여전히 사이트에 대해 경고합니다. 사이트가 정말 깨끗해지면 자신의 웹마스터 도구를 통해 검토를 요청하세요. 이것은 우리의 통제 범위를 벗어납니다.

청소 후 다시 나타났습니다. 백도어를 놓쳤거나, 변경하지 않은 자격 증명이 여전히 유효합니다. 대신 깨끗한 백업에서 복원하고 단계 4의 모든 자격 증명을 변경하세요.

스캔에서는 깨끗하다고 하지만 사이트는 명백히 손상되었습니다. 파일 스캔은 알려진 악성 코드를 포함하지만 주입된 데이터베이스 레코드는 포함하지 않습니다. 백업과 비교하고 데이터베이스를 확인하세요.

고칠 수 없게 들어갈 수 없습니다. 애플리케이션의 자체 로그인이 아닌 SFTP 또는 SSH를 사용하세요. 공격자가 변경했을 수 있습니다. SFTP AccessFile Manager를 참조하세요.

여전히 도움이 필요하신가요?

다음 주소로 이메일을 보내주세요 support@kapsulehost.com 또는 KPanel에서 채팅을 시작하세요.

KPanel 열기
사이트가 해킹된 경우 해야 할 일