cve-search를 활용한 로컬 CVE 데이터베이스 운영 방법

로컬 기반의 보안 취약점 관리: cve-search 도입 전략

cve-search는 오픈소스 기반의 자체 호스팅형 취약점 검색 도구로, 네트워크 외부 서비스에 의존하지 않고도 조직 내에서 안전하고 빠르게 알려진 보안 취약점을 탐색할 수 있도록 설계되었습니다. 이 도구는 시스템 운영자와 보안 팀이 실시간으로 취약점 정보를 분석하고 대응할 수 있도록 지원합니다.

로컬 데이터베이스 구축의 핵심 이점

외부 인터넷 연결을 통한 취약점 조회는 지연과 보안 리스크를 동반할 수 있습니다. cve-search를 사용하면 다음과 같은 장점을 얻을 수 있습니다:

  • 데이터 자율성: 모든 취약점 정보는 내부 서버에 저장되며, 민감한 정보 유출 위험 최소화
  • 고속 검색 성능: 몽고디비 기반의 최적화된 색인 구조로 밀리초 단위 응답 가능
  • 다양한 데이터 통합: CVE, CWE, CAPEC 등 표준 보안 메타데이터를 하나의 시스템에서 관리
  • 유연한 설정 가능성: 커스텀 데이터 소스 추가, 주기적 업데이트 정책, 접근 제어 정책 등을 자유롭게 구성

설치 및 초기 환경 설정

필수 사전 조건

운영체제는 Ubuntu LTS(20.04 이상) 권장. 다음 패키지가 미리 설치되어 있어야 합니다:

  • Python 3.6 이상
  • MongoDB 7.0 이상
  • git
  • 기타 시스템 종속성

설치 절차

  1. 소스 코드 다운로드
git clone https://gitcode.com/gh_mirrors/cv/cve-search
cd cve-search
  1. 시스템 라이브러리 설치
xargs sudo apt-get install -y < requirements.system
  1. Python 패키지 설치
pip3 install -r requirements.txt
  1. MongoDB 설치 및 시작
# 공개 키 가져오기
sudo apt-get install gnupg curl
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
    sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor

# 소스 리스트 생성
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" \
     | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

# 설치 및 실행
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod

데이터베이스 초기화 및 동기화

데이터베이스 구조 생성

설치 후 데이터베이스 스키마를 초기화합니다:

python3 sbin/db_mgmt_admin.py -init

기본 데이터 불러오기

처음에는 공식 제공되는 코어 데이터셋을 로드해야 합니다:

python3 sbin/db_mgmt_cpe_dictionary.py
python3 sbin/db_updater.py -cve

초기 데이터 로딩은 네트워크 속도와 시스템 성능에 따라 약 1~2시간 소요될 수 있음.

자동 업데이트 설정

최신 정보 유지 위해 systemd 기반 스케줄링을 구성할 수 있습니다:

# 서비스 파일 복사
sudo cp _etc/systemd/system/cvesearch.db_updater.timer /etc/systemd/system/
sudo cp _etc/systemd/system/cvesearch.db_updater@.service /etc/systemd/system/

# 서비스 활성화
sudo systemctl daemon-reload
sudo systemctl enable cvesearch.db_updater.timer
sudo systemctl start cvesearch.db_updater.timer

사용 시작: 웹 인터페이스와 프로그래밍 인터페이스

웹 서버 실행

개발용 또는 생산용 모드로 실행 가능:

# 개발 모드 (임시)
python3 web/run.py

# 프로덕션 모드 (WSGI 기반)
uwsgi --ini etc/wsgi.ini.sample

기본적으로 http://localhost:5000에서 웹 인터페이스에 접속 가능하며, 간편한 검색 기능 제공.

API를 통한 자동화 연동

취약점 정보를 다른 시스템과 연동하려면 REST API를 활용하세요:

curl http://localhost:5000/api/cve/CVE-2023-1234

API 문서는 웹 인터페이스 내부에서 확인 가능하며, 파라미터 필터링, 반환 형식 선택 등 다양한 옵션 지원.

고급 설정 및 성능 최적화

사용자 정의 데이터 소스 추가

특정 내부 데이터나 벤더별 특화 정보를 포함시키고 싶다면, 다음 파일을 수정:

cp etc/sources.ini.sample etc/sources.ini

편집 후, 새로운 데이터 출처를 정의하여 확장 가능.

성능 향상 전략

대규모 환경에서의 효율성을 극대화하기 위한 조치:

  • 몽고디비 설정에서 캐시 메모리 증량
  • 자주 사용하는 쿼리에 대해 인덱스 생성
  • 웹 서비스 부하 분산을 위한 로드 밸런서 적용

결론

cve-search는 기업 내부 보안 인프라에 맞춰 설계된 강력한 로컬 취약점 관리 플랫폼입니다. 본 문서에서 소개한 절차를 따르면, 자체적인 취약점 데이터베이스를 신속하게 구축하고, 보안 대응 속도를 크게 향상시킬 수 있습니다. 특히 자동 업데이트, 고성능 검색, 유연한 확장성 면에서 우수한 평가를 받고 있으며, 현장 적용에 매우 적합합니다.

자세한 사용법은 공식 문서(docs/source/index.rst)를 참고하시기 바랍니다.

태그: cve-search MongoDB python cybersecurity vulnerability management

6월 15일 16:07에 게시됨