Qualys 취약점 관리 로그 수집

다음에서 지원:

이 파서는 키-값 (KV) 또는 JSON 형식의 Qualys 취약점 관리 로그를 처리합니다. 취약점 세부정보, 호스트 정보, 스캔 메타데이터를 추출하여 UDM에 매핑합니다. 또한 파서는 다양한 로그 구조를 처리하여 KV 파싱을 우선시하고 필요한 경우 JSON으로 대체하며 DetectionList 배열을 개별 취약점 이벤트로 분할합니다.

시작하기 전에

  • Google Security Operations 인스턴스가 있는지 확인합니다.
  • Qualys VMDR 콘솔에 대한 권한이 있는지 확인합니다.

선택사항: Qualys에서 전용 API 사용자 만들기

  1. Qualys 콘솔에 로그인합니다.
  2. 사용자로 이동합니다.
  3. 새로 만들기 > 사용자를 클릭합니다.
  4. 사용자에게 필요한 일반 정보를 입력합니다.
  5. 사용자 역할 탭을 선택합니다.
  6. 역할에 API 액세스 체크박스가 선택되어 있는지 확인합니다.
  7. 저장을 클릭합니다.

특정 Qualys API URL 식별

옵션 1

플랫폼 식별에 설명된 대로 URL을 식별합니다.

옵션 2

  1. Qualys 콘솔에 로그인합니다.
  2. 도움말 > 정보로 이동합니다.
  3. 보안 운영 센터 (SOC)에서 이 정보를 확인하려면 스크롤하세요.
  4. Qualys API URL을 복사합니다.

