본문 바로가기
운영체제 (LNX,WIN)

OSQuery & Kolide Fleet 통한 침해 탐지 및 사고 대응

by 날으는물고기 2023. 10. 22.

OSQuery & Kolide Fleet 통한 침해 탐지 및 사고 대응

OSQuery는 오픈 소스의 운영 체제 쿼리 및 모니터링 프레임워크로, 다양한 운영 체제에서 작동하는 SQL 기반 도구입니다.

다음은 OSQuery에 대한 개요와 기본 개념을 제시한 것입니다.

  1. 목적 및 기능:
    • 운영 체제 계측(Metrics): OSQuery는 운영 체제의 다양한 측면을 모니터링하고 측정할 수 있는 쿼리 도구입니다. 이로써 시스템의 성능, 상태, 리소스 사용량 등을 실시간으로 확인할 수 있습니다.
    • 보안 모니터링(Security Monitoring): OSQuery를 사용하여 시스템 로그, 보안 이벤트 및 보안 상태를 모니터링하고 조사할 수 있습니다.
    • 애널리틱스(Analytics): OSQuery를 사용하여 데이터를 검색하고 분석할 수 있으므로, 보안 조사, 문제 해결 및 시스템 관리에 유용합니다.
  2. 지원하는 운영 체제:
    • OSQuery는 다양한 운영 체제에서 작동합니다. 이에는 Linux, macOS, Windows, 그리고 FreeBSD가 포함됩니다.
  3. 사용 방법:
    • OSQuery는 공식 웹사이트(https://osquery.io)에서 다운로드할 수 있습니다.
  4. 설치:
    • Ubuntu 18.04 TLS 서버 머신에 OSQuery를 설치하는 예제가 아래와 같이 주어집니다.
      # OSQuery 레포지토리를 추가합니다.
      sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
      
      # 패키지 목록을 업데이트합니다.
      sudo apt-get update
      
      # OSQuery를 설치합니다.
      sudo apt-get install osquery
      • 필요한 키를 가져오고 레포지토리를 추가합니다.
      • 패키지 업데이트를 실행합니다.
      • OSQuery를 설치합니다.
  5. 실행 모드:
    • OSQuery는 두 가지 주요 실행 모드를 제공합니다.
      • osqueryi: 인터랙티브 셸 모드로, SQL 쿼리를 직접 입력하고 실행할 수 있습니다.
      • osqueryd: 데몬 모드로, 백그라운드에서 실행되며 예약된 작업 또는 주기적 쿼리 실행에 사용됩니다.
  6. 쿼리 실행:
    • osqueryi를 사용하여 다양한 명령 및 쿼리를 실행할 수 있습니다. .help를 입력하여 사용 가능한 명령을 확인하고 .tables를 사용하여 사용 가능한 테이블 유형을 확인할 수 있습니다.
      # osqueryi 실행
      osqueryi
      
      # 사용 가능한 명령 확인
      .help
      
      # 사용 가능한 테이블 유형 확인
      .tables
      
      # 특정 테이블의 스키마 확인
      .schema <TABLE_NAME>
  7. 예제 쿼리 실행:
    • 모든 사용자 가져오기: SELECT * FROM users;
    • 현재 로그인한 사용자 확인: SELECT * FROM logged_in_users;
    • 커널 정보 중 버전 확인: SELECT version FROM kernel_info;
  8. 자동화 및 스케줄링:
    • osqueryd 데몬 모드를 사용하여 쿼리를 자동화하고 스케줄링할 수 있습니다. /etc/osquery/osquery.conf 파일을 편집하여 특정 쿼리를 주기적으로 실행하거나 필요한 규칙을 정의할 수 있습니다.
      예를 들어, 다음과 같이 사용자 쿼리를 300초마다 실행하는 규칙을 추가할 수 있습니다.
      "schedule": {
        "Users": {
          "query": "SELECT * FROM users;",
          "interval": 300
        }
      }
  9. 팩(Pack):
    • 쿼리들의 컬렉션을 팩(Pack)이라고 부릅니다. OSQuery는 다양한 팩을 제공하며, 보안 평가와 조사를 지원하는 팩들을 활용할 수 있습니다. 팩 목록은 OSQuery GitHub 팩 레포지토리에서 확인할 수 있습니다.

OSQuery는 시스템 모니터링, 보안 관리, 운영 체제 분석, 그리고 보안 조사와 같은 다양한 용도로 활용됩니다. 또한 OSQuery를 대규모 환경에 배치하고 효과적으로 관리하기 위해서는 "콜라이드 플리트"와 같은 도구를 사용할 수 있습니다.

 

플릿(Fleet)은 오픈 소스 삼쿼리 매니저로, 주로 osquery와 함께 사용되어 대규모 환경에서의 프로그램 가능한 라이브 쿼리, 스트리밍 로그 수집, 그리고 효과적인 osquery 관리를 지원하는 도구입니다.

아래에서 플릿의 주요 특징과 기능을 설명하겠습니다.

  1. osquery 관리 및 배포: 플릿은 osquery 에이전트를 다수의 서버, 컨테이너, 및 랩톱 장치에 배포하고 관리하는 데 도움을 줍니다. 이를 통해 보안 및 운영 팀은 환경 내에서 일관된 보안 정책 및 구성을 쉽게 유지하고 관리할 수 있습니다.
  2. 프로그램 가능한 라이브 쿼리: osquery는 프로그램 가능한 SQL 쿼리 언어를 사용하여 운영 체제 및 애플리케이션 정보를 쿼리하는 도구입니다. 플릿을 통해 이러한 쿼리를 관리하고 실행할 수 있으며, 이를 통해 시스템 상태, 보안 문제, 네트워크 활동 등을 실시간으로 모니터링하고 조사할 수 있습니다.
  3. 스트리밍 로그 수집: 플릿은 osquery에서 생성된 로그 데이터를 수집하고 중앙 집중화된 위치에 저장합니다. 이를 통해 로그 데이터를 보다 효과적으로 분석하고, 보안 이벤트 또는 문제를 탐지하고 조치할 수 있습니다.
  4. 대규모 환경 관리: 플릿은 대규모 환경에서 수천 대 이상의 장치를 효과적으로 관리할 수 있는 기능을 제공합니다. 이는 대규모 서버 팜, 클라우드 인프라, 또는 엔터프라이즈 환경에서 특히 유용합니다.
  5. 대화형 대기 모드: 플릿은 여러 기기와 동시에 대화할 수 있는 대화형 대기 모드를 지원합니다. 이는 대규모 환경에서 대규모 osquery 에이전트를 다루거나 명령을 동시에 실행할 때 유용합니다.
  6. 오픈 소스: 플릿은 오픈 소스 프로젝트로서 커뮤니티에서 개발 및 유지보수되며, 사용자는 자유롭게 수정하고 커스터마이즈할 수 있습니다.

플릿은 보안 관리, 인시던트 대응, 컴플라이언스 모니터링 등 다양한 보안 및 운영 관련 시나리오에서 유용한 도구로 사용됩니다. 대규모 환경에서의 osquery 관리 및 모니터링을 효과적으로 수행하기 위한 강력한 오픈 소스 옵션 중 하나입니다.

콜라이드(Kolide) 플리트(OSQuery Management)는 osquery와 관련된 관리와 모니터링 작업을 수행하는 도구로 앞서 설명한 Fleet의 이전 이름입니다. 그러나 콜라이드는 더 이상 Fleet을 유지하고 지원하지 않으며, 새로운 이름으로 플리트(Fleet)을 사용하게 되었습니다. 이로 인해 다음과 같은 주요 사항이 발생했습니다.

  1. 이름 변경: Fleet는 콜라이드(Kolide) 플리트(Kolide Fleet)에서 간결한 이름인 플리트(Fleet)으로 변경되었습니다.
  2. 관리 및 유지: 콜라이드(Kolide)는 Fleet을 더 이상 관리하거나 유지하지 않습니다. 따라서 새로운 레포지토리 및 프로젝트를 통해 Fleet의 개발 및 업데이트가 이루어집니다.
  3. 새로운 레포지토리: Fleet 프로젝트의 새로운 레포지토리는 https://github.com/fleetdm/fleet에서 찾을 수 있습니다.

이로써 사용자는 콜라이드(Kolide) 플리트(Kolide Fleet)를 더 이상 사용하지 않고, 새로운 프로젝트인 플리트(Fleet)를 사용해야 합니다. 새로운 레포지토리에서 Fleet의 최신 버전과 업데이트를 찾을 수 있으며, 오픈 소스 커뮤니티와 함께 이 프로젝트를 계속 발전시킬 것으로 예상됩니다.

 

FleetDM을 서버 및 엔드포인트 관리를 위해 Docker 컨테이너를 사용하여 실행할 수 있습니다.

참고: FleetDM를 실행하기 전에 Docker 및 Docker Compose가 설치되어 있어야 합니다.

 

1. Docker Compose 파일 작성: FleetDM를 실행하기 위한 Docker Compose 파일을 작성합니다.

아래는 간단한 예제입니다. docker-compose.yml 파일을 만들고 내용을 복사합니다.

version: '3'
services:
  fleet:
    image: fleetdm/fleet:latest
    container_name: fleet
    ports:
      - "8080:8080" # FleetDM 웹 인터페이스를 호스트의 8080 포트로 매핑
    volumes:
      - ./config:/etc/fleet # FleetDM 구성 파일을 호스트 디렉토리에 저장
    environment:
      - MYSQL_USERNAME=fleet
      - MYSQL_PASSWORD=myfleetpassword
      - MYSQL_DATABASE=fleet
      - MYSQL_ADDRESS=db:3306
      - FLEET_MYSQL_ADDRESS=db:3306
      - FLEET_LOGGING_JSON=true
    depends_on:
      - db

  db:
    image: mysql:5.7
    container_name: fleet-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=myrootpassword
      - MYSQL_DATABASE=fleet
      - MYSQL_USER=fleet
      - MYSQL_PASSWORD=myfleetpassword
    volumes:
      - ./mysql-data:/var/lib/mysql

이 파일에서 주요 포인트는 다음과 같습니다.

  • image: FleetDM Docker 이미지의 이름을 지정합니다. 여기서는 fleetdm/fleet:latest 이미지를 사용합니다. 원하는 버전을 지정할 수도 있습니다.
  • ports: FleetDM 웹 인터페이스를 호스트의 포트 8080에 매핑합니다.
  • volumes: FleetDM 구성 파일을 호스트 시스템에 저장하기 위한 디렉토리를 지정합니다.
  • environment: FleetDM 및 MySQL 컨테이너에 환경 변수를 설정합니다. MySQL 비밀번호 및 데이터베이스 이름을 변경할 수 있습니다.

 

2. FleetDM 구성 파일: FleetDM를 구성하기 위해 config 디렉토리를 생성하고 필요한 구성 파일을 추가합니다. 구체적인 구성은 FleetDM 공식 문서를 참조하세요.

 

3. Docker Compose 실행: 터미널에서 Docker Compose를 사용하여 FleetDM 컨테이너를 실행합니다.

docker-compose up -d

-d 플래그를 사용하면 컨테이너가 백그라운드에서 실행됩니다.

 

4. FleetDM 웹 인터페이스 액세스: FleetDM가 정상적으로 실행되면 웹 브라우저에서 다음 URL을 사용하여 FleetDM 웹 인터페이스에 액세스할 수 있습니다.

http://localhost:8080

FleetDM 웹 인터페이스에 로그인하려면 초기 관리자 계정 정보를 사용해야 할 수 있습니다. 이 정보는 FleetDM 구성 파일에 설정됩니다.

이제 FleetDM를 Docker 컨테이너로 성공적으로 실행했습니다. 필요에 따라 추가 구성 및 관리를 수행할 수 있습니다.

FleetDM의 공식 문서 및 GitHub 페이지에서 자세한 정보를 찾을 수 있습니다.

728x90

댓글