The #ChromeDevSummit site is live, happening Nov 12-13 in San Francisco, CA
Check it out for details and request an invite. We'll be diving deep into modern web tech & looking ahead to the platform's future.

사이트 치료 및 유지관리

필요 사항:

  • 사이트의 서버(웹, 데이터베이스, 파일)에 대한 셸/터미널 관리자 액세스 권한
  • 셸/터미널 명령에 대한 지식
  • PHP 또는 자바스크립트 등의 코드에 대한 이해
  • 사이트의 백업을 만들기 위한 저장소(파일, 데이터베이스, 이미지 등 포함)

다음 작업:

이 단계에서는 다음 작업을 다룹니다. 

  • 해커가 피싱 페이지 등을 사용하여 사용자 개인정보를 도용하려 한 것으로 보이는 경우 참조할 수 있는 추가 리소스의 위치
  • 해커가 사용자가 볼 수 있는 부적절한 URL을 완전히 새롭게 만들었을 때 이 URL을 Google 검색결과에 표시하고 싶지 않은 경우 Search Console의 URL 삭제를 사용하여 신속하게 삭제
  • 새로운 또는 새로 업데이트된 페이지로서 Google 검색결과에 표시하고 싶은 안전한 페이지를 Google에서 신속하게 처리하도록 하기 위한 Search Console의 Fetch as Google 사용
  • 가장 안전한 최신 소프트웨어 버전 설치
  • 향후 사이트를 더욱 취약하게 만들 수 있는 불필요하거나 사용되지 않는 애플리케이션 또는 플러그인 삭제
  • 양질의 콘텐츠 복원 및 해커의 콘텐츠 제거
  • 해커가 이용한 취약성 근본 원인 해결
  • 모든 비밀번호 변경
  • 사이트를 안전하게 유지하기 위한 계획

1. 피싱 페이지와 같이 기밀 정보 손실을 처리할 때 지원 리소스 찾기

사이트에서 사용자의 기밀 정보가 도용된 경우(예: 피싱 공격의 일부로서) 사이트를 정리하거나 파일을 삭제하기 전에 비즈니스, 규제 또는 법적 책임을 고려해야 합니다. 피싱의 경우, antiphishing.org에서 피싱 공격자에 의해 사이트가 해킹당한 경우 취할 조치 문서와 같은 유용한 리소스를 확인할 수 있습니다.

2. 해커가 생성한 새로운 URL의 신속한 삭제 고려

해커가 사용자에게 표시되는 URL을 새로 만든 경우 Search Console의 URL 삭제 기능을 사용하여 이러한 페이지를 Google 검색결과에서 신속히 삭제할 수 있습니다. 이 단계는 전적으로 선택사항입니다. 페이지를 삭제한 다음 서버가 404 상태 코드를 반환하도록 설정하면 시간이 지남에 따라 페이지가 Google 색인에서 자연스럽게 삭제됩니다.

  • URL 삭제 기능의 사용 여부는 새로 생성된 원치 않는 페이지의 수(페이지가 너무 많으면 삭제 URL에 포함하기 힘들 수 있음) 및 이러한 페이지로 인해 사용자에게 있을 수 있는 잠재적인 피해를 감안하여 결정합니다. 또한 URL 삭제를 통해 제출된 페이지가 검색결과에 표시되지 않도록 하려면 원치 않거나 삭제된 URL이 '404 파일을 찾을 수 없음' 응답을 반환하도록 설정해야 합니다.
  • 이전에 안전한 페이지였으나 해커에 의해 피해를 입은 페이지의 경우, 문제를 해결한 후 검색결과에 다시 표시하고 싶을 수 있으므로 이 도구를 사용하여 이러한 페이지를 삭제하면 안 됩니다. URL 삭제는 검색결과에 다시 표시되는 것을 원하지 않는 페이지인 경우에만 사용합니다.

3. 안전한 페이지에 대한 Google의 신속한 처리 고려

새롭거나 업데이트된 안전한 페이지가 있는 경우 Search Console의 Fetch as Google 기능을 사용하여 페이지를 Google 색인에 제출할 수 있습니다. 이 단계는 전적으로 선택사항입니다. 이 단계를 건너뛰면 새롭거나 수정된 페이지가 시간이 지남에 따라 크롤링되고 처리될 수 있습니다.

4. 서버 정리 시작

이제 피해 평가취약성 확인 과정에서 기록한 메모를 바탕으로 사이트의 문제해결을 시작할 차례입니다. 이 단계에서 선택할 다음 경로는 사용할 수 있는 백업 유형에 따라 다릅니다.

  • 안전한 최신 백업
  • 안전하지만 오래된 백업
  • 백업을 사용할 수 없음   

