Konfigurieren Sie den Zugriff auf logrotate + SFTP-Protokollerfassung

Meine Aufgabe bestand darin, die Komprimierung der Protokolle des ungebundenen DNS-Servers zu konfigurieren und diese Sicherungen bequem im Collector zu sammeln. Außerdem mussten Zugriffsrechte eingeschränkt werden, damit der Collector nur in das Verzeichnis wechseln konnte, in dem die Protokollsicherungen gespeichert sind. Diese Aktionen wurden unter CentOS 7 Minimal und CentOS 6.6 Minimal ausgeführt.

1) Erstellen Sie zunächst eine Benutzergruppe, für die der Zugriff nur über SFTP beschränkt wird:

groupadd sftpd

2) Bearbeiten Sie als Nächstes die ssh-Konfiguration:

vi /etc/ssh/sshd_config

Ganz am Ende muss die Zeile #Subsystem sftp /usr/libexec/openssh/sftp-serverauskommentiert und der Zugriff auf die sftpd-Benutzergruppe nur über SFTP und nur auf das Basisverzeichnis beschränkt werden. Fügen Sie dazu am Ende die folgenden Zeilen hinzu:

Subsystem sftp internal-sftp
Match group sftpd
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Starten Sie ssh neu:

service sshd restart

3) Wir erstellen den dnslog-Benutzer, weisen ihm den Home-Ordner und die Rechte für diesen Ordner zu. Der Besitzer muss root sein, sonst sollte niemand Schreibrechte für diesen Ordner haben, sonst funktioniert nichts:

adduser -d /home/dnslog -s /sbin/nologin dnslog -g sftpd
passwd dnslog

chown root /home/dnslog
chmod 750 /home/dnslog

4) Erstellen Sie einen Ordner im Home-Verzeichnis unseres Benutzers, für den logrotate Schreibberechtigungen hat.

mkdir /home/dnslog/logs
chown dnslog /home/dnslog/logs
chmod 775 /home/dnslog/logs

Der Zugriff für den Collector ist organisiert. Jetzt können Sie eine Verbindung über SFTP herstellen und sicherstellen, dass alles funktioniert. Konfigurieren Sie als Nächstes die Rotation der Protokolle:

5) Erstellen Sie im Ordner /etc/logrotate.d/ eine Datei, in die die Einstellungen für die Rotation unserer Protokolle geschrieben werden.

vi /etc/logrotate.d/unbound_logrotate

Es gibt ungefähr folgende Einstellungen:

/var/log/unbound/unbound.log {    
    daily    
    rotate 48
    missingok
    notifempty
    compress
    olddir /home/dnslog/logs
    size 1024M
    postrotate
service rsyslog restart > /dev/null
unbound-control log_reopen #Переоткрываем файл логов, иначе лог не будет писаться после ротации
    endscript
}

Als nächstes stelle ich die Rotationszeit durch die Kronen ein.

6) In der Datei / etc / crontab wurde die folgende Zeile hinzugefügt: Und wir starten die Kronen neu:

23 * * * * root run-parts /etc/cron.hourly



service crond restart

Die Rotation wird jede Stunde in 23 Minuten durchgeführt.

7) Erstellen Sie im Ordner /etc/cron.hourly/ eine Datei mit einem beliebigen Namen, in der wir ein Skript mit folgendem Inhalt schreiben, das ausgeführt wird, wenn die Rotationszeit erreicht ist: Das ist alles. Protokolle werden automatisch zum Ordner / home / dnslog / logs / hinzugefügt. Sie können die Rotationseinstellungen mit dem folgenden Befehl überprüfen:

/usr/sbin/logrotate /etc/logrotate.conf






logrotate -d /etc/logrotate.conf


Beachten Sie außerdem, dass es in Unbound zwei Möglichkeiten der Protokollierung gibt: Verwendung von Unbound und durch Syslog. Die Verwendung von Syslog ist der beste Weg, da es Unbound nicht so sehr verlangsamt. In diesem Beispiel wird die Protokollrotation unter Verwendung von Ungebunden beschrieben. Um die Protokollierung über Syslog zu konfigurieren, müssen Sie den Parameter in der ungebundenen Konfiguration aktivieren:
use-syslog: yes

Schreiben Sie auch die Datei /etc/logrotate.d/unbound_logrotate ein wenig um
/var/log/messages {
    daily    
    rotate 48
    missingok
    notifempty
    compress
    size 1024M
    olddir /home/dnslog/logs
    create
    postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
chown dnslog /home/dnslog/logs/messages*
chmod 775 /home/dnslog/logs/messages*
    endscript
}

Jetzt auch beliebt: