설정하고 싶음주간또는달마다라이브 /var/log/audit/audit.log
파일을 다음과 같은 이름의 압축 파일로 저장합니다.audit_2020-05-05.log.gz
존재하다RHEL/센트OS 7.x하나 있나요?우아한기존 감사에서 다음 사항이 모두 발생하도록 하는 방법.conf문서?
그렇지 않으면 그것은최고간단히 루트 crontab 메소드를 실행하면 homebrew bash 쉘 스크립트가 실행됩니다.
service auditd stop
cp /var/log/audit/audit.log /var/log/audit/audit_<date>.log
service auditd start
gzip -9 /var/log/audit/audit_<date>.log
/etc/audit/
가능하다면 파일 범위 내에서 위의 작업을 수행하는 것을 선호하기 때문에 요청합니다. 하지만 저는 audit_<date>.log.gz
특정 파일 명명 규칙을 가진 파일이 매주/매월 표시되기를 강력히 원합니다.
최종 목표는 생성된 감사 로그 아카이브를 관리하는 안정적이고 강력한 방법입니다. 저장된 감사 로그 텍스트 파일 하나가 압축되지 않은 크기가 1GB 미만이 되도록 로그 저장/회전을 적절하게 조정하십시오. 또한 감사 로그를 잃어버리거나 audit.conf 설정에 따라 시스템을 단일 사용자 모드로 전환할 필요가 없습니다. 그러니 어쨌든더 나은 것내가 현재 듣고 싶어하는 것보다 훨씬 나아졌습니다.
답변1
max_log_file
기본적으로 Red Hat Enterprise Linux의 모든 버전에서 auditd는 로그 파일이 설정에 따라 결정된 특정 크기 auditd.conf
(기본값은 6MB)에 도달하면 자동으로 회전합니다.
- 크기 기반 자동 회전을 시간 기반 자동 회전으로 대체
다음을 위해 /etc/audit/auditd.conf에서 회전을 비활성화합니다.
max_log_file_action = ignore
- 다음 중 하나를 수행하여 auditd에 자체 재구성(변경 사항 적용)을 지시합니다.
Kill -HUP $(pidofauditd) (모든 버전)
systemctl 다시 로드 감사(RHEL7)
서비스 감사 다시 로드(RHEL6 이하)
- auditd 회전을 수동으로 트리거하려면 USR1 신호를 수신해야 합니다.
일일 교체를 위한 간단한 솔루션: auditd.cron을 cron.daily에 복사하세요.
~]# cp /usr/share/doc/audit-*/auditd.cron /etc/cron.daily
~]# chmod +x /etc/cron.daily/auditd.cron
~]# cat /etc/cron.daily/auditd.cron
#!/bin/sh
##########
# This script can be installed to get a daily log rotation
# based on a cron job.
##########
/sbin/service auditd rotate
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t auditd "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
로그 압축 구현
auditd는 로그 압축을 지원하지 않지만 위 스크립트를 업데이트하여 이전 audit.log.n 파일의 이름을 바꾸고 압축하는 것은 간단합니다. 데모용으로 실제 예제가 제공됩니다.
크기 기반 자동 회전을 비활성화하려면 위 단계를 따르세요.
이전에 생성된 스크립트를 다음 코드로 바꿉니다.
#!/bin/bash
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
FORMAT="%F_%T" # Customize timestamp format as desired, per `man date`
# %F_%T will lead to files like: audit.log.2015-02-26_15:43:46
COMPRESS=gzip # Change to bzip2 or xz as desired
KEEP=5 # Number of compressed log files to keep
ROTATE_TIME=5 # Amount of time in seconds to wait for auditd to rotate its logs. Adjust this as necessary
rename_and_compress_old_logs() {
for file in $(find /var/log/audit/ -name 'audit.log.[0-9]'); do
timestamp=$(ls -l --time-style="+${FORMAT}" ${file} | awk '{print $6}')
newfile=${file%.[0-9]}.${timestamp}
# Optional: remove "-v" verbose flag from next 2 lines to hide output
mv -v ${file} ${newfile}
${COMPRESS} -v ${newfile}
done
}
delete_old_compressed_logs() {
# Optional: remove "-v" verbose flag to hide output
rm -v $(find /var/log/audit/ -regextype posix-extended -regex '.*audit\.log\..*(xz|gz|bz2)$' | sort -n | head -n -${KEEP})
}
rename_and_compress_old_logs
service auditd rotate
sleep $ROTATE_TIME
rename_and_compress_old_logs
delete_old_compressed_logs
필요에 따라 FORMAT
, COMPRESS
및 의 설명을 수정합니다.KEEP
스크립트가 실행 가능으로 표시되어 있는지 확인하고 원하는 시간에 cron에 의해 호출되도록 설정하십시오(일반적인 cron 작업을 통해 또는 위에 표시된 대로 cron.daily에 넣어서).