JJANG-JOON
article thumbnail
반응형

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

클라이언트 측

 

클라이언트 측에서 파일 업로드 시 파일 내용을 검사하여 악성 코드를 차단하는 방법이며 클라이언트 컴퓨터에 안티바이러스 프로그램을 설치하여 파일 업로드 전 파일의 내용을 검사하는 방법이다. 이 방법은 클라이언트 측에서 악성 코드가 차단되기 때문에, 웹 서버에 악성 코드가 저장되는 것을 원천적으로 차단할 수 있다.

 

  1. 클라이언트 컴퓨터에 안티바이러스 프로그램을 설치
  2. 안티바이러스 프로그램의 설정에서 파일 업로드 시 검사를 활성화한다.
  3. 파일을 업로드
  4. 안티바이러스 프로그램이 파일의 내용을 검사하여 악성 코드를 발견하면, 업로드를 차단한다.

 

 

 

 

 

 

 

 

서버 측

 

서버 측에서 파일 업로드 시 파일 내용을 검사하여 악성 코드를 차단하는 방법이며 웹 서버에 악성 코드 검사 기능을 추가하여, 파일 업로드 시 파일의 내용을 검사하는 방법이다. 이 방법은 클라이언트 측에 안티바이러스 프로그램이 설치되어 있지 않더라도 악성 코드를 차단할 수 있다.

 

웹 서버에 악성 코드 검사 기능을 추가하려면, 웹 서버의 설정 파일을 수정하거나, 악성 코드 검사 기능이 포함된 웹 서버 응용 프로그램을 설치해야 한다.

 

  • Apache mod_security

Apache 웹 서버에 악성 코드 검사 기능을 추가할 수 있는 모듈이며 악성 코드 패턴 검사와 머신러닝 기반 검사를 모두 지원한다.

  • Nginx ngx_http_modsecurity_module

Nginx 웹 서버에 악성 코드 검사 기능을 추가할 수 있는 모듈이며 Apache mod_security와 유사한 기능을 제공한다.

  • ClamAV

클라이언트 측 안티바이러스 프로그램으로도 사용되는 ClamAV를 웹 서버 측에서 사용할 수 있다. 악성 코드 패턴 검사만 지원한다.

  • VirusTotal

VirusTotal은 다양한 안티바이러스 제품의 데이터베이스를 사용하여 악성 코드를 검사하는 서비스이며 웹 서버 측에서 VirusTotal API를 사용하여 악성 코드를 검사할 수 있다.

  • Google Cloud Armor

Google Cloud Platform에서 제공하는 웹 방화벽 서비스이며 악성 코드 검사 기능을 포함하고 있다.

 

 

  1. 웹 서버에 악성 코드 검사 기능을 추가
  2. 악성 코드 검사 기능의 설정에서 검사 대상 파일의 확장자와 검사 방법을 지정
  3. 파일을 업로드
  4. 악성 코드 검사 기능이 파일의 내용을 검사하여 악성 코드를 발견하면, 업로드를 차단

 

 

 

 

 

 

 

 

 

 

