Настройка logrotate + доступ для сбора логов по SFTP

от автора

У меня стояла задача: настроить сжатие логов DNS сервера Unbound, с возможностью удобного сбора этих бэкапов в коллектор. Также требовалось ограничить права доступа, чтобы с коллектора можно было зайти только в дирректорию, где хранятся бэкапы логов. Указанные действия проводил на CentOS 7 Minimal и CentOS 6.6 Minimal.

1) Сперва создаем группу пользователей, для которой будет ограничен доступ только по SFTP:

groupadd sftpd 

2) Далее правим конфигурацию ssh:

vi /etc/ssh/sshd_config 

Требуется в самом конце закомментировать строку #Subsystem sftp /usr/libexec/openssh/sftp-server и ограничить доступ для группы пользователей sftpd только по SFTP и только в домашнюю директорию. Для этого нужно добавить в конце следующие строки:

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

Перезагружаем ssh:

service sshd restart 

3) Создаем пользователя dnslog, назначаем ему домашнюю папку и права на эту папку. Владелец должен быть root, никто другой не должен иметь прав на запись в эту папку, иначе ничего не получится:

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

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

4) Создаем папку, внутри домашней директории нашего пользователя, для которой у logrotate будут права на запись.

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

Доступ для коллектора организован, теперь можно подключиться по SFTP и проверить, что все работает. Далее настроим ротацию логов:

5) Создаем в папке /etc/logrotate.d/ файл, в котором будут прописаны настройки ротации наших логов.

vi /etc/logrotate.d/unbound_logrotate 

Настройки примерно такие:

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

Далее я установил время ротации через крон.

6) В файле crontab добавил следующую строку:

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

Ротация будет осуществляться каждый час в 23 минуты.

7) В папке /etc/cron.hourly/ создаем файл с любым именем, где пишем скрипт, который будет выполняться при наступлении времени ротации, с таким содержимым:

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

Вот и все. Логи будут автоматически складываться в папку /home/dnslog/logs/

Проверить настройки ротации можно командой:

logrotate -d /etc/logrotate.conf 

ссылка на оригинал статьи http://habrahabr.ru/post/274539/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *