В этой статье я опишу процесс настройки трансляции логов на удаленную машину. Это позволяет повысить общую безопасность системы за счет того, что злоумышленник не сможет скрыть следы своего пребывание путем очистки лог файлов.
Нам понадобятся две машины с rsyslogd, рассказывать я буду на примере ubuntu 10.04, в которой этот пакет является менеджером лог-файлов по умолчанию.
Базовая настройка логов
Первичная настройка системы логгирования очень простая.
В конфиг-файл вносятся правила вида
сервис.уровень_важности_сообщения действие
Под действием может пониматься одно из следующих:
- Вывод в стандартный файл (/absolute/file/path;output_format_)
- Именованный канал ( |named_pipe )
- Вывод на терминал или консоль ( tty_name )
- Пересылка на удаленную машину ( :type:remote_host:port
- Вывод определнному пользователю (если он залогинен) (username,username2…)
- Вывод всем залогиненным пользователям (*)
- Отбросить (~)
- Выполнить скрипт (^script-name)
Для более подбробной информации рекомендую прочитать
http://linux.die.net/man/5/rsyslog.conf
http://linux.die.net/man/8/rsyslogd
Из этого всего нас заинтересует в основном пересылка логов на удаленную машину. Остальные настройки можно настроить по своему вкусу.
Доставка без подтверждения
Чтобы отослать все логи на удаленную машину нам лишь надо добавить правило
*.* @remotehost:port
На удаленном сервере надо подключить модуль imudp
$ModLoad imudp $UDPServerRun 514
Это подключит модуль и заставит удаленный сервер слушать 514 порт (стандартный) на предмет поступающих логов.
Подключение по UDP не устанавливает соединение, пакеты просто отсылаются на удаленную машину без любой проверки на успех доставки.
Доставка с установлением соединения
Для того, чтобы убедиться хотя бы в успехе доставки отдельных пакетов, можно воспользоваться соединением tcp.
На удаленной машине
$ModLoad imtcp $TCPServerRun 514
на сервере логов
*.* @@remotehost:port
Это обеспечивает большую надежность доставки, но все равно не дает гарантии успеха.
Надежная доставка
Чтобы обеспечить гарантированную доставку лог файлов есть специальный модуль relp (Reliable Protocol).
На удаленной машине
$ModLoad imrelp $RelpServerRun 514
На сервер логов
*.* :omrelp:remotehost:port
Это обеспечит надежную доставку всех логов локальной машины на удаленный сервер для их последующего анализа.