본문으로 건너뛰기
목차
보안

사이트가 해킹당했을 때 해야 할 일

기계 번역입니다. 영어 원문을 이용할 수 있습니다.

침해된 웹사이트에는 순서대로 세 가지가 필요합니다: 피해를 격리하고, 공격자가 어떻게 들어왔는지 파악한 다음, 깨끗하게 재구축하는 것입니다. 이 순서를 지키지 않으면 사이트가 하루 만에 다시 감염됩니다.

이 페이지를 위에서부터 차례로 따라가세요. 공격이 어떻게 일어났는지에 대해서는 아무것도 가정하지 않습니다.

의심스러운 파일만 삭제하고 그냥 넘어가지 마세요. 거의 모든 침해는 다시 들어올 수 있는 경로를 두 개 이상 남깁니다: 두 번째 백도어, 정체불명의 관리자 계정, 예약된 작업, 또는 변조된 코어 파일 등입니다. 눈에 보이는 증상만 제거하고 거기서 멈추는 것이 같은 주에 사이트가 다시 공격당하는 가장 흔한 이유입니다.

실제로 침해되었다는 신호

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

이 모두가 해킹을 의미하는 것은 아닙니다. 단지 느리거나 오류를 내는 사이트는 플러그인 충돌이나 리소스 한도 때문인 경우가 더 많습니다. 증상이 그것뿐이라면 먼저 웹사이트가 로드되지 않을 때를 참고하세요.

1단계: 격리하기

조사하기 전에 사이트를 오프라인으로 전환하세요. 사이트가 공개된 상태로 있는 매 순간이 여러분의 평판, 검색 순위, 방문자에게 더 큰 피해가 됩니다.

아무것도 삭제하지 않고 이를 가장 빠르게 하는 방법은 비밀번호 보호이며, 웹 서버 수준에서 사이트 전체 앞에 로그인 창을 둡니다:

  1. 웹사이트로 이동하여 사이트를 엽니다.
  2. 비밀번호 보호 탭을 엽니다.
  3. 이를 활성화하고 사용자 이름과 비밀번호를 설정합니다.

이제 사이트는 공격자를 포함한 모든 방문자에게 로그인 창을 표시하며, 여러분은 패널, SFTP, SSH를 통해 계속 전체 접근 권한을 유지합니다.

악성코드 검사, IP 차단 목록, 보호 기능이 표시된 KPanel의 사이트 보안 탭

공격자의 IP 주소를 알고 있다면, 사이트의 보안 탭에 있는 IP 차단 목록에도 추가하세요.

사이트를 삭제하지 말고, 아직 아무것도 복원하지 마세요. 현재 상태는 공격이 어떻게 이루어졌는지 보여 주는 유일한 증거입니다. 지금 침해된 사이트의 백업을 생성하고, 감염된 것임을 분명히 표시한 뒤, 별도의 장소에 보관하세요. 나중에 필요할 수 있습니다.

2단계: 침입 경로 파악하기

현실적인 답은 몇 가지뿐이며, 각각에 따라 다음에 할 일이 달라집니다.

패널 감사 로그를 확인하세요. 설정, 그다음 계정, 그다음 로그 보기로 이동합니다. 팀원 중 아무도 사용하지 않는 IP 주소에서 팀의 이름으로 수행된 작업이 있다면, KapsuleHost 계정 자체가 뚫린 것입니다. 이는 훨씬 더 큰 사고입니다: 계정 보안을 참고하고 계정도 침해된 것으로 간주하세요. 사이트의 활동 탭에서는 패널을 통해 이루어진 변경 사항을 확인할 수 있습니다.

사이트의 로그 탭에서 오류 로그와 접근 로그를 확인하세요. 하나의 플러그인 경로에 대한 반복 요청이나 업로드 엔드포인트로 집중된 POST 요청은 대개 침입 경로를 알려 줍니다. 오류 로그 읽기를 참고하세요.

사이트의 보안 탭에서 악성코드 검사를 실행하세요. 결과를 읽는 방법은 악성코드 검사 및 제거하기를 참고하세요.

무엇이 오래된 버전이었는지 확인하세요. 오래된 플러그인, 테마 또는 코어 버전이 단연코 가장 흔한 침입 경로입니다. WordPress 최신 상태로 유지하기를 참고하세요.

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

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

신뢰할 수 있는 방법: 침해 이전에 생성된 백업에서 복원하기

로그를 통해 침해가 대략 언제 시작되었는지 파악한 다음, 그 날짜보다 충분히 이전에 생성된 백업에서 복원하세요.

  1. 사이트의 백업 페이지로 이동합니다.
  2. 감염 이전의 백업을 선택합니다.
  3. 먼저 스테이징으로 복원합니다. 복원 대화상자는 의도적으로 스테이징이 기본값입니다.
  4. 스테이징 사본을 확인합니다: 알 수 없는 파일, 알 수 없는 관리자 사용자, 리디렉션이 없어야 합니다.
  5. 확인이 끝나면 라이브로 복원합니다. 라이브로 복원하려면 확인을 위해 도메인 이름을 입력해야 합니다.

파일과 데이터베이스를 따로 복원하는 방법을 포함한 자세한 내용은 백업에서 복원하기를 참고하세요.

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

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

신뢰하기 어려운 방법: 현재 상태에서 정리하기