이외에 파일 업로드 대응 방법

 

  1. 파일 형식 검사:
    • 파일의 확장자를 확인하여 허용되는 파일 형식인지 확인하세요. 예를 들어, 이미지 파일을 업로드해야 하는데 확장자가 실행 가능한 스크립트 파일일 경우 경고 또는 차단하세요.
  2. 악성 코드 시그니처 검사:
    • 악성 코드 시그니처 데이터베이스를 사용하여 파일 내부를 검사하고 알려진 악성 코드 패턴을 찾아낸다.
        1. 시그니처 데이터베이스 사용:
          • 악성 코드 시그니처 데이터베이스를 사용하여 이미 알려진 악성 코드 패턴을 보관하고 업데이트하는 것이 중요하므로 이 데이터베이스는 보안 업체나 커뮤니티에서 수집한 악성 코드 시그니처로 구성된다.
        2. 파일 해시 생성:
          • 업로드된 파일의 해시 (예: MD5, SHA-256)를 생성한다. 이것은 파일의 고유한 식별자로 사용되며 파일의 일부 또는 전체에 대한 해시를 계산할 수 있다.
        3. 시그니처 데이터베이스와 비교:
          • 업로드된 파일의 해시를 시그니처 데이터베이스의 해시와 비교한다. 해시가 데이터베이스에 있는 악성 코드 파일의 해시와 일치하는 경우, 파일은 악성으로 식별될 수 있다.( 변종들 탐지 어려움 )
        4. 바이트 단위 비교:
          • 파일 내용을 바이트 단위로 읽어 들여 시그니처 데이터베이스의 악성 코드 패턴과 비교한다. 이 패턴은 악성 코드가 포함된 파일의 특정 부분을 식별하는 데 사용된다.
        5. 정규식을 사용한 검사:
          • 악성 코드 시그니처 검사에는 정규식(Regular Expression)을 사용할 수 있다. 악성 코드 패턴에 대한 정규식을 작성하여 파일 내용과 일치하는지 확인한다.
        6. 다중 엔진 스캐닝:
          • 여러 보안 엔진을 사용하여 파일을 검사하고 다양한 시그니처 데이터베이스를 활용한다. 이렇게 하면 악성 코드를 탐지할 확률이 높아진다.
        7. 엔드포인트 및 네트워크 보호:
          • 악성 코드 시그니처 검사는 업로드된 파일을 검사하는 것뿐 아니라, 엔드포인트 장치 및 네트워크 트래픽도 검사할 수 있어야 한다.
        8. 자동 업데이트:
          • 시그니처 데이터베이스는 주기적으로 업데이트되어야 하며, 새로운 악성 코드 시그니처를 신속하게 적용해야 한다.
  3. 업로드된 파일 실행 방지:
    • 업로드된 파일을 서버에서 직접 실행하지 말아야한다. 예를 들어, 업로드된 스크립트 파일을 실행하지 않도록 주의하도록 한다.
        1. 파일 형식 검사:
          • 먼저 업로드된 파일의 확장자를 확인하여 허용되는 파일 형식인지 확인하고 허용된 파일 형식 외의 파일을 업로드하지 못하도록 필터링해야한다. 예를 들어, 이미지 파일이 필요한 경우, .exe나 .php와 같은 실행 가능한 파일 확장자를 허용하지 않도록 설정해야한다.
        2. 업로드된 파일 이름 변경:
          • 업로드된 파일 이름을 임의의 고유한 이름으로 변경하여 웹 루트 디렉토리 외부에 저장해야한다. 이로써 사용자가 업로드한 파일을 직접 실행하는 가능성을 줄일 수 있다.
        3. 파일의 실행 권한 제거:
          • 업로드된 파일에 실행 권한을 제거하여 해당 파일을 웹 서버나 다른 프로세스가 직접 실행할 수 없도록 설정해야한다.
        4. 파일 내용 검사:
          • 업로드된 파일의 내용을 검사하여 악성 코드나 실행 가능한 스크립트를 찾아내는 것이 중요하다. 앞서 언급한대로 악성 코드 시그니처 검사를 수행하거나, 파일 내용을 정규식 또는 패턴 매칭을 사용하여 검사한다.
        5. MIME 타입 확인:
          • 웹 애플리케이션은 업로드된 파일의 MIME 타입을 확인하여 실제 파일 형식과 일치하는지 확인해야 한다. 이것은 사용자가 임의로 파일 확장자를 변경하더라도 검증을 가능하게 한다.
        6. 파일 업로드 디렉토리 보안:
          • 업로드된 파일을 저장하는 디렉토리에 대한 액세스 권한을 엄격히 제한하고 디렉토리 경로를 웹 루트 디렉토리 밖에 유지해야한다. 이렇게 하면 웹 서버가 파일을 직접 실행할 수 없다.
        7. 업로드된 파일의 메타데이터 검사:
          • 업로드된 파일의 메타데이터를 확인하여 보안 상의 이슈를 감지한다.예를 들어, 악성 코드로부터 추출된 메타데이터가 있는지 확인한다.
        8. 보안 헤더 설정:
          • 웹 서버에서 적절한 보안 헤더를 설정하여 웹 애플리케이션을 크로스 사이트 스크립팅(Cross-Site Scripting, XSS) 및 다른 보안 취약점으로부터 보호한다. ( XSS 보안 헤더는 웹 페이지가 렌더링될 때 XSS 공격을 방지하는 데 도움을 주는데 사용 됨 )
        9. 권한 및 업데이트:
          • 보안 정책 및 파일 업로드 프로세스를 주기적으로 검토하고 업데이트하고 보안 취약점이 발견될 경우, 즉시 대응하고 보안 업데이트를 적용해야한다.
  4. 업로드된 파일 분석:
    • 업로드된 파일을 분석하여 악성 동작을 감지할 수 있는 시스템을 구현해야한다. 예를 들어, 업로드된 스크립트를 격리된 환경에서 실행하여 그 행동을 검사할 수 있다.
      • ->웹 애플리케이션에서 파일 업로드 작업이 발생할 때 이러한 작업에 대한 로그를 생성하고 기록해야한다.
  5. 업로드된 파일 검사 및 정규식:
    • 파일 내용을 검사하기 위해 정규식을 사용하여 악성 코드 패턴을 찾아내야한다. 예를 들어, 악성 스크립트의 특정 문자열 또는 패턴을 찾을 수 있다.
  6. 백신 소프트웨어 사용:
    • 상용 또는 오픈 소스 보안 소프트웨어를 사용하여 업로드된 파일을 검사하고 악성 코드를 탐지하는데 도움을 받을 수 있다.
  7. 업로드된 파일 저장:
    • 업로드된 파일은 신뢰할 수 있는 위치에 저장하고, 서버 및 데이터베이스에서는 파일 경로와 메타데이터만 관리하도록 한다.
  8. 보안 헤더 및 권한 설정:
    • 웹 서버 및 웹 애플리케이션에서 보안 헤더를 설정하고, 파일 업로드 기능에 대한 적절한 권한 및 권한 검사를 구현한다.
  9. 업로드된 파일 모니터링:
    • 업로드된 파일의 로깅 및 감시를 설정하여 악성 활동을 감지하고 대응할 수 있도록 한다.
  10. 업데이트와 교육:
    • 보안 정책 및 파일 업로드 프로세스를 업데이트하고, 직원 및 사용자에 대한 보안 교육을 제공한다.

 

 

 

 


 

 

 

 

 

 

 

 

 

반응형
profile

JJANG-JOON

@JJANG-JOON

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...