Qulays VM 로그를 수집하도록 Google SecOps에서 피드 구성

  1. SIEM 설정 > 피드로 이동합니다.
  2. 새로 추가를 클릭합니다.
  3. 피드 이름 필드에 피드 이름을 입력합니다 (예: Qualys VM Logs).
  4. 소스 유형으로 서드 파티 API를 선택합니다.
  5. 로그 유형으로 Qualys VM을 선택합니다.
  6. 다음을 클릭합니다.
  7. 다음 입력 매개변수의 값을 지정합니다.
    • 사용자 이름: 사용자 이름을 입력합니다.
    • 보안 비밀: 비밀번호를 입력합니다.
    • API 전체 경로: Qualys API 서버 URL (예: https://<qualys_base_url>/api/2.0/fo/asset/host/?action=list)을 입력합니다. 여기서 <qualys_base_url>은 계정이 있는 Qualys API 서버의 기본 URL입니다.
    • 애셋 네임스페이스: 애셋 네임스페이스입니다.
    • 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
  8. 다음을 클릭합니다.
  9. 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.

UDM 매핑 표

로그 필드 UDM 매핑 논리
DETECTION.FIRST_FOUND_DATETIME extensions.vulns.vulnerabilities.first_found DETECTION.FIRST_FOUND_DATETIME 필드에서 파싱하여 문자열 값을 타임스탬프로 변환합니다.
DETECTION.LAST_FOUND_DATETIME extensions.vulns.vulnerabilities.last_found DETECTION.LAST_FOUND_DATETIME 필드에서 파싱하여 문자열 값을 타임스탬프로 변환합니다.
DETECTION.QID extensions.vulns.vulnerabilities.name 'QID: '와 DETECTION.QID 값을 연결합니다.
DETECTION.RESULTS extensions.vulns.vulnerabilities.description 설명 입력란에 직접 매핑됩니다. grok를 사용하여 network.ip_protocolprincipal.port를 추출하는 데도 사용됩니다.
DETECTION.SEVERITY extensions.vulns.vulnerabilities.severity DETECTION.SEVERITY에서 매핑됩니다. 값 0, 1, 2는 '낮음', 3, 4는 '중간', 5, 6, 7은 '높음'이 됩니다.
DETECTION.STATUS extensions.vulns.vulnerabilities.about.labels '감지 상태' 키가 있는 라벨로 추가되었습니다.
DETECTION.TYPE extensions.vulns.vulnerabilities.about.labels '감지 유형' 키가 있는 라벨로 추가되었습니다.
DNS principal.hostname principal.hostname에 직접 매핑됩니다.
DNSData.DOMAIN principal.domain.name principal.domain.name에 직접 매핑됩니다.
HOST.ASSET_ID principal.asset_id 'QUALYS:'를 HOST.ASSET_ID 값과 연결합니다.
HOST.DNS principal.hostname DNS가 비어 있으면 principal.hostname에 직접 매핑됩니다.
HOST.DNS_DATA.DOMAIN principal.domain.name DNSData.DOMAIN가 비어 있으면 principal.domain.name에 직접 매핑됩니다.
HOST.ID metadata.product_log_id metadata.product_log_id에 직접 매핑됩니다.
HOST.IP principal.ip IP가 비어 있으면 principal.ip에 직접 매핑됩니다.
HOST.LAST_SCAN_DATETIME extensions.vulns.vulnerabilities.scan_start_time HOST.LAST_SCAN_DATETIME 필드에서 파싱하여 문자열 값을 타임스탬프로 변환합니다.
HOST.LAST_VM_SCANNED_DATE extensions.vulns.vulnerabilities.scan_end_time HOST.LAST_VM_SCANNED_DATE 필드에서 파싱하여 문자열 값을 타임스탬프로 변환합니다.
HOST.NETBIOS additional.fields 'HOST NETBIOS' 키를 가진 라벨로 추가되었습니다.
HOST.OS principal.platform_version OS가 비어 있으면 principal.platform_version에 직접 매핑됩니다.
HOST.QG_HOSTID additional.fields 'HOST QG_HOSTID' 키로 라벨로 추가되었습니다.
HOST.TRACKING_METHOD additional.fields 'HOST TRACKING_METHOD' 키로 라벨로 추가되었습니다.
HOST_ID principal.asset_id 'QUALYS:'를 HOST_ID 값과 연결합니다.
ID metadata.product_log_id metadata.product_log_id에 직접 매핑됩니다.
IP principal.ip principal.ip에 직접 매핑됩니다.
LastScanDateTime extensions.vulns.vulnerabilities.scan_start_time LastScanDateTime 필드에서 파싱하여 문자열 값을 타임스탬프로 변환합니다.
LastVMAuthScanDuration additional.fields 'LastVMAuthScanDuration' 키를 가진 라벨로 추가되었습니다.
LastVMScanDate extensions.vulns.vulnerabilities.scan_end_time LastVMScanDate 필드에서 파싱하여 문자열 값을 타임스탬프로 변환합니다.
LastVMScanDuration additional.fields 'LastVMScanDuration' 키를 가진 라벨로 추가되었습니다.
LAST_FOUND_DATETIME extensions.vulns.vulnerabilities.last_found LAST_FOUND_DATETIME 필드에서 파싱하여 문자열 값을 타임스탬프로 변환합니다.
LAST_SCAN_DATETIME extensions.vulns.vulnerabilities.scan_start_time LAST_SCAN_DATETIME 필드에서 파싱하여 문자열 값을 타임스탬프로 변환합니다.
LAST_VM_SCANNED_DATE extensions.vulns.vulnerabilities.scan_end_time LAST_VM_SCANNED_DATE 필드에서 파싱하여 문자열 값을 타임스탬프로 변환합니다.
NETBIOS additional.fields 'NETBIOS' 키가 있는 라벨로 추가되었습니다.
NetworkID additional.fields 'NetworkID' 키가 있는 라벨로 추가되었습니다.
NETWORK_ID additional.fields 'NetworkID' 키가 있는 라벨로 추가되었습니다.
OS principal.platform_version principal.platform_version에 직접 매핑됩니다.
Os principal.platform_version OS가 비어 있으면 principal.platform_version에 직접 매핑됩니다.
QID extensions.vulns.vulnerabilities.name 'QID: '와 QID 값을 연결합니다.
QgHostID principal.asset_id principal.asset_id를 '호스트 ID:%{QgHostID}'로 설정합니다.
SEVERITY extensions.vulns.vulnerabilities.severity SEVERITY에서 매핑됩니다. 값 0, 1, 2는 '낮음', 3, 4는 '중간', 5, 6, 7은 '높음'이 됩니다.
TRACKING_METHOD additional.fields 'TRACKING_METHOD' 키가 있는 라벨로 추가되었습니다.
TrackingMethod additional.fields 'TRACKING_METHOD' 키가 있는 라벨로 추가되었습니다.
해당 사항 없음 metadata.vendor_name 'Qualys'로 하드코딩됨
해당 사항 없음 metadata.product_name '취약점 관리'로 하드코딩되었습니다.
해당 사항 없음 metadata.event_type _vulns가 비어 있지 않으면 'SCAN_VULN_HOST'로, prin_host 또는 IP가 비어 있지 않으면 'STATUS_UPDATE'로, 그 외의 경우에는 'GENERIC_EVENT'로 설정합니다.
해당 사항 없음 metadata.log_type 원시 로그의 log_type 필드에서 가져옵니다.
해당 사항 없음 principal.platform OS, Os 또는 HOST.OS에서 결정됩니다. 여기에 'Linux'가 포함된 경우 플랫폼이 'LINUX'로 설정됩니다. 'Windows'가 포함된 경우 플랫폼이 'WINDOWS'로 설정됩니다. 'mac' 또는 'IOS'가 포함된 경우 플랫폼이 'MAC'으로 설정됩니다.
detection.DType extensions.vulns.vulnerabilities.about.resource.attribute.labels DetectionList 필드에서 파싱된 이벤트의 취약점 배열 내에 '감지 유형' 키가 있는 라벨로 추가되었습니다.
detection.FirstFoundTime extensions.vulns.vulnerabilities.first_found detection.FirstFoundTime 필드에서 파싱되며, DetectionList 필드에서 파싱된 이벤트의 취약점 배열 내에서 문자열 값을 타임스탬프로 변환합니다.
detection.LastFoundTime extensions.vulns.vulnerabilities.last_found detection.LastFoundTime 필드에서 파싱되며, DetectionList 필드에서 파싱된 이벤트의 취약점 배열 내에서 문자열 값을 타임스탬프로 변환합니다.
detection.LastProcessedDatetime extensions.vulns.vulnerabilities.about.resource.attribute.labels DetectionList 필드에서 파싱된 이벤트의 취약점 배열 내에 'LastProcessedDatetime' 키가 있는 라벨로 추가되었습니다.
detection.LastTestDateTime extensions.vulns.vulnerabilities.about.resource.attribute.labels DetectionList 필드에서 파싱된 이벤트의 취약점 배열 내에 'LastTestDateTime' 키가 있는 라벨로 추가되었습니다.
detection.LastUpdateDateTime extensions.vulns.vulnerabilities.about.resource.attribute.labels DetectionList 필드에서 파싱된 이벤트의 취약점 배열 내에 'LastUpdateDateTime' 키가 있는 라벨로 추가되었습니다.
detection.Qid extensions.vulns.vulnerabilities.name DetectionList 필드에서 파싱된 이벤트의 취약점 배열 내에서 detection.Qid 값과 'QID: '를 연결합니다.
detection.Results extensions.vulns.vulnerabilities.description DetectionList 필드에서 파싱된 이벤트의 취약점 배열 내 설명 필드에 직접 매핑됩니다. 탭과 줄바꿈은 공백으로 바뀝니다.
detection.Severity extensions.vulns.vulnerabilities.severity detection.Severity에서 매핑됩니다. 값 0, 1, 2는 DetectionList 필드에서 파싱된 이벤트의 취약점 배열 내에서 'LOW'가 되고, 3, 4는 'MEDIUM'가 되고, 5, 6, 7은 'HIGH'가 됩니다.
detection.Status extensions.vulns.vulnerabilities.about.resource.attribute.labels DetectionList 필드에서 파싱된 이벤트의 취약점 배열 내에 '감지 상태' 키가 있는 라벨로 추가되었습니다.
detection.TimesFound extensions.vulns.vulnerabilities.about.resource.attribute.labels DetectionList 필드에서 파싱된 이벤트의 취약점 배열 내에 'TimesFound' 키가 있는 라벨로 추가되었습니다.
timestamp metadata.event_timestamp, timestamp 원시 로그의 timestamp 필드는 이벤트 타임스탬프와 최상위 타임스탬프에 모두 사용됩니다.

변경사항

2023-10-27

  • 'QID'가 여러 개인 경우 이벤트를 분할하는 'for' 루프를 추가했습니다.

2023-04-25

  • 'DetectionList.FirstFoundTime'이 'extensions.vulns.vulnerabilities.first_found'에 매핑되었습니다.
  • 'DetectionList.LastFoundTime'이 'extensions.vulns.vulnerabilities.last_found'에 매핑되었습니다.
  • 'DetectionList.TimesFound'가 'extensions.vulns.vulnerabilities.about.resource.attribute.labels'에 매핑되었습니다.
  • 'DetectionList.LastTestDateTime'이 'extensions.vulns.vulnerabilities.about.resource.attribute.labels'에 매핑되었습니다.
  • 'DetectionList.LastUpdateDateTime'이 'extensions.vulns.vulnerabilities.about.resource.attribute.labels'에 매핑되었습니다.
  • 'DetectionList.LastProcessedDatetime'이 'extensions.vulns.vulnerabilities.about.resource.attribute.labels'에 매핑되었습니다.

2023-01-23

  • 'DetectionList' 배열 세부정보를 'extensions.vulns.vulnerabilities'에 매핑했습니다.
  • 'DetectionList.Qid'가 'extensions.vulns.vulnerabilities.name'에 매핑되었습니다.
  • 'DetectionList.Severity'가 'extensions.vulns.vulnerabilities.severity'에 매핑되었습니다.
  • 'DetectionList.Results'가 'extensions.vulns.vulnerabilities.description'에 매핑되었습니다.
  • 'DetectionList.Status', 'DetectionList.DType'이 'extensions.vulns.vulnerabilities.about.resource.attribute.labels'에 매핑되었습니다.

2022-09-29

  • 'ID'가 'metadata.product_log_id'에 매핑되었습니다.
  • 'Netbios','TrackingMethod','NetworkID'가 'additional.fields'에 매핑되었습니다.
  • 'QgHostID'가 'principal.asset_id'에 매핑되었습니다.
  • 'Os'가 'principal.platform_version'에 매핑되었습니다.
  • 'vulns'에 대한 조건부 검사를 추가했습니다.

2022-07-20

  • 다음 필드에 대한 매핑이 추가되었습니다.
  • 'DETECTION.FIRST_FOUND_DATETIME'이 'event.idm.read_only_udm.extensions.vulns.vulnerabilities.first_found'에 매핑되었습니다.
  • 'DETECTION.LAST_FOUND_DATETIME'이 'event.idm.read_only_udm.extensions.vulns.vulnerabilities.last_found'에 매핑되었습니다.
  • 'HOST.LAST_VM_SCANNED_DATE'가 'event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_end_time'에 매핑되었습니다.
  • 'HOST.LAST_SCAN_DATETIME'이 'event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_start_time'에 매핑되었습니다.
  • 'DETECTION.QID'가 'event.idm.read_only_udm.extensions.vulns.vulnerabilities.name'에 매핑되었습니다.
  • 'DETECTION.SEVERITY'가 'event.idm.read_only_udm.extensions.vulns.vulnerabilities.severity'에 매핑되었습니다.
  • 'DETECTION.TYPE'이 'event.idm.read_only_udm.extensions.vulns.vulnerabilities.about.labels'에 매핑되었습니다.
  • 'DETECTION.STATUS'가 'event.idm.read_only_udm.extensions.vulns.vulnerabilities.labels'에 매핑되었습니다.
  • 'DETECTION.RESULTS'가 'event.idm.read_only_udm.extensions.vulns.vulnerabilities.description'에 매핑되었습니다.
  • 'HOST.DNS_DATA.DOMAIN'이 'event.idm.read_only_udm.principal.domain.name'에 매핑되었습니다.
  • 'HOST.ASSET_ID'가 'event.idm.read_only_udm.principal.asset_id'에 매핑되었습니다.
  • 'HOST.IP'가 'event.idm.read_only_udm.principal.ip'에 매핑되었습니다.
  • 'HOST.OS'가 'event.idm.read_only_udm.principal.platform_version'에 매핑되었습니다.
  • 'HOST.DNS'가 'event.idm.read_only_udm.principal.hostname'에 매핑되었습니다.
  • 'HOST.QG_HOSTID'가 'event.idm.read_only_udm.additional.fields'에 매핑되었습니다.
  • 'HOST.NETBIOS'가 'event.idm.read_only_udm.additional.fields'에 매핑되었습니다.
  • 'HOST.TRACKING_METHOD'가 'event.idm.read_only_udm.additional.fields'에 매핑되었습니다.