먼저 이 백업이 사이트가 해킹되기 전에 만들어졌는지 확인합니다.

  • 안전한 최신 백업
    1. 백업을 복원합니다.
    2. 사용 가능한 모든 소프트웨어 업그레이드, 업데이트 또는 패치를 설치합니다. 서버를 관리하는 경우 운영체제용 소프트웨어(예: 콘텐츠 관리 시스템, 전자상거래 플랫폼, 플러그인, 템플릿 등)가 여기에 포함됩니다.
    3. 위젯, 플러그인 또는 애플리케이션 등 사이트에서 더 이상 사용하지 않는 소프트웨어를 서버에서 삭제할 수 있는지 고려합니다.
    4. 취약성을 해결합니다.
    5. 피해 평가를 수행하면서 발견했던 모든 문제가 해결되었는지 확인합니다.
    6. 사이트와 관련된 모든 계정(예: FTP 액세스, 데이터베이스 액세스, 시스템 관리자, CMS 계정용 로그인)의 비밀번호를 한 번 더 변경합니다. Unix 기반 시스템의 경우 다음 명령을 실행합니다.
      $passwd admin1
  • 안전하지만 오래된 백업
    1. 아직 감염된 상태라고 해도 현재 사이트의 디스크 이미지를 만듭니다. 이 사본은 만약을 위한 것입니다. 다른 사본과 구별되도록 '감염됨'으로 표시합니다. Unix 기반 시스템의 경우 다음을 수행하여 디스크 이미지를 만들 수 있습니다.
      $dd if=/dev/sda bs=1024 conv=noerror,sync | gzip -c -9
        > /mirror/full-backup-20120125-infected.gz
    2. 이미지 및 미디어 파일을 포함하여 서버의 백업 파일 시스템 사본을 만듭니다. 데이터베이스가 있는 경우 데이터베이스도 백업합니다.
      $tar -pczf full-backup-20120125-infected.tar.gz www/ $ mysqldump -u root
        -p --all-databases | gzip -9 > fulldb_backup-20120125-infected.sql
    3. 서버에 안전하지만 오래된 백업을 복원합니다.
    4. 위젯, 플러그인 또는 애플리케이션 등 사이트에서 더 이상 사용하지 않는 소프트웨어를 서버에서 삭제할 수 있는지 고려합니다.
    5. 서버를 관리하는 경우 OS를 비롯하여 콘텐츠 관리 시스템, 전자상거래 플랫폼, 플러그인, 템플릿 등 모든 소프트웨어 및 모든 소프트웨어 애플리케이션을 업그레이드합니다. 또한 사용 가능한 보안 업데이트 및 패치를 확인하고 설치해야 합니다.
    6. 취약성을 해결합니다.
    7. 안전한 백업 사본과 감염된 최신 사본 간에 직접 또는 자동화된 방법으로 사이트 diff 명령을 수행합니다.
      $diff -qr www/ backups/full-backup-20120124/
    8. 새로 만들었거나 감염된 사본에서 보존하고 싶은 안전한 콘텐츠를 업그레이드된 서버에 업로드합니다.
      $rsync -avz /backups/full-backup-20120124/www/clean-file.jpg /www/
    9. 피해 평가에서 표시된 각 URL이 수정되었는지 확인합니다.
    10. 사이트와 관련된 모든 계정(예: FTP 액세스, 데이터베이스 액세스, 시스템 관리자 및 CMS 계정용 로그인)의 비밀번호를 한 번 더 변경합니다. Unix 기반 시스템의 경우 다음 명령을 실행합니다.
      $passwd admin1
  • 백업을 사용할 수 없음
    1. 아직 감염된 상태라도 사이트의 백업을 두 개 만듭니다. 추가 백업이 있으면 실수로 삭제한 콘텐츠 복구에 도움이 되며 복구에 실패한 경우 되돌아가 다시 시도할 수 있습니다. 향후에 참조할 수 있도록 각 백업에 '감염됨' 라벨을 지정합니다.
      • 백업 중 하나는 디스크 이미지이거나 사이트의 '복제 버전'입니다. 이러한 형식은 콘텐츠 복원을 더욱 손쉽게 합니다. 응급 시에 대비해서 디스크 이미지를 보관할 수 있습니다. Unix 기반 시스템의 경우 다음을 수행하여 디스크 이미지를 만들 수 있습니다.
        $dd if=/dev/sda bs=1024 conv=noerror,sync | gzip -c -9 >
          /mirror/full-backup-20120125-infected.gz
      • 다른 백업은 이미지 및 미디어 파일을 비롯한 서버의 파일 시스템 사본입니다. 데이터베이스가 있는 경우 데이터베이스도 백업합니다.
        $tar -pczf full-backup-20120125-infected.tar.gz www/
         
        $mysqldump -u root -p --all-databases | gzip -9 > fulldb_backup-20120125-infected.sql
      • 디스크 이미지가 없는 경우 데이터베이스와 파일 시스템을 각각 두 개씩 백업합니다.
    2. 서버 자체가 아닌 새 백업 파일 시스템 사본에서 사이트의 콘텐츠를 치료합니다.
      1. 이전 조사에서 파일 권한이 너무 관대한 것으로 나타났다면 권한을 수정합니다. 이 작업은 서버 자체가 아닌 백업 사본에서 수행해야 합니다.
      2. 또한 백업 사본에서 피해 평가에서 해킹당한 것으로 밝혀진 URL에 해당하는 모든 파일을 치료합니다. 서버 설정 파일, 자바스크립트, HTML, PHP가 여기에 포함될 수 있습니다.
      3. 해커가 만든 새로운 파일도 삭제(404 응답 제공)해야 합니다(Search Console의 URL 삭제 도구를 사용하여 제출했거나 제출하지 않았을 수 있음).
      4. 코드 또는 비밀번호가 유출된 경우 취약성을 해결합니다. 입력 확인 라이브러리 또는 보안 감사가 도움이 될 수 있습니다.
      5. 사이트에 데이터베이스가 있다면 백업에서 해커가 수정한 레코드를 치료합니다. 작업을 완료했다고 판단하기 전에 더 많은 레코드에서 상태 검사를 수행하여 안전해 보이는지 확인합니다.
      6. 사이트와 관련된 모든 계정(예: FTP 액세스, 데이터베이스 액세스, 시스템 관리자, CMS 계정용 로그인)의 비밀번호를 한 번 더 변경합니다. Unix 기반 시스템의 경우 다음 명령을 실행합니다.
        $passwd admin1
      7. 이 시점에서는 이전에 감염되었던 사이트 사본에 안전한 데이터만 포함되어 있어야 합니다. 이 안전한 사본을 잠시 옆에 두고 5번 작업으로 이동합니다.

