Puncte:0

Logrotate Service Failure

drapel cn

My logrotate service failes. It complains about a duplicate entry for modsecurity.

 ● logrotate.service - Rotate log files
       Loaded: loaded (/lib/systemd/system/logrotate.service; static; vendor preset: enabled)
       Active: failed (Result: exit-code) since Tue 2021-06-08 14:22:07 CST; 2h 54min ago
         Docs: man:logrotate(8)
               man:logrotate.conf(5)
     Main PID: 15370 (code=exited, status=1/FAILURE)
    
    Jun 08 14:22:07 server1.example.com systemd[1]: Starting Rotate log files...
    Jun 08 14:22:07 server1.example.com logrotate[15370]: error: modsecurity:1 duplicate log entry for /var/log/apache2/modsec_audit.log
    Jun 08 14:22:07 server1.example.com logrotate[15370]: error: found error in file modsecurity, skipping
    Jun 08 14:22:07 server1.example.com systemd[1]: logrotate.service: Main process exited, code=exited, status=1/FAILURE
    Jun 08 14:22:07 server1.example.com systemd[1]: logrotate.service: Failed with result 'exit-code'.
    Jun 08 14:22:07 server1.example.com systemd[1]: Failed to start Rotate log files.

However, /etc/logrotate.d/modsecurity doesn't contain any duplicates:

/var/log/apache2/modsec_audit.log
{
        rotate 14
        daily
        missingok
        compress
        delaycompress
        notifempty
}

Any thought?

UPDATE:

#grep -r 'modsec_audit.log' /etc/

/etc/logrotate.d/modsecurity:/var/log/apache2/modsec_audit.log
/etc/modsecurity/modsecurity.conf:SecAuditLog /var/log/apache2/modsec_audit.log
/etc/modsecurity/modsecurity.conf-recommended:SecAuditLog /var/log/apache2/modsec_audit.log

So I went through:

 /etc/modsecurity/modsecurity.conf:SecAuditLog /var/log/apache2/modsec_audit.log
 /etc/modsecurity/modsecurity.conf-recommended:SecAuditLog /var/log/apache2/modsec_audit.log

and hashed out the modsec_audit.log values, as below

#SecAuditLogType Serial
#SecAuditLog /var/log/apache2/modsec_audit.log

then ran:
systemctl restart logrotate

Same error

UPDATE 2:

Following @Nikita Kipriyanov advice, I went through and completely hashed out /etc/logrotate.d/modsecurity and now logrotate executes successfully (all mdosec logs hashed out):

#systemctl status logrotate ● logrotate.service - Rotate log files Loaded: loaded (/lib/systemd/system/logrotate.service; static; vendor preset: enabled) Active: inactive (dead) since Thu 2021-06-10 09:36:53 CST; 52s ago Docs: man:logrotate(8) man:logrotate.conf(5) Process: 20308 ExecStart=/usr/sbin/logrotate /etc/logrotate.conf (code=exited, status=0/SUCCESS) Main PID: 20308 (code=exited, status=0/SUCCESS)

Jun 10 09:36:52 tester1.example.com systemd[1]: Starting Rotate log files...
Jun 10 09:36:53 tester1.example.com systemd[1]: logrotate.service: Succeeded.
Jun 10 09:36:53 tester1.example.com systemd[1]: Started Rotate log files.

So I enabled the original modsec_audit.log located at /etc/modsecurity/modsecuirty.confto see what would happen. Again, things seem to work correctly

systemctl status logrotate

● logrotate.service - Rotate log files Loaded: loaded (/lib/systemd/system/logrotate.service; static; vendor preset: enabled) Active: inactive (dead) since Thu 2021-06-10 09:54:05 CST; 4s ago Docs: man:logrotate(8) man:logrotate.conf(5) Process: 21452 ExecStart=/usr/sbin/logrotate /etc/logrotate.conf (code=exited, status=0/SUCCESS) Main PID: 21452 (code=exited, status=0/SUCCESS)

Jun 10 09:54:05 tester1.example.com systemd[1]: Starting Rotate log files... Jun 10 09:54:05 tester1.example.com systemd[1]: logrotate.service: Succeeded. Jun 10 09:54:05 tester1.example.com systemd[1]: Started Rotate log files.

Same story for /etc/modsecurity/modsecurity-recommended, meaning that the logrotate service only fails when I use
/etc/logrotate.d/modsecuirty and the collision has to be a wildcard as suggested by @Nikita Kipriyanov

Michael Hampton avatar
drapel cz
Găsiți celălalt fișier în care este definit.
Nikita Kipriyanov avatar
drapel za
Observați că intrarea duplicată poate fi un wildcard. Ar putea fi inutil să cauți exact „modsec_audit”. Acest lucru ar putea fi verificat prin dezactivarea fișierului *cunoscut* ofensator și dacă totul începe după aceea, atunci *există* o coliziune.
Maestro223 avatar
drapel cn
@NikitaKipriyanov Ai avut dreptate că coliziunea trebuie să fie un wildcard, am arătat munca în postarea de mai sus. Cum repar coliziunea?
Puncte:2
drapel za

