Rsyslog - audit.log/omprog 변경 로그 값 구문 분석

Rsyslog - audit.log/omprog 변경 로그 값 구문 분석

proctitle의 16진수 부분을 ascii로 변환하기 위해 rsyslog를 사용하여 audit.log를 구문 분석하는 bash 스크립트를 사용하려고 합니다. 하지만 결과가 없습니다. audit_ascii.log 파일에 "proctitle" 값이 있는 줄이 없습니다. 스크립트를 테스트했는데 제대로 작동하므로 문제는 내 rsyslog.conf에서 발생한 것 같습니다.

rsyslog.conf:

$InputFileName /var/log/audit/audit.log
$InputFileTag tag_auditd:
$InputFileStateFile log_audit
$InputFileSeverity info
$InputFileFacility local6
$InputRunFileMonitor

if $msg contains "msg=audit" then {
action(type="omprog" binary="/bin/bash /opt/bin/hex2ascii.sh" output="/var/log/audit/audit_ascii.log")

16진수 2ascii

    #!/bin/bash
    read log
    
    hasHex=$(echo $log | egrep "msg=audit" | egrep "type=PROCTITLE" | egrep -v '"' | wc -c)
    
    if [ ${hasHex} -gt 0 ];
    then
        part1=$(echo $log | cut -d"=" -f1-3)
    
        part2=$(echo $log | cut -d"=" -f4)
        part2=$(echo $part2 | xxd -r -p )
        echo $part1 >> /var/log/audit/verif.txt 
        #echo "${part1}=${part2}\n" >> /var/log/audit/audit_ascii.log
        log="${part1}=${part2}\n"
    #else
        #echo $log >> /var/log/audit/audit_ascii.log
            
    fi

답변1

rsyslog에는 여러 내장 모듈이 있지만 그 중 일부는 내장되어 있지 않으며 사용하기 전에 로드해야 합니다.

사용 중인 모듈 imfile앞에는 다음 줄이 와야 합니다(이전 구문에서):

$ModLoad imfile

같은,오프로그모듈, 최신 구문을 사용하는 경우 필수

module(load="omprog")

진술에 사용되기 전에 if(결론이 부족함 }) 당신이 그것에서 얻을 것이다 오류 메시지를보십시오 rsyslogd -N 1.

답변2

스크립트가 변경된 로그를 다른 파일로 리디렉션한 후에 프로세스를 중지하면 됩니다. 그런 다음 새 파일을 rsyslog의 다른 입력으로 전달합니다. 내가 찾은 최고의 솔루션

관련 정보