# CIS Benchmark - Logrotate Configuration
# Implements CIS Debian Benchmark Section 4.2.1.3

# Rotate daily
daily

# Keep logs for 365 days (CMMC/FedRAMP requirement)
rotate 365

# Create new log files
create

# Compress old logs
compress

# Use gzip compression
compresscmd /usr/bin/gzip

# Uncompress with gunzip
uncompresscmd /usr/bin/gunzip

# Compression options
compressoptions -9

# Don't compress if recent
delaycompress

# Don't compress empty logs
notifempty

# Don't rotate if missing
missingok

# Rotate if size exceeds 100M
size 100M

# ============================================================================
# Specific Log Rotation Rules
# ============================================================================

# System logs
/var/log/auth.log
/var/log/kern.log
/var/log/syslog
/var/log/messages
/var/log/debug
/var/log/user.log
{
    rotate 90
    daily
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root adm
    sharedscripts
    postrotate
        systemctl reload rsyslog > /dev/null 2>&1 || true
    endscript
}

# Security logs (keep longer for compliance)
/var/log/audit/audit.log
/var/log/security.log
/var/log/access.log
/var/log/change.log
/var/log/admin.log
{
    rotate 365
    daily
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root adm
    sharedscripts
    postrotate
        systemctl reload auditd > /dev/null 2>&1 || true
        systemctl reload rsyslog > /dev/null 2>&1 || true
    endscript
}

# Sudo logs
/var/log/sudo.log
{
    rotate 365
    monthly
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root adm
}

# Firewall and network logs
/var/log/firewall.log
/var/log/wireguard.log
/var/log/network.log
{
    rotate 90
    daily
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root adm
}

# Cron logs
/var/log/cron.log
{
    rotate 60
    weekly
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root adm
}

# Boot logs
/var/log/boot.log
{
    rotate 30
    weekly
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root adm
}

# Package manager logs
/var/log/dpkg.log
/var/log/apt/
{
    rotate 90
    monthly
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root adm
}

# System startup/shutdown logs
/var/log/wtmp
{
    rotate 30
    monthly
    compress
    missingok
    notifempty
    create 0644 root utmp
}

# Failed login attempts
/var/log/btmp
{
    rotate 90
    monthly
    compress
    missingok
    notifempty
    create 0640 root utmp
}

# Last login logs
/var/log/lastlog
{
    rotate 30
    monthly
    compress
    missingok
    notifempty
    create 0640 root utmp
}