Deci, dosarul /var/log/apache2/modsec_audit.log este configurat pentru a fi rotit de către /etc/logrotate.d/modsecurity și un alt fișier, care îl acoperă cu un wildcard. De exemplu, acesta ar putea fi definit ca /var/log/apache2/*log, care desigur include acest fișier. Nu știu ce alte fișiere de configurare logrotate aveți, dar sunt șanse mari să fie /etc/logrotate.d/apache2 sau ceva de genul are un wildcard.

De aceea /var/log/apache2/modsec_audit.log va fi rotit chiar dacă eliminați /etc/logrotate.d/modsecurity. Sau, mai bine, înlocuiți-l cu un fișier gol (sau un fișier cu doar un comentariu care conține un link către această întrebare SF și răspuns pentru a reține ușor ce sa întâmplat). Aceasta este cea mai simplă soluție în timp apropiat pentru o problemă. Altfel, poate doriți să eliminați /var/log/apache2/modsec_audit.log de a fi prins cu wildcard; nu există nicio modalitate de a seta excluderi la metacaracterele în logrotate, astfel încât veți ajunge să rescrieți metacaracterele, astfel încât să includă toate fișierele, cu excepția acestuia. Consider asta greoaie.

De asemenea, amintiți-vă, /etc/logrotate.d/modsecurity și celelalte configurații logrotate probabil au fost instalate de unele pachete de sistem de operare. Aceste fișiere vor fi reinstalate când actualizați acele pachete. În timp ce fișierul eliminat va fi pus din nou la loc, fișierul editat nu va fi. Protecția fișierului de configurare va începe și cel puțin veți avea o notificare despre configurația actualizată și solicitarea de a rezolva manual.Așadar, „creați un fișier gol” este considerat o editare și vă va economisi puțin păr.

Și, pentru a rezolva acest lucru complet și pentru totdeauna, ar trebui să descoperiți la ce pachete aparțin aceste fișiere în conflict și să introduceți o eroare în instrumentul de urmărire a erorilor distribuției dvs. Îi puteți convinge să repare pachetele astfel încât actualizările să nu conțină aceste fișiere sau aceste fișiere să nu se ciocnească, astfel încât nimic nu se întrerupe după actualizare.

Puncte:1
drapel us

Cel mai probabil aveți o intrare duplicat definită într-un alt fișier.
Verifica /etc/logrotate.conf fișier pentru duplicate, dacă nu există niciunul în această problemă de fișier

grep -rnw '/etc/logrotate.d/' -e 'modsec_audit.log'

pentru a găsi duplicate în alte fișiere.


Puteți încerca și să căutați înăuntru /etc/logrotate.d/rsyslog fişier:

grep 'modsec_audit.log' /etc/logrotate.d/rsyslog

S-ar putea să găsiți duplicate acolo.

Maestro223 avatar
drapel cn
Multumesc pentru raspuns. Sunt puțin confuz cu privire la cum să procedez pe baza rezultatului `grep -rnw '/etc/logrotate.d/' -e 'modsec_audit.log``, care este `/etc/logrotate.d/modsecurity:1:/ var/log/apache2/modsec_audit.log `
p10l avatar
drapel us
Mi-am editat răspunsul și am adăugat o altă modalitate de a găsi duplicate. Vezi dacă ajută.
p10l avatar
drapel us
De asemenea, `/etc/logrotate.conf` poate include și alte fișiere cu directiva `include`. Asigurați-vă că nu există duplicate în fișierele incluse.
Maestro223 avatar
drapel cn
Am adăugat rezultatul `#grep -r 'modsec_audit.log' /etc/` la postarea mea. Nu văd (sau nu înțeleg) unde ar putea fi un duplicat.
p10l avatar
drapel us
Ei bine, iată-l. Trei duplicate. Unul în `/etc/logrotate.d/modsecurity`, unul în `/etc/modsecurity/modsecurity.conf` și unul în `/etc/modsecurity/modsecurity.conf-recommended`. Eliminați două dintre acestea și reporniți serviciul logrotate.
Maestro223 avatar
drapel cn
La asta m-am gândit și eu, așa că am trecut prin hașul `modsec_audit.log` din cele două fișiere de jos enumerate mai sus, lăsând doar `/etc/logrotate.d/modsecurity:/var/log/apache2/modsec_audit.log `. Apoi a repornit serviciul logrotate... aceeași eroare :-/ Voi arăta lucrarea de mai sus, în câteva minute.
Maestro223 avatar
drapel cn
Să [continuăm această discuție în chat](https://chat.stackexchange.com/rooms/126251/discussion-between-yupthatguy-and-pawel-grondal).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.