깨끗한 백업이 없다면 사이트를 직접 정리해야 합니다. 얼마나 철저해야 하는지 스스로에게 솔직해지세요.

  • 악성코드 검사에서 표시된 모든 파일을 격리합니다. 악성코드 검사 및 제거하기를 참고하세요.
  • WordPress 코어, 모든 플러그인, 모든 테마를 현재 상태에서 업데이트하는 대신 원본에서 받은 새 사본으로 교체합니다.
  • 실제로 사용하지 않는 플러그인이나 테마는 삭제합니다. 비활성 코드도 접근할 수 있다면 실행됩니다.
  • 스캐너가 다루지 않는 파일을 검사합니다: .htaccess, wp-config.php, 그리고 업로드 폴더에서 이미지가 아닌 모든 파일.
  • 사이트의 Cron 작업 탭에서 직접 만들지 않은 작업이 있는지 확인합니다.
  • 데이터베이스, 특히 옵션과 게시물 콘텐츠에 주입된 내용이 있는지 확인합니다.

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

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

  • WordPress 관리자 비밀번호. 사이트의 WordPress 탭에서 모두 재설정하고, 탈취된 세션 쿠키가 더 이상 작동하지 않도록 모든 사용자를 강제로 로그아웃시키고, 직접 만들지 않은 애플리케이션 비밀번호는 삭제합니다. WordPress 비밀번호 재설정하기를 참고하세요.
  • 알 수 없는 관리자 계정. 삭제하고, 관리자 권한이 필요하지 않은 계정은 권한을 낮춥니다.
  • 데이터베이스 자격 증명은 사이트의 데이터베이스 탭에서 변경합니다.
  • SFTP 계정은 사이트의 SFTP 탭에서 관리합니다. 계정을 삭제하면 열려 있는 세션이 종료됩니다.
  • SSH 키는 사이트의 SSH 접속 탭에서 관리합니다. 알아볼 수 없는 키는 제거합니다.
  • KapsuleHost 비밀번호를 변경하고, 직접 만들지 않은 API 키는 폐기합니다. API 키 및 개발자 접근을 참고하세요.

5단계: 사이트를 복귀시키고 강화하기

사이트가 깨끗하다고 확신하면, 비밀번호 보호를 끄고 다시 공개하세요.

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

  • 모든 것을 최신 상태로 유지하세요. WordPress 최신 상태로 유지하기와 플러그인 관리하기를 참고하세요.
  • 사이트의 보안 탭에서 보안 보호 기능을 켜세요: 무차별 대입 공격 방지, 국가 필터링, IP 차단 목록.
  • KapsuleHost 계정과 사이트 자체의 관리자 계정에 2단계 인증을 활성화하세요.
  • 정상임이 확인된 사이트의 새 백업을 생성하세요. 백업 생성하기를 참고하세요.
  • 몇 주 동안 알아차리지 못한 침해도 복구할 수 있도록 확장 백업 보관을 고려하세요.

지원팀에 도움을 요청해야 하는 경우

다음 중 하나에 해당하면 지원 티켓을 여세요:

  • 침해가 사이트가 아니라 KapsuleHost 계정을 통해 이루어진 경우.
  • 사이트가 스팸을 보내고 있거나, 발송 평판이 영향을 받은 경우.
  • 사용할 수 있는 백업이 없고 사이트를 깨끗하게 만들 수 없는 경우.
  • 계정 또는 사이트가 정지된 경우. 계정이 정지된 이유를 참고하세요.
  • 다른 고객의 사이트가 여러분의 사이트를 공격하고 있다고 판단되는 경우. 악용 사례 신고하기를 참고하세요.

발견한 내용, 처음 알아차린 시점, 이미 변경한 사항을 포함해 주세요. 직접 조사한 내용을 더 많이 공유할수록 더 빠르게 답변을 받을 수 있습니다.

문제 해결

검색 엔진이 여전히 사이트에 대해 경고합니다. 사이트가 실제로 깨끗해지면 해당 검색 엔진의 웹마스터 도구를 통해 검토를 요청하세요. 이는 저희가 제어할 수 없는 영역입니다.

정리한 후에 다시 감염되었습니다. 백도어를 놓쳤거나, 변경하지 않은 자격 증명이 여전히 유효한 것입니다. 대신 깨끗한 백업에서 복원하고, 4단계의 모든 자격 증명을 변경하세요.

검사 결과는 깨끗한데 사이트는 분명히 침해되었습니다. 파일 검사는 알려진 악성 코드를 찾아내지만, 데이터베이스에 주입된 레코드는 찾지 못합니다. 백업과 비교하고 데이터베이스를 확인하세요.

수정하려고 해도 접속할 수 없습니다. 공격자가 변경했을 수 있는 애플리케이션 자체의 로그인 대신 SFTP나 SSH를 사용하세요. SFTP 접속과 파일 관리자를 참고하세요.

도움이 되었나요?

AI이신가요? 이 페이지를 Markdown으로 읽기

관련 문서

보안: 시작하기KapsuleHost가 제공하는 보안 제어, 직접 활성화해야 하는 것들, 그리고 문제가 이미 발생했을 때 해야 할 일. 호스팅 플랫폼의 보안은 공유되어 있습니다.…학대 신고KapsuleHost에서 호스팅되는 무언가가 스팸 발송, 피싱 페이지 호스팅, 악성코드 배포, 저작권 침해 또는 법률 위반에 사용되고 있다면 abuse@kapsulehost.com으로 신고하…Kapsule Protect 개요Kapsule Protect는 사이트를 프로덕션 수준으로 만들어 주는 다섯 가지 추가 제품을 아우르는 이름입니다: 확장 백업, Premium DNS, SSL, Kapsule Care, Pro Services.…피싱 및 사칭호스팅 계정은 가치가 높은 표적이므로, 누군가 비밀번호를 얻으려고 KapsuleHost를 사칭하려 할 것입니다.…

아직 해결되지 않았나요?

고객님의 계정을 잘 아는 Kora에게 물어보시거나 저희 팀에 문의하세요.

문의하기지원팀에 이메일