logrotate / syslog rechte modifizieren

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
RobE
Beiträge: 59
Registriert: 10.04.2005 13:46:35

logrotate / syslog rechte modifizieren

Beitrag von RobE » 31.05.2005 23:41:31

Hallo,

ich möchte auf einem Server die Rechte der /var/log/syslog verändern. Ich nehme an, daß durch das rotieren der Logfiles die Rechte immer wieder zurcükgesetzt werden.

Bei meiner Suche im Forum fand ich diesen Beitrag: http://www.debianforum.de/forum/viewtopic.php?t=27574

Ich habe nun versucht, in die /etc/logrotate.conf einen Abschnitt einzufügen, der die Rechte entsprechend setzt:

Code: Alles auswählen

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

# system-specific logs may be configured here

/var/log/syslog {
    postrotate
        chmod 644 /var/log/syslog
    endscript
}
Den letzten Block (5 Zeilen) habe ich erfunden / angefügt ;-)

Keine Ahung ob das was bringt und ob der Ansatz richtig ist. Meiner Meinung nach sollte das dazu führen, daß die Dateirechte vom syslog nach dem Rotieren wieder auf 644 gesetzt werden.

Andererseits hab ich aber auch folgende Idee noch:

Code: Alles auswählen

/var/log/syslog {
    create 644
}
Kann man überhaupt so unvollständige Blöcke bilden mit nur einer Anweisung? Oder müssen immer alle Anweisungen in jedem Block stehen?

Wo nimmt er denn überhaupt die Anweisung her, daß er syslog rotieren soll? Da stand ja vorher nichts von syslog drin. Oder überschreibe ich womöglich die Einstellungen für syslog durch den neuen Block?

Danke für Eure Hilfe!

Benutzeravatar
RobE
Beiträge: 59
Registriert: 10.04.2005 13:46:35

Beitrag von RobE » 31.05.2005 23:45:00

Ist übrigens ein ganz normales Sarge-System, ohne irgendwelche Modifikationen, läuft mysql,php4,apache2 drauf.

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 01.06.2005 00:25:29

Hi RobE,

also wenn ich ein System angreifen wuerde, dann waeren die logfiles sicherlich eine der ersten Sachen die ich mit anschauen wuerde. Dort stehen immer interessante Sachen drin (manchmal sogar Passwoerter).
Du solltest also deine logfiles nicht weltweil lesbar machen, das ist ein grosses Sicherheitsloch!

Was moechtest du den durch die Veraenderung der Rechte machen?

Die Rechte und Eigentuemer eines logfiles andert man nicht per prerotate, sondern ueber create (schau mal in die ManPage von logrotate).

Und die Datei /var/log/syslog wird auch nicht von logrotate rotiert. Diese Datei wird von syslof mit Daten beliefert und wird auch von syslog rotiert ( durch /etc/cron.*/syslogd )

by, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Benutzeravatar
RobE
Beiträge: 59
Registriert: 10.04.2005 13:46:35

Beitrag von RobE » 01.06.2005 11:27:25

Ja das hab ich heute auch gemerkt, daß die Rechte nicht so gesetzt werden, wie ich es geplant hatte.

Und daß da Passwörter drinstehen, hat mich schon gestern gestört. Ich glaube du hast mich überzeugt, ich lasse das sein mit dem Rechte verstellen.

Mein Ziel war, daß ein Skript, das über geringere Rechte verfügt, überprüfen soll, ob gewisse böse Worte im syslog vorkommen.

Ich hatte schon 2 mal einen Vorfall auf dem Server da waren dann seitenweise nur "kernel bug" meldungen mit stack-dump im Syslog, und paar Stunden später ist er ganz zusammengebrochen. Damit ich das schneller merke mach ich Sms-Notruf.

Habe mir jetzt folgendes in eine Datei in /etc/cron.d gelegt:

Code: Alles auswählen

# jede Minute böse worte im syslog suchen

* * * * * root tail -n50 /var/log/syslog | egrep -i  "kernel|bug|mysql" | cut -c 1-24 | uniq >> /var/www/syslogerr.txt
Hoffe daß das nicht zu viele Resourcen braucht. Jedenfalls betrachte ich das als sicher. Erstens ist /var/www durch htaccess geschützt, kann niemand drauf. Und dann stehen da ja auch nur die Zeiten drin und der Servername (die ersten 24 Spalten aus den entsprechenden Zeilen im syslog).

Und dann machen andere Skripte mit niedrigeren Rechten weiter und überwachen das und lösen Notruf aus, wenn die Datei nicht leer ist.

PS: Danke für die Unterstützung!

Benutzeravatar
RobE
Beiträge: 59
Registriert: 10.04.2005 13:46:35

Rekursion

Beitrag von RobE » 01.06.2005 13:20:28

Sehr lustig :roll:

Natürlich werden die Cron-Befehle selbst auch ins Syslog geschriegen. Und da stehen die Worte, nach denen gesucht wird, auch drin.

Alarm gibt's also immer. Muß ich wohl noch was umbauen

Probiere es, indem ich die Stichworte etwas umbaue.

ug statt bug , [k]ernel statt kernel, [m]ysql statt mysql, so sollte es gehen.

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 01.06.2005 13:52:45

Du kannst auch einfach mit einem zweiten grep in der Zeile die Sachen von cron herausfiltern

Code: Alles auswählen

grep -v ...
Problematisch koennte das mit dem tail -n50 werden wenn man mehr als 50 Zeilen in einer Minute ausgegeben werden. Ausser den Wert hochzusetzen faellt mir da auch auch nix besseres ein...

by, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Benutzeravatar
RobE
Beiträge: 59
Registriert: 10.04.2005 13:46:35

Beitrag von RobE » 02.06.2005 16:58:04

Ah, das hat mir noch gefehlt, super!

Das mit den 50 Zeilen ist noch so die Frage, ob das nicht zu wenig ist, denn wenn der Fehler auftaucht, dann schreibt er massig ins logfile. Ansonsten hab ich nur so 10-20 Zeilen pro Minute. Werde mal hochrauben auf 200 Zeilen und dann mal abwarten :-)

Es stellte sich heraus, daß ich auch noch andere Vorkommen von "mysql" ("mysql.pl" wegen eines backup crons) herausfiltern mußte:

Code: Alles auswählen

* * * * * root tail -n200 /var/log/syslog|egrep -i  "kernel|bug|mysql" | egrep -v "egrep|mysql\.pl" | cut -c 1-24 | uniq >> /var/www/syslogerr.txt

Läuft soweit prima, habs getestet :-)

Danke und bis denne

Antworten