# KUMA API를 활용한 설치 패키지 기반 리눅스 배포판 자동 식별
대기업 SOC 분석가가 수천 대의 장치 운영체제 재고를 파악해야 하는 과제에 직면했습니다. 18,000대 장치를 수동으로 확인하는 대신, KUMA 플랫폼 API를 통해 설치된 소프트웨어 데이터를 가져와 패키지를 분석하는 Python 스크립트를 개발했습니다. 이 솔루션은 고유 시스템 패키지, 패키지 매니저, 버전 접미사를 고려한 가중치 점수 시스템을 사용해 리눅스 배포판을 정확히 식별합니다.
KUMA API 활용과 JSON 처리
KUMA(Kaspersky Unified Monitoring and Analysis Platform)는 API를 통해 자산 데이터를 제공하지만, 웹 인터페이스에서 직접 자산 필터링이 불가능한 등의 제약이 있습니다. 인증은 토큰을 사용해 하드코딩된 자격 증명을 피합니다. 요청 예시 코드:
token = "my_token"
url = "my_api_url"
api_header={
"Content-Type": "application/json",
"Authorization": f"Bearer {token}"
}
req = request.get(url, headers=api_header)
data = req.json()
JSON 응답 구조에는 OS와 설치된 소프트웨어 필드가 포함됩니다. 패키지 목록 같은 중첩 데이터를 추출하기 위해 재귀 함수를 사용합니다:
def recursive_extract(data, result=None):
result = []
if isinstance(data, dict):
for key, value in data.items():
if key == "software":
result.append(value)
recursive_extract(value, result)
return result
리눅스 패키지 버전 체계
패키지 버전 이해가 분석의 핵심입니다. 표준 시맨틱 버전은 MAJOR.MINOR.PATCH 형식(예: 2.36.105)을 따릅니다. 배포판별 접미사가 추가됩니다:
- Ubuntu: .ubuntu 또는 +ubuntu
- Debian: .deb 또는 +deb
- ALT Linux: .alt 또는 +alt
- Astra Linux: .astra 또는 astra
복잡한 예: 2.2.6-2+deb10u9+ci1+astra1 (deb10은 Debian 10, u9는 9번째 업데이트, astra는 Astra Linux 변형을 가리킴).
리눅스 배포판 식별 알고리즘
알고리즘은 설치된 패키지를 스캔해 OS 유형, 특정 배포판, 버전, 신뢰도를 식별합니다. 가중치 점수 시스템을 적용:
- 150점: 고유 시스템 패키지 (예: ubuntu-release)
- 20점: 패키지 매니저 (apt, yum, rpm)
- 15점: 버전 접미사 (.ubuntu, .alt)
- 10점: 배포판 전용 패키지
- 5점: 간접 지표
지원 배포판: Ubuntu, Debian, ALT Linux, Astra Linux, Fedora 등. 로직 흐름:
- 패키지 스캔 후 각 배포판별 점수 집계.
- 총점 합산 후 최고 점수 배포판 선택.
- 동점 시 시스템 패키지 우선.
- 시스템 패키지나 접미사에서 버전 추출.
신뢰도: 높음(≥150점), 중간(20–49점), 낮음(<20점).
주요 구현 특징
- 유연한 출력: CSV 또는 JSON 지원, 신뢰도 필터링 옵션.
- 불완전 데이터 처리: OS 정보 누락(os: null)이나 소프트웨어 배열 비어 있어도 동작.
- 우선순위 계층: 고유 시스템 패키지에 최고 가중치로 정확도 향상.
- 확장성 설계: 신규 배포판과 지표 쉽게 추가.
주요 요약
- KUMA API로 OS 재고 자동화, 수천 대 장치에서 시간 절약.
- 가중치 점수로 패키지 데이터에서 리눅스 배포판 정확 식별.
- ALT Linux, Astra Linux 등 주요 러시아 배포판 포함.
- CSV/JSON 출력으로 다른 도구와 원활 연동.
- 불완전 데이터에도 강력, 실전 환경 최적.
— Editorial Team
아직 댓글이 없습니다.