728x90
상황 요약: Red Hat Linux release 9 (Shrike)에서 wazuh-agent-4.13.1-1.i386.rpm 설치 시
V3 RSA/MD5 signature: NOKEY, rpmlib(FileDigests) <= 4.6.0-1 is needed 오류 발생.
대표 오류 예시와 즉시 판단 포인트
설치 불가(기능 미지원)
error: Failed dependencies:
rpmlib(FileDigests) <= 4.6.0-1 is needed by ...
- 원인: 시스템 rpm 자체가 너무 구형(RHL9의 rpm은 대개 4.2대, glibc 2.3대).
최신 패키지의 메타데이터/해시/압축 포맷을 이해 못함.
서명/키 관련
warning: V3 RSA/MD5 signature: NOKEY, key ID 29111145
- 원인: GPG 키 미설치. 부차적 문제이며, 위 ①번이 근본 원인일 때는 키를 넣어도 설치 불가.
압축 포맷/페이로드 미지원
rpm: rpmReadSignature failed ...
Payload is xz compressed
- 원인: 구형 rpm은 xz/zstd 페이로드 미지원(주로 RHEL5 이하/구 rpm).
의존성 충돌
conflicts with file from package ...
- 원인: 같은 경로에 파일 충돌, 이전 패키지 잔존 등.
rpm DB 손상/잠김(베르클리DB)
rpmdb: BDB0113 Thread/process ... failed
error: db4 error(-30969) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery
- 원인: 비정상 종료/디스크 이슈/락파일(__db.*) 잔존/DB 자체 손상.
RHL9 + Wazuh 사례의 정석 결론
- RHL9(2003~2004) 에서는 Wazuh 4.x 설치 불가
(64비트/x86_64, glibc ≥ 2.17, rpm ≥ 4.6급 기능 요구. RHL9는 32비트·구 rpm/glibc). - 현실적 대안
- 에이전트리스 수집: syslog 포워딩, SSH 기반 Wazuh Agentless
- 중간 브리지 노드: RHL9 → 로컬 syslog → (지원 OS) 수집기 → Wazuh
- 장기적으로 OS 업그레이드(RHEL/Rocky/Alma 8+).
아래는 “설치가 가능한 환경”에서 흔히 마주치는 문제(키/의존성/rpmdb)를 완전 복구 가이드로 정리했습니다.
RHL9에는 일부 명령이 없을 수 있어, 대체 명령(예: db4_*)을 함께 표기합니다.
빠른 진단 스크립트(원인 규명 1분 컷)
echo "[*] OS/아키/런타임"
uname -m # i386/i686면 32bit
cat /etc/redhat-release
rpm --version # 4.6 미만이면 최신 패키지 설치 불가
ldd --version | head -1 # glibc 2.17 미만이면 최신 에이전트 불가
echo "[*] 패키지 서명/요구사항 확인"
rpm -K ./wazuh-agent-4.13.1-1.i386.rpm || true
rpm -qp --requires ./wazuh-agent-4.13.1-1.i386.rpm || true
echo "[*] rpmdb 상태 점검"
ls -l /var/lib/rpm
# __db.* 파일 다수 + BDB 오류 로그 있으면 잠김/손상 의심
- 결과 해석
rpm 4.6 미만
+i386/i686
→ 현행 Wazuh 설치 불가(구조적)- rpmdb 오류만 보이면 → 아래 절차로 복구 후 재시도
300x250
rpm DB(베르클리DB) 복구 절차 — 단계별 “정석” 가이드
반드시 백업: 복구 전 /var/lib/rpm 디렉터리를 통째로 백업하세요.
1) 준비 & 백업
# 0) 루트 권한
sudo -i
# 1) 패키지 관련 프로세스 중지 (yum/up2date 등)
# RHL9에는 주로 up2date/syslog, 상황에 맞게 중지
fuser -v /var/lib/rpm/* 2>/dev/null || true
# 2) rpmdb 백업
tar -C /var/lib -cvzf /root/rpmdb-backup-$(date +%F).tgz rpm
2) 잠금/임시파일 제거 → rebuilddb
# 3) 임시락 파일(__db.*) 제거
rm -f /var/lib/rpm/__db.*
# 4) 재구성 (여러 번 시도 권장)
rpm --rebuilddb -v
rpm --rebuilddb -v
# 5) 검증
rpm -qa | head
- 효과: 잔존 락/임시파일로 인한 오류 해결, 인덱스 재생성.
3) DB 무결성 검사 & 구조적 복구
RHL9 계열은 db4 유틸을 사용합니다. 배포에 따라 db_verify 대신 db4_verify 입니다.
# 6) 검증 (배포에 따라 명령 다름)
db_verify /var/lib/rpm/Packages || db4_verify /var/lib/rpm/Packages
# 7) salvage dump → clean load
db_dump -r /var/lib/rpm/Packages > /root/Packages.dump || db4_dump -r /var/lib/rpm/Packages > /root/Packages.dump
mv /var/lib/rpm/Packages /var/lib/rpm/Packages.bad
db_load /var/lib/rpm/Packages < /root/Packages.dump || db4_load /var/lib/rpm/Packages < /root/Packages.dump
# 8) 최종 재구성
rpm --rebuilddb -v
rpm -qa | wc -l
- 의미: 손상된 BDB 파일을 덤프 후 재적재 → 구조 복원.
4) 완전 파손 시(최후의 수단)
# 9) 새 DB 초기화 (DB가 전혀 동작하지 않을 때)
mv /var/lib/rpm /var/lib/rpm.broken.$(date +%s)
mkdir /var/lib/rpm
rpm --initdb
# (가능하면) 설치되어 있던 패키지 헤더를 재주입해야 하나,
# 구형 시스템/미러 단절 환경에서는 현실적으로 어렵습니다.
# 따라서 이 단계는 최후의 수단으로만 고려하세요.
5) 트랜잭션 재시도 & 시스템 점검
# 10) 메타데이터/캐시 클린(해당 환경에 맞게)
# RHL9은 yum 미사용일 수도 있음. 있으면:
yum clean all || true
# 11) 패키지 검증
rpm -Va | tee /root/rpm-verify.txt
# 12) 재설치/업그레이드 재시도
rpm -Uvh yourpkg.rpm
중요: BDB 복구는 동일 메이저 버전의 db 유틸로 해야 안전합니다.
(예: db4로 만들어진 DB는 db4 계열 도구로 dump/load)
유형별 해결책 요약(체크리스트)
- rpmlib(FileDigests) 등 기능 미지원
- ✔ OS/아키 업그레이드(64bit, 최신 rpm/glibc).
- ✔ 불가 시: 에이전트리스(syslog/SSH) 전환.
- GPG 키 없음(NOKEY)
- ✔ (가능한 환경에서) 키 등록:
rpm --import <GPG-KEY>
- ✔
--nogpgcheck
지양(보안 정책상 금지 권장).
- ✔ (가능한 환경에서) 키 등록:
- 압축 포맷 미지원(xz/zstd)
- ✔ 최신 rpm으로 업그레이드해야만 해결.
- ✔ 구환경 유지 시 해당 패키지 설치 불가.
- 의존성/파일 충돌
- ✔ 가급적
yum
사용(자동 의존성). - ✔ 불가 시 충돌 패키지 제거/치환(업무 영향 분석 후).
- ✔
--force/--nodeps/--replacefiles
는 비상시에만(감사 리스크).
- ✔ 가급적
- rpm DB 손상
- ✔
rm -f /var/lib/rpm/__db.*
→rpm --rebuilddb
(2~3회). - ✔
db_dump -r
→db_load
→rpm --rebuilddb
. - ✔ 최후:
rpm --initdb
(백업 필수).
- ✔
보안 관점 운영 가이드
- EOL 자산 관리
- RHL9 같은 미지원 OS 목록화 → 격리 네트워크/최소 권한/접속 제어.
- 업그레이드 로드맵과 예산·리스크를 문서화.
- 무결성·서명 검증
- GPG 키 관리 정책 수립(키 출처/갱신/폐기).
rpm -K
(서명검증),rpm -Va
(무결성) 정기 수행.
- 패키지 변경 통제
--force/--nodeps
사용 금지(예외 승인제).- 변경 이력/승인·롤백 절차 확보(감사 대응).
- 로그 공백 방지
- 에이전트 설치 불가 자산 → syslog 포워딩 또는 Wazuh Agentless.
- 수집 실패 모니터링(“미수집 감시” 알림).
- 사고/장애 기록 표준화
- 오류 스크린샷·명령 로그·복구 단계·결과를 템플릿에 기록.
- 재발 방지 액션(업그레이드 계획/대체 경로) 포함.
RHL9에서 가능한 대안 예시(에이전트리스)
1) 전통 syslog로 중앙 전송(udp 514)
# /etc/syslog.conf
*.* @WAZUH_LOG_SERVER:514
# 적용
service syslog restart # 또는 /etc/init.d/syslog restart
- 보안: syslogd는 TCP/TLS 미흡. 내부망 한정 + 방화벽/ACL 필수.
(가능하면 중간 브리지 노드에 rsyslog/syslog-ng + TLS 구성)
2) Wazuh Agentless(SSH)
- Wazuh Manager가 RHL9에 SSH 접속 → 점검 스크립트 실행/파일 수집.
- 보안: 키 기반 인증,
from=
제한,ForceCommand
로 명령 제한.
자주 쓰는 명령 스니펫
- 패키지 요구사항/서명 확인
rpm -qp --requires ./pkg.rpm rpm -K ./pkg.rpm
- rpm DB 복구 3줄 요약
rm -f /var/lib/rpm/__db.* rpm --rebuilddb -v rpm -qa | head
- BDB 심화 복구
db_dump -r /var/lib/rpm/Packages > /root/Packages.dump mv /var/lib/rpm/Packages /var/lib/rpm/Packages.bad db_load /var/lib/rpm/Packages < /root/Packages.dump rpm --rebuilddb -v
- 파일 충돌 원인 파악
rpm -Uvh ./pkg.rpm 2>&1 | tee /root/rpm-install.log # 충돌 경로/소유 패키지 확인 rpm -qf /충돌/파일/경로
- RHL9에서는 Wazuh 4.x 설치 자체가 구조적으로 불가합니다.
- 설치 가능한 환경에서도 rpmdb 손상은 흔한 장애 원인 → 본 문서 절차로 안정 복구.
- 보안팀 기준: 서명 검증, 강제 옵션 금지, EOL 자산 격리/대체 수집, 문서화가 핵심입니다.
728x90
그리드형(광고전용)
댓글