5. 불필요한 소프트웨어 삭제

위젯, 플러그인, 애플리케이션 등 사이트에서 더 이상 사용하지 않는 소프트웨어를 서버에서 삭제할 수 있는지 고려합니다. 이렇게 하면 보안이 강화되고 향후 유지관리가 간소화됩니다.

6. 모든 서버 치료

  1. 단순히 업그레이드가 아닌 안전한 설치를 수행합니다. 업그레이드하면 이전 버전의 파일이 남을 수 있습니다. 감염된 파일이 서버에 남아 있으면 또 다른 해킹이 발생할 가능성이 높습니다.
    • 서버를 관리하는 경우 새로운 설치에는 OS를 비롯하여 콘텐츠 관리 시스템, 전자상거래 플랫폼, 플러그인, 템플릿 등 모든 소프트웨어 및 애플리케이션이 포함되어 있어야 합니다. 또한 사용 가능한 보안 업데이트 및 패치가 있는지 확인하고 설치해야 합니다.
  2. 안전한 콘텐츠를 안전한 백업 파일 시스템 사본에서 새로 설치한 서버로 이전합니다. 안전한 것으로 알려진 파일/데이터베이스만을 업로드 및 복원합니다. 적절한 파일 권한을 유지하고 새로 설치한 시스템 파일을 덮어쓰지 않도록 해야 합니다.
  3. 사이트와 관련된 모든 계정(예: FTP 액세스용 로그인, 데이터베이스 액세스, 시스템 관리자 및 CMS 계정)의 비밀번호를 한 번만 더 변경합니다. Unix 기반 시스템의 경우 다음 명령을 실행합니다.
    $passwd admin1

7. 장기 유지관리 계획 수립

웹에는 StopBadware의 배드웨어 방지: 기본사항과 같이 강력한 사이트 유지관리를 위한 다양한 정보용 리소스가 있습니다. 또한 다음과 같은 작업을 수행하는 것이 좋습니다.

  • 사이트를 정기적으로 자동 백업합니다.
  • 항상 소프트웨어를 최신 상태로 유지합니다.
  • 모든 애플리케이션, 플러그인, 타사 소프트웨어 등을 서버에 설치하기 전에 보안 관행을 파악합니다. 한 소프트웨어 애플리케이션의 보안 취약성이 전체 사이트의 안전에 영향을 줄 수 있습니다.
  • 강력한 암호 생성을 시행합니다.
  • 운영체제와 브라우저를 업데이트하는 등 시스템에 로그인할 때 사용하는 모든 기기를 안전하게 유지합니다.

8. 문제해결이 완료되었는지 다시 확인

다음 질문에 '예'라고 대답할 수 있어야 합니다.

  • 해커가 사용자의 개인정보를 가져간 경우 올바른 단계를 취했나요? 
  • 사이트에서 최신의 가장 안전한 소프트웨어 버전을 실행하고 있나요? 
  • 향후 사이트를 더욱 취약하게 만들 수 있는 불필요하거나 사용하지 않는 애플리케이션 또는 플러그인을 모두 삭제했나요? 
  • 내 콘텐츠를 복원하고 해커의 콘텐츠를 삭제했나요? 
  • 사이트가 해킹당하는 원인이 되었던 취약성 근본 원인을 해결했나요? 
  • 사이트를 안전하게 유지하기 위한 계획이 있으신가요?

9. 사이트를 다시 온라인 상태로 전환

다음 단계

거의 완료되었습니다. 마지막 단계는 검토 요청입니다.