Ключевые слова:stunnel, crypt, security, log, syslog, bsd, (найти похожие документы)
From: Сгибнев Михаил <http://dreamcatcher.ru>;
Date: Mon, 20 Mar 2005 18:21:07 +0000 (UTC)
Subject: Создание централизованного безопасного syslog сервера
Оригинал: http://dreamcatcher.ru/docs/secure_syslog.htmlhttp://www.sun.com/bigadmin/features/articles/syslog_ng.html?biga=15
Создание централизованного безопасного сервера регистрации событий с
использованием syslog-ng и Stunnel
Автор: Amy Rich, September, 2004
Перевод: Сгибнев Михаил
* Установка Stunnel
* Создание файлов сертификатов для syslog-ng поверх Stunnel
* Конфигурирование Stunnel для работы с syslog-ng
* Установка syslog-ng
* Конфигурирование syslog-ng
* Ресурсы
Администраторы UNIX-систем конечно знакомы с демоном syslog, но
собираемая им информация очень часто остается нерассмотренной. В
большой сети, где число машин достаточно велико, никто не может найти
время, чтобы разобраться с файлами журналов не то что каждый день, но
и хотябы раз в месяц. Скрипты для анализа данных, поступающих с разных
машин, сложны для написания и индивидуальны для каждой машины. Для
того чтобы облегчить бремя ручной и автоматической обработки журналов
многие сети огранизуют выделенный сервер регистрации событий,
собирающий данные для всех машин (желательно, чтобы на нем выполнялся
демон NTP для синхронизации времени) сети - UNIX, Windows и рабочих
станций Mac а также свичей и роутеров. Обеспечение централизованной
регистрации событий - занятие довольно тривиальное, если использовать
демон syslog ОС UNIX, но он не лишен некоторых недостатков.
Стандартный UNIX демон syslog принимает сообчения открытым текстом по
протоколу UDP, что может привести к перехвату данных кем угодно.
Модель facility.level довольно ограниченна и поставляемый по умолчанию
с большинством систем файл /etc/syslog.conf может накапливать в лог
довольно много интересной административной информации. Запись в лог
это тоже довольно сомнительный компромис между удобством чтения и
возможностью машинной обработки. Демон UNIX syslog не позволяет, для
примера, легко выделить из общей информации записи, соответсвующие
определенным регулярным выражениям. Поэтому на серверах регистрации
событий syslog ведет один общий файл и вся последующая обработка
ведется только после закрытия этого файла.
Поэтому в организациях, где используются выделенные серверы заменяют
стандартный syslog на белее безопасные и гибкие Metalog, msyslog и иже
с ними. Одной из популярных замен syslog является свободно
распространяемая программа, называемая syslog-ng. В организации может
выполнятся syslog-ng на каждой UNIX машине или только на специально
предназначенном для этого сервере. Если этот демон запущен только на
сервере, то клиенты посылают данные как обычно, по UDP на 514 порт, но
на сервере становится возможным более гибкое манипулирование и
организация логов.
Основная выгода от использования syslog-ng - возможность шифровать
канал передачи данных с помощью IPSec или утилиты Stunnel (http://www.stunnel.org/)
для того, чтобы предотвратить чтение данных случившимся неподалеку
сниффером. При использовании Stunnel в качестве транспортного
механизма организация имеет безопасный способ централизовать
журнальные сообщения от всех UNIX машин для дальнейшей обработки. В
случае syslog-ng, Stunnel работает принимая соединения демона на
локальный порт, и передает их по SSL на удаленный сервер регистрации
событий, где они соответственно расшифровываются и передаются на
стандартный порт демона syslog. А на сервере регистраций уже
используется гибкость syslog-ng для парсинга и организации журнальных
файлов.
В этой статье рассматривается настройка и установка syslog-ng и
Stunnel для машин, работающих под управлением Solaris 8 (SPARC
Platform Edition), но вся информация применима и для новых и для более
старых версий Solaris OS (Sparc или i386). На каждой рассматриваемой
здесь машине установлены OpenSSL, tcp wrappers, Solaris 8 /dev/urandom
patch, инструменты разработки GNU (gcc, и т.д.) и еще несколько
свободно распространяемых пакетов. Машина, выступающая сервером была
защищена, так как ей предстоит хранить связанную с защитой информацию
от всех машин на сети. Эти машины находятся в сети 192.168.1.0/24 и
адрес сервера регистрации 192.168.1.10.
Установка Stunnel
Первым шагом на пути создания безопасного лог-сервера будет
непосредственно установка Stunnel на сервере и клиентах. Stunnel может
использоваться и со стандартным демоном syslog (не заменяя его на
syslog-ng), но тогда мы не будем иметь необходимой гибкости. Как видно
ниже, Stunnel отконфигурирован и собран для работы под собственным
пользователем и в своем собственном каталоге с использованием chroot.
Для начала создадим пользователя и группу stunnel (UID и GID выбираем
произвольно):
/usr/sbin/groupadd -g 122 stunnel
/usr/sbin/useradd -c stunnel -d /nonexistent -m -g 122 -u 122 stunnel
Теперь берем архив Stunnel, распаковываем и конфигурируем. На машинах
сети сертификаты OpenSSL хранятся в /usr/local/etc/openssl/certs, и я
желаю провести установку в /usr/local. Также установим localstatedir в
/var/run/stunnel, так как необходимо и после перезагрузки обеспечить
работу только внутри своего каталога.
wget http://www.stunnel.org/download/stunnel/src/stunnel-4.05.tar.gz
tar zxf stunnel-4.05.tar.gz
cd stunnel-4.05
./configure --localstatedir=/var/run/stunnel \
--with-pem-dir=/usr/local/etc/openssl/certs --datadir=/usr/local
make
make install
Создание файлов сертификатов для syslog-ng поверх Stunnel
В процессе установки Stunnel создаются самоподписанные сертификаты,
которые Вы можете использовать. Так как у меня выполняется собственный
центр авторизации, то я запустил Stunnel тольео для работы с
syslog-ng, то я создаю и подписываю собственные syslog-ng-dedicated
сертификаты. Дополнительную информацию по установке собственного
центра авторизации и подписи сертификатов читайте SSL certificates
HOWTO (http://tldp.org/HOWTO/SSL-Certificates-HOWTO/).
примем, что у Вас установлен собственный CA или имеется подписанный
сертификат.
(Пр. пер. Это, конечно весьма большая натяжка. Врядли такая
возможность есть у большинства админов. Лучше использовать
самоподписанные сертификаты, созданные при установке Stunnel или если
есть большое желание, установить OpenCA (http://www.openca.org) - СА c web интерфейсом.
Только для установки его на OpenBSD мне пришлось долго плясать с
бубном, на другие системы не ставил.) Создаем файлы pem для сервера:
openssl req -new -days 3650 -nodes -config stunnel.cnf -out serverreq.pem \
-keyout syslog-ng-server.pem
Также создаем передаваемый файл pem для каждого клиента.
openssl req -new -days 3650 -nodes -config stunnel.cnf -out clientreq.pem \
-keyout syslog-ng-client.pem
Подписываем каждый pem на локальном или публичном СА. Я использую
sign.sh из комплекта apache mod_ssl.
sign.sh /tmp/serverreq.pem
sign.sh /tmp/client1req.pem
sign.sh /tmp/client2req.pem
sign.sh /tmp/client3req.pem
Результатом будет файл crt, содержащий сертификат для каждого
передаваемого файла pem. Для сервера требуется файл
syslog-ng-server.pem с приватным ключом и сертификатом (скопируйте его
из /tmp/serverreq.pem.crt). сервера:
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDSAJ0kULvKxIhFtz1ctXlDWY0CcTpIscEAXy90nAuwwvshji39
abZH5Z9PfTOoT/zO6ZyQ0lOJ2LzYcS/JQmR+4wLggf5yi8K3BrBIwaAHbfAya8C9
5g9oINTkjM5Y3zdkMhvPwmivMV+lBa07Qk0SZg8xYblUiafisQplGzjWvwIDAQAB
AoGAEqYzTlJNGwixAV/wdxc2maCOQTVE88e1WA8b68Mf1qa6HpS9yM9mfKQLrcd0
mvHfhZCBcur6uDcjLiV/FORsgB7/3wRF0a08ZJdwlMSn9844jeRlSDbEE1wqAcyj
pnHwcxnErzA0REDuD+EmH0xsh23/Rn/mv7gBpm5Am/UK86ECQQDs5RmiJzQOprsT
ArcTQq3VTmHLtfu7HAQ7+You7XDL+iOVOsbJZWgBKc0oTcNNBpJzkHPrvaOBbFpg
dQZKE3BLAkEA4vBLWsojb0tosXiZuFxzMBrcMhzanzzXerOt0v6BbeZKMTXMaJX+
/4wyVc6lanZc/793S4aHY0/VvCDMLp7y3QJBAKPnX3Tx6vK4KXddyY1p9RxAvylT
IHi1Sbif49DpAkIfL79wi1mM8AjeAzR/mUER6wJKT+orq5VAgsd6MH/QM0ECQHvw
YDclTlTqCjNiehGF7CLJiJiVyZBN2iDZIIWrGWS78KkPiKNVx/4owxS51v1dx0yl
dLF6t1Y1s7Ua9GhBxsECQD3+/khj/lzYUC9KaDIHItO7LHkO1IcxZUZJ0YNaukUB
v1Vh9B3IK5m2bSsOYtOYxbpjoHL8pZG1Bf1lLH32dqw=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICZDCCAc0CAQIwDQYJKoZIhvcNAQEEBQAwcTELMAkGA1UEBhMCVVMxFjAUBgNV
BAgTDU1hc3NhY2h1c2V0dHMxEDAOBgNVBAcTB0JldmVybHkxFTATBgNVBAoTDE9j
ZWFud2F2ZSBDQTEhMB8GCSqGSIb3DQEJARYScm9vdEBvY2VhbndhdmUuY29tMB4X
DTA0MDcxOTEzNTExNVoXDTA1MDcxOTEzNTExNVowgYMxCzAJBgNVBAYTAlVTMRYw
FAYDVQQIEw1NYXNzYWNodXNldHRzMRAwDgYDVQQHEwdCZXZlcmx5MSMwIQYDVQQK
ExpPY2VhbndhdmUgQ29uc3VsdGluZywgSW5jLjElMCMGA1UEAxMcbG9naG9zdC5v
ZmZpcdaub2NlYW53YXZlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
0gCdJFC7ysSIRbc9XLV5Q1mNAnE6SLHBAF8vdJwLsML7IY4t/Wm2R+WfT30zqE/8
zumckNJTidi82HEvyUJkfuMC4IH+covCtwawSMGgB23wMmvAveYPaCDU5IzOWN83
ZDIbz8JorzFfpQWtO0JNEmYPMWG5VImn4rEKZRs41r8CAwEAATANBgkqhkiG9w0B
AQQFAAOBgQAvaaoVvP267QbxBOeBDBeP3CCpOskT5YJUHWQE2QmH5wR/5iwQqvrU
Fo8V2JbaaauN9sa5CQutthUK1D3Ub+nHuHgGPFfdkL0Ll+5+LVf1swKXy8H1Q8CA
Aiq0dK0EJQ+taQTw+KD7MBOzIJk0OF76uwdNxgaATQEVjxi6M0MG5g==
-----END CERTIFICATE-----
Также требуется клиентский pem файл, syslog-ng-client.pem, содержащий
только сертификат (берем его из файла crt) от подписывающего CA и от
каждого клиента (в данном примере их три штуки).
-----BEGIN CERTIFICATE-----
MIIDJzCCApCgAwIBAgIBADANBgkqhkiG9w0BAQQFADBxMQswCQYDVQQGEwJVUzEW
MBQGA1UECBMNTWFzc2FjaHVzZXR0czEQMA4GA1UEBxMHQmV2ZXJseTEVMBMGA1UE
ChMMT2NlYW53YXZlIENBMSEwHwYJKoZIhvcNAQkBFhJyb290QG9jZWFud2F2ZS5j
b20wHhcNMDIwNjIzMjIyODIxWhcNMTIwNjIwMjIyODIxWjBxMQswCQYDVQQGEwJV
UzEWMBQGA1UECBMNTWFzc2FjaHVzZXR0czEQMA4GA1UEBxMHQmV2ZXJseTEVMBMG
A1UEChMMT2NlYW53YXZlIENBMSEwHwYJKoZIhvcNAQkBFhJyb290QG9jZWFud2F2
ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMSqIDhWZDLO2ptG9ebx
FUycmXoMNPCLWmsFgRBQKG5vgOQruX8jpXqHOFCxjhO4ZsSUWwd8eO4J/4A9kTao
VFzi4P63A8xyN92Gbh4BfvmFecDhLaoZ+5zMNclNOlom2Rda75Fj8iYhtSIrbOcq
Mc8KkRriG3+Hl6ptW0XibqznAgMBAAGjgc4wgcswHQYDVR0OBBYEFDlBMdhKkmEm
pQkan14xNA3a646MMIGbBgNVHSMEgZMwgZCAFDlBMdhKkmEmpQkan14xNA3a646M
oXWkczBxMQswCQYDVQQGEwJVUzEWMBQGA1UECBMNTWFzc2FjaHVzZXR0czEQMA4G
A1UEBxMHQmV2ZXJseTEVMBMGA1UEChMMT2NlYW53YXZlIENBMSEwHwYJKoZIhvcN
AQkBFhJyb290QG9jZWFud2F2ZS5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG
9w0BAQQFAAOBgQB8Xzn/UioFZV2Osyt0oz8/3Eu1GmQx4Cpaw4o7GBKg52IQA0Sv
qfvUmeuFZ6sSDYEI6bC/u6MkyvRwV7pOtqzUoGbvtGDhnFIxdiyiEOfZosdvadBx
ilXHU/tYDXffxFBcBoeoFHkYyX1vAY4uFsPBEywF3NBUGuoP5Ed5+AS+rQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICZTCCAc4CAQMwDQYJKoZIhvcNAQEEBQAwcTELMAkGA1UEBhMCVVMxFjAUBgNV
BAgTDU1hc3NhY2h1c2V0dHMxEDAOBgNVBAcTB0JldmVybHkxFTATBgNVBAoTDE9j
ZWFud2F2ZSBDQTEhMB8GCSqGSIb3DQEJARYScm9vdEBvY2VhbndhdmUuY29tMB4X
0510MDcxOTEzNTc0M1oXDTA1MDcxOTEzNTc0M1owgYQxCzAJBgNVBAYTAlVTMRYw
FAYDVQQIEw1NYXNzYWNodXNldHRzMRAwDgYDVQQHEwdCZXZlcmx5MSMwIQYDVQQK
ExpPY2VhbndhdmUgQ29uc3VsdGluZywgSW5jLjEmMCQGA1UEAxMdcmVhbHNvb24u
b2ZmaWNlLm9jZWFud2F2ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
AKKXR7OTQYKDWHvh0jCYSM2Y6gx+Lh2iE1hEVR4xE5UnGNv+/LzgGIYalmD86Vok
KkwdI+5cVp0JhF3gIUgL2+OoerE68AEQwv+tpzx4Px4Ze1pRjw9f6UW+17C3PICG
P4SpC6avMljj8lnv9Rmb300/Yz8ZzyAIzt8CjNu7lTCFAgMBAAEwDQYJKoZIhvcN
AQEEBQADgYEAleB5Xk0BnHu3g6ron5qcjBtDgnOnvzsX3v+KVaFGZiufdWtILCMn
58HrXCV2zoUlUcbnrqHgov47qvZBlh2HR7fT7MQYXFTKOFDXwCdSDfXHTUmmQHzq
cctX025yo45obGgI9LWDjip0/PW0k3r4IuVRtfOz+gHf1ZyEVjIuXkE=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICZDCCAc0CAQQwDQYJKoZIhvcNAQEEBQAwcTELMAkGA1UEBhMCVVMxFjAUBgNV
BAgTDU1hc3NhY2h1c2V0dHMxEDAOBgNVBAcTB0JldmVybHkxFTATBgNVBAoTDE9j
ZWFud2F2ZSBDQTEhMB8GCSqGSIb3DQEJARYScm9vdEBvY2VhbndhdmUuY29tMB4X
DTA0MDcxOTE0MTUwNloXDTA1MDcxOTE0MTUwNlowgYMxCzAJBgNVBAYTAlVTMRYw
FAYDVQQIEw1NYXNzYWNodXNldHRzMRAwDgYDVQQHEwdCZXZlcmx5MSMwIQYDVQQK
ExpPY2VhbndhdmUgQ29uc3VsdGluZywgSW5jLjElMCMGA1UEAxMcbGl6YXJkby5v
ZmZpY2Uub2NlYW53YXZlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
ogtXoF+49I/CoSP+CUZ4jX+pLMsIXvta/MqqKlTuvEgauRSw385Aict7rGIR6B3u
BUEBFN4Q+WzuYVJfbBMsUq/A6bilMpq/vbBrPAB9s/BkC5FAx2tMuMpgWn6ZXs/W
iRiEWULAHa4k7rgmonXk47r0bBuSVrozdgKd4u2iB6sCAwEAATANBgkqhkiG9w0B
AQQFAAOBgQBCCMhUdlfRk5owxpUIgtNLQ6/wfPgyUtIm7M4Mg0tHLD2ILCiaJLie
x+Di5+09nciadYxn7fZhFdvnSpsthDX0/P6/H/iLTZnyK3k0PegzYx8Mwo4mnS/X
Bt1cOuciRrd1tPHZ+st2Zqz/UO1jhbtEx7RNjtpxypChFQ2SB63wuA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICYzCCAcwCAQUwDQYJKoZIhvcNAQEEBQAwcTELMAkGA1UEBhMCVVMxFjAUBgNV
BAgTDU1hc3NhY2h1c2V0dHMxEDAOBgNVBAcTB0JldmVybHkxFTATBgNVBAoTDE9j
ZWFud2F2ZSBDQTEhMB8GCSqGSIb3DQEJARYScm9vdEBvY2VhbndhdmUuY29tMB4X
DTA0MDcxOTE0MTUyMFoXDTA1MDcxOTE0MTUyMFowgYIxCzAJBgNVBAYTAlVTMRYw
FAYDVQQIEw1NYXNzYWNodXNldHRzMRAwDgYDVQQHEwdCZXZlcmx5MSMwIQYDVQQK
ExpPY2VhbndhdmUgQ29uc3VsdGluZywgSW5jLjEkMCIGA1UEAxMbc2Vrcml0Lm9m
ZmljZS5vY2VhbndhdmUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDG
+OMOU6o3rCSyXMRRzwPKO/Yi9SjcT/5uwJh4x4a/iPlVNhbcG15PLpwmIiEvaKQe
PTwJNEWAMnDBWyT6bmdN9xa0X1pzCDiLGMKJ2PFzoL6b9VwQSx9zp9fTPinh+mVw
484Hf8nQOSs+HKVAltCvJWcFq04aqbauE817Og369wIDAQABMA0GCSqGSIb3DQEB
BAUAA4GBAJ6feAOv8bvGdk01QyupdIJVvp8IBv5ZJD1VLofoj/C4JYLsHWTV0IZI
rhw37hI9y9wAiiZVrbEM88N0FgFfHN2hoymvRmvg0Y7l7OuMQWz2vSMJYIyeI2Wb
uMWGN+klM77OxRXWseUOWaPp0RqW3MGqMV7+SU8sN9gVdEZdLxnj
-----END CERTIFICATE-----
Каждый клиент нуждается в его собственном сертификате и секретном
ключе в pem файле, syslog-ng-client.pem:
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCil0ezk0GCg1h74dIwmEjNmOoMfi4dohNYRFUeMROVJxjb/vy8
4BiGGpZg/OlaJCpMHSPuXFadCYRd4CFIC9vjqHqxOvABEML/rac8eD8eGXtaUY8P
X+lFvtewtzyAhj+EqQumrzJY4/JZ7/UZm99NP2M/Gc8gCM7fAozbu5UwhQIDAQAB
AoGAGhMErqm44cNKl2NZn+1sD3ysXCCIKLxrOcaLl/Hq4AqLFAzKX0fY5viwkRE+
IvSVy+sIbhtk0H5MOfnNnI46TwCvgelMbb8FtRDpZrwA7AgH9+scnjfpuibVZdoW
9fR2HoOOevffDU9ZfFlthsOKJp+xb7PRFcsxlV3ihla9aKkCQQDNt3gcE9goGyBj
kWkgB1Ydmov155xC1ozGpeyEVm3fGtD+sfgIxYuaV1xFhQKZMR2QeEnX3v5mqP31
zf5dnj47AkEAylVB95ZGvG91H4uUXrSW53djD2a5GtVjXNoDWLs7Hp7sbUkbRexa
5cSZ7EFqbyXHYx1xKMgYwqgIhbV1CU2gPwJAZBnMtkzpt8pLXmfZcZ5gRxN223eS
T+u6oMcIafTsjc2suOK8wPfvUHEGE0X/169QpYYC2KpHvIiq2zsbdU6VFQJAYibZ
yXFs/xxShOsBHrAcREz2ERKT2SCLAw//b5vkIgaWSq2cPV9a+PtWb/WL3D9Hah1u
N4pZ+JPrDnHoRIsToQJBAJ4IG4AAgIPkmIVbROXXpt/2YBbP1WQI1suKzWy6r4V4
E0fiwYh1REik4+WRCRBabzjFA7GIDiD2QQGzTa8m0nQ=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICZTCCAc4CAQMwDQYJKoZIhvcNAQEEBQAwcTELMAkGA1UEBhMCVVMxFjAUBgNV
BAgTDU1hc3NhY2h1c2V0dHMxEDAOBgNVBAcTB0JldmVybHkxFTATBgNVBAoTDE9j
ZWFud2F2ZSBDQTEhMB8GCSqGSIb3DQEJARYScm9vdEBvY2VhbndhdmUuY29tMB4X
0510MDcxOTEzNTc0M1oXDTA1MDcxOTEzNTc0M1owgYQxCzAJBgNVBAYTAlVTMRYw
FAYDVQQIEw1NYXNzYWNodXNldHRzMRAwDgYDVQQHEwdCZXZlcmx5MSMwIQYDVQQK
ExpPY2VhbndhdmUgQ29uc3VsdGluZywgSW5jLjEmMCQGA1UEAxMdcmVhbHNvb24u
b2ZmaWNlLm9jZWFud2F2ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
AKKXR7OTQYKDWHvh0jCYSM2Y6gx+Lh2iE1hEVR4xE5UnGNv+/LzgGIYalmD86Vok
KkwdI+5cVp0JhF3gIUgL2+OoerE68AEQwv+tpzx4Px4Ze1pRjw9f6UW+17C3PICG
P4SpC6avMljj8lnv9Rmb300/Yz8ZzyAIzt8CjNu7lTCFAgMBAAEwDQYJKoZIhvcN
AQEEBQADgYEAleB5Xk0BnHu3g6ron5qcjBtDgnOnvzsX3v+KVaFGZiufdWtILCMn
58HrXCV2zoUlUcbnrqHgov47qvZBlh2HR7fT7MQYXFTKOFDXwCdSDfXHTUmmQHzq
cctX025yo45obGgI9LWDjip0/PW0k3r4IuVRtfOz+gHf1ZyEVjIuXkE=
-----END CERTIFICATE-----
Каждый клиент также нуждается в pem файле, syslog-ng-server.pem,
содержащем сертификат сервера и подписанный СА.
-----BEGIN CERTIFICATE-----
MIIDJzCCApCgAwIBAgIBADANBgkqhkiG9w0BAQQFADBxMQswCQYDVQQGEwJVUzEW
MBQGA1UECBMNTWFzc2FjaHVzZXR0czEQMA4GA1UEBxMHQmV2ZXJseTEVMBMGA1UE
ChMMT2NlYW53YXZlIENBMSEwHwYJKoZIhvcNAQkBFhJyb290QG9jZWFud2F2ZS5j
b20wHhcNMDIwNjIzMjIyODIxWhcNMTIwNjIwMjIyODIxWjBxMQswCQYDVQQGEwJV
UzEWMBQGA1UECBMNTWFzc2FjaHVzZXR0czEQMA4GA1UEBxMHQmV2ZXJseTEVMBMG
A1UEChMMT2NlYW53YXZlIENBMSEwHwYJKoZIhvcNAQkBFhJyb290QG9jZWFud2F2
ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMSqIDhWZDLO2ptG9ebx
FUycmXoMNPCLWmsFgRBQKG5vgOQruX8jpXqHOFCxjhO4ZsSUWwd8eO4J/4A9kTao
VFzi4P63A8xyN92Gbh4BfvmFecDhLaoZ+5zMNclNOlom2Rda75Fj8iYhtSIrbOcq
Mc8KkRriG3+Hl6ptW0XibqznAgMBAAGjgc4wgcswHQYDVR0OBBYEFDlBMdhKkmEm
pQkan14xNA3a646MMIGbBgNVHSMEgZMwgZCAFDlBMdhKkmEmpQkan14xNA3a646M
oXWkczBxMQswCQYDVQQGEwJVUzEWMBQGA1UECBMNTWFzc2FjaHVzZXR0czEQMA4G
A1UEBxMHQmV2ZXJseTEVMBMGA1UEChMMT2NlYW53YXZlIENBMSEwHwYJKoZIhvcN
AQkBFhJyb290QG9jZWFud2F2ZS5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG
9w0BAQQFAAOBgQB8Xzn/UioFZV2Osyt0oz8/3Eu1GmQx4Cpaw4o7GBKg52IQA0Sv
qfvUmeuFZ6sSDYEI6bC/u6MkyvRwV7pOtqzUoGbvtGDhnFIxdiyiEOfZosdvadBx
ilXHU/tYDXffxFBcBoeoFHkYyX1vAY4uFsPBEywF3NBUGuoP5Ed5+AS+rQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICZDCCAc0CAQIwDQYJKoZIhvcNAQEEBQAwcTELMAkGA1UEBhMCVVMxFjAUBgNV
BAgTDU1hc3NhY2h1c2V0dHMxEDAOBgNVBAcTB0JldmVybHkxFTATBgNVBAoTDE9j
ZWFud2F2ZSBDQTEhMB8GCSqGSIb3DQEJARYScm9vdEBvY2VhbndhdmUuY29tMB4X
DTA0MDcxOTEzNTExNVoXDTA1MDcxOTEzNTExNVowgYMxCzAJBgNVBAYTAlVTMRYw
FAYDVQQIEw1NYXNzYWNodXNldHRzMRAwDgYDVQQHEwdCZXZlcmx5MSMwIQYDVQQK
ExpPY2VhbndhdmUgQ29uc3VsdGluZywgSW5jLjElMCMGA1UEAxMcbG9naG9zdC5v
ZmZpcdaub2NlYW53YXZlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
0gCdJFC7ysSIRbc9XLV5Q1mNAnE6SLHBAF8vdJwLsML7IY4t/Wm2R+WfT30zqE/8
zumckNJTidi82HEvyUJkfuMC4IH+covCtwawSMGgB23wMmvAveYPaCDU5IzOWN83
ZDIbz8JorzFfpQWtO0JNEmYPMWG5VImn4rEKZRs41r8CAwEAATANBgkqhkiG9w0B
AQQFAAOBgQAvaaoVvP267QbxBOeBDBeP3CCpOskT5YJUHWQE2QmH5wR/5iwQqvrU
Fo8V2JbaaauN9sa5CQutthUK1D3Ub+nHuHgGPFfdkL0Ll+5+LVf1swKXy8H1Q8CA
Aiq0dK0EJQ+taQTw+KD7MBOzIJk0OF76uwdNxgaATQEVjxi6M0MG5g==
-----END CERTIFICATE-----
Удостоверьтесь, что на каждой машине только root может читать файлы
сертификатов.
chmod 400 /usr/local/etc/openssl/certs/syslog-ng-*
chown root:other /usr/local/etc/openssl/certs/syslog-ng-*
Конфигурирование Stunnel для работы с syslog-ng
На сервере создайте файл конфигурации Stunnel ,
/usr/local/etc/stunnel/stunnel.conf, содержащий информацию по типу
нижеприведенной. В этом примере в файле определяются
сертификаты/ключи, сертификаты сервера, пользователь и группа stunnel,
каталог chroot. Значение verify, равное 3, говорит о том, что stunnel
будет проверять клиента с использованием локально установленных
сертификатов. Stunnel пропускает верификацию по умолчанию, поэтому
этот параметр необходимо задать явно. В заключительной части файла
конфигурации определяется порт для сессии SSL и IP:port, где
соединения будут приняты и перенаправлены. Порт 514 - это стандартный
порт syslog, а 5140 - свободен и был нами выбран случайно. Для
получения дополнительной информации и опций конфигурации обратитесь к
странице руководства man stunnel.
cert = /usr/local/etc/openssl/certs/syslog-ng-server.pem
CAfile = /usr/local/etc/openssl/certs/syslog-ng-client.pem
chroot = /var/run/stunnel
pid = /run/stunnel.pid
setuid = stunnel
setgid = stunnel
verify = 3
[5140]
accept = 192.168.1.10:5140
connect = 127.0.0.1:514
На каждом клиенте файл конфигурации
/usr/local/etc/stunnel/stunnel.conf содержит директивы, подобно файлу
конфигурации сервера. Значения cert, CAfile, accept и connect меняются
местами и добавляется директива client:
client = yes
cert = /usr/local/etc/openssl/certs/syslog-ng-client.pem
CAfile = /usr/local/etc/openssl/certs/syslog-ng-server.pem
chroot = /var/run/stunnel
pid = /run/stunnel.pid
setuid = stunnel
setgid = stunnel
verify = 3
[5140]
accept = 127.0.0.1:514
connect = 192.168.1.10:5140
Теперь Stunnel сконфигурирован и мы готовы к установке и
конфигурировании syslog-ng. Если Вы хотите проверить работу Stunnel,
или сконфигурировать для использования другого TCP порта или сервиса,
таких как IMAP или telnet, то обратитесь к stunnel examples
(http://www.stunnel.org/examples/).
Установка syslog-ng
Стабильная версия syslog-ng требует установки библиотеки libol
(http://www.campin.net/syslog-ng/faq.html#libol).
Скачиваем. распаковываем и устанавливаем, как указано ниже:
wget http://www.balabit.com/downloads/libol/0.3/libol-0.3.14.tar.gz
tar zxf libol-0.3.14.tar.gz
cd libol-0.3.14
./configure
make
make install
Теперь дело за получением исходников syslog-ng, распаковкой,
конфигурированием и установкой. При сборке мной также была добавлена
поддержка tcp wrappers, так как я активно использую это для других
демонов. (Пр.п - Что он активно использует - tcp wrappers или
syslog-ng со слов автора я не понял.)
wget http://www.balabit.com/downloads/syslog-ng/1.6/src/syslog-ng-1.6.5.tar.gz
tar zxf syslog-ng-1.6.5.tar.gz
cd ../syslog-ng-1.6.5
./configure --enable-tcp-wrapper
make
make install
Убедитесь, что лишние порты закрыты пакетным фильтром или tcp
wrappers. Сервер должен принимать соединения от клиентов на TCP 5140 и
UDP 514, если машина будет принимать нешифрованные сообщения syslog.
для поддержки расширенного синтаксиса tcp wrappers, добавтье в файл
/etc/hosts.deny сервера:
syslog-ng : LOCAL 127.0.0.1 192.168.1. : ALLOW
В клиентский файл /etc/hosts.deny:
syslog-ng : LOCAL 127.0.0.1 : ALLOW
Теперь создадим скрипт запуска stunnel/syslog-ng и назовем его
/etc/init.d/syslog-ng, для обеспечения автоматического старта после
перезагрузки. Этот скрипт базируется на скрипте syslog для Solaris 8
OS:
#!/sbin/sh
#
case "$1" in
'start')
if [ -f /usr/local/etc/syslog-ng/syslog-ng.conf -a -x \
/usr/local/sbin/syslog-ng ]; then
#
# Before syslogd starts, save any messages from previous
# crash dumps so that messages appear in chronological order.
#
/usr/bin/savecore -m
if [ -r /etc/dumpadm.conf ]; then
. /etc/dumpadm.conf
[ "x$DUMPADM_DEVICE" != xswap ] && \
/usr/bin/savecore -m -f $DUMPADM_DEVICE
fi
#
# Start stunnel so logs are sent encrypted
#
if [ -f /usr/local/etc/stunnel/stunnel.conf \
-a -x /usr/local/sbin/stunnel ]; then
echo "Starting stunnel"
mkdir -p /var/run/stunnel/run
chown stunnel:stunnel /var/run/stunnel/run
/usr/local/sbin/stunnel
echo "Starting syslog-ng"
/usr/local/sbin/syslog-ng
fi
fi
;;
'stop')
if [ -f /var/run/syslog-ng.pid ]; then
syspid=`/usr/bin/cat /var/run/syslog-ng.pid`
[ "$syspid" -gt 0 ] && kill -15 $syspid && \
echo "Killed syslog-ng"
fi
if [ -f /var/run/stunnel/run/stunnel.pid ]; then
syspid=`/usr/bin/cat /var/run/stunnel/run/stunnel.pid`
[ "$syspid" -gt 0 ] && kill -15 $syspid && \
echo "Killed stunnel"
fi
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
Необходимо удалить скрипты запуска и останова дефолтного демона syslog
и создать соответствующие ссылки на syslog-ng:
rm /etc/rc*.d/???syslog
ln -s /etc/init.d/syslog-ng /etc/rc0.d/K40syslog-ng
ln -s /etc/init.d/syslog-ng /etc/rc1.d/K40syslog-ng
ln -s /etc/init.d/syslog-ng /etc/rc2.d/S74syslog-ng
ln -s /etc/init.d/syslog-ng /etc/rcS.d/K40syslog-ng
Конфигурирование syslog-ng
Гибкость syslog-ng обусловлена файлом конфигурации. Конфигурационные
директивы манипулируют такими понятиями как source, filter,
destination и log. Директива source указывает на источник журнальных
сообщений - локальный или удаленный. Директива filter позволяет
разделять сообщения базируясь на параметрах уровень/приоритет, имя
программы, имя хоста или регулярное выражение. Директива destination
может быть файлом, каналом, потоком, UDP или TCP соединением, ttys или
программой. Директива log обьединяет source, filter и destination,
определяя как будет обработано журнальное сообщение. Описание всех
доступных директив может быть найдено в справочном руководстве
syslog-ng (http://www.balabit.com/products/syslog_ng/reference/book1.html)
или syslog-ng FAQ (http://www.campin.net/syslog-ng/faq.html).
В следующем примере приводится конфигурационный файл, сохраняющий логи
клиентских машин в /var/log и ведущий центральный лог в
/var/log/clients/$YEAR/$MONTH/$HOST. Нижеприведенный
/usr/local/etc/syslog-ng/syslog-ng.conf поддерживает сообщения с
локального хоста, хосты, криптованные по stunnel и обычные UDP хосты.
(маленькие роутеры и свичи не могут работать по stunnel).
# Options
options {
use_fqdn(yes);
sync(0);
keep_hostname(yes);
chain_hostnames(no);
create_dirs(yes);
};
# Sources of syslog messages (both local and remote messages on the server)
source s_local {
sun-streams("/dev/log" door("/etc/.syslog_door"));
internal();
};
source s_stunnel {
tcp(ip("127.0.0.1")
port(514)
max-connections(1));
};
source s_udp { udp(); };
# Level Filters
filter f_emerg { level (emerg); };
filter f_alert { level (alert .. emerg); };
filter f_crit { level (crit .. emerg); };
filter f_err { level (err .. emerg); };
filter f_warning { level (warning .. emerg); };
filter f_notice { level (notice .. emerg); };
filter f_info { level (info .. emerg); };
filter f_debug { level (debug .. emerg); };
# Facility Filters
filter f_kern { facility (kern); };
filter f_user { facility (user); };
filter f_mail { facility (mail); };
filter f_daemon { facility (daemon); };
filter f_auth { facility (auth); };
filter f_syslog { facility (syslog); };
filter f_lpr { facility (lpr); };
filter f_news { facility (news); };
filter f_uucp { facility (uucp); };
filter f_cron { facility (cron); };
filter f_local0 { facility (local0); };
filter f_local1 { facility (local1); };
filter f_local2 { facility (local2); };
filter f_local3 { facility (local3); };
filter f_local4 { facility (local4); };
filter f_local5 { facility (local5); };
filter f_local6 { facility (local6); };
filter f_local7 { facility (local7); };
# Custom Filters
filter f_user_none { not facility (user); };
filter f_kern_debug { filter (f_kern) and filter (f_debug); };
filter f_daemon_notice { filter (f_daemon) and filter (f_notice); };
filter f_mail_crit { filter (f_mail) and filter (f_crit); };
filter f_mesg { filter (f_kern_debug) or
filter (f_daemon_notice) or
filter (f_mail_crit); };
filter f_authinfo { filter (f_auth) or program (sudo); };
# Destinations: local files, the console, and the client files
destination l_authlog { file ("/var/log/authlog"); };
destination l_messages { file ("/var/log/messages"); };
destination l_maillog { file ("/var/log/maillog"); };
destination l_ipflog { file ("/var/log/ipflog"); };
destination l_imaplog { file ("/var/log/imaplog"); };
destination l_syslog { file ("/var/log/syslog"); };
destination l_console { file ("/dev/console"); };
destination r_authlog { file
("/var/log/clients/$YEAR/$MONTH/$HOST/authlog"); };
destination r_messages { file
("/var/log/clients/$YEAR/$MONTH/$HOST/messages"); };
destination r_maillog { file
("/var/log/clients/$YEAR/$MONTH/$HOST/maillog"); };
destination r_ipflog { file
("/var/log/clients/$YEAR/$MONTH/$HOST/ipflog"); };
destination r_imaplog { file
("/var/log/clients/$YEAR/$MONTH/$HOST/imaplog"); };
destination r_console { file
("/var/log/clients/$YEAR/$MONTH/$HOST/consolelog"); };
destination r_syslog { file
("/var/log/clients/$YEAR/$MONTH/$HOST/syslog"); };
destination r_fallback { file
("/var/log/clients/$YEAR/$MONTH/$HOST/$FACILITY-$LEVEL"); };
# Log statements
# Local sources
log { source (s_local); filter (f_authinfo) destination (l_authlog); };
log { source (s_local); filter (f_mail); destination (l_maillog); };
log { source (s_local); filter (f_local0); destination (l_ipflog); };
log { source (s_local); filter (f_local1); destination (l_imaplog); };
log { source (s_local); filter (f_syslog); destination (l_syslog); };
log { source (s_local); filter (f_emerg); filter (f_user_none);
destination (l_console); };
log { source (s_local); filter (f_mesg); filter (f_user_none);
destination (l_messages); };
# All sources, since we want to archive local and remote logs
log { source (s_local); source (s_stunnel); filter (f_authinfo);
destination (r_authlog); };
log { source (s_local); source (s_stunnel); filter (f_mail);
destination (r_maillog); };
log { source (s_local); source (s_stunnel); filter (f_local0);
destination (r_ipflog); };
log { source (s_local); source (s_stunnel); filter (f_local1);
destination (r_imaplog); };
log { source (s_local); source (s_stunnel); filter (f_syslog);
destination (r_syslog); };
log { source (s_local); source (s_stunnel); filter (f_emerg);
filter (f_user_none);
destination (l_console); };
log { source (s_local); source (s_stunnel); filter (f_mesg);
filter (f_user_none);
destination (l_messages); };
Для клиентского файла syslog-ng.conf фильтры остаются темиже самыми,
но все остальной изменяется.
# Options
options {
sync(0);
use_fqdn(yes);
};
# Sources of syslog messages (only local on clients)
source s_local {
sun-streams("/dev/log" door("/etc/.syslog_door"));
internal();
};
# Destinations: local files, the console, and the remote syslog server
destination l_authlog { file ("/var/log/authlog"); };
destination l_messages { file ("/var/log/messages"); };
destination l_maillog { file ("/var/log/maillog"); };
destination l_ipflog { file ("/var/log/ipflog"); };
destination l_imaplog { file ("/var/log/imaplog"); };
destination l_console { file ("/dev/console"); };
destination l_syslog { file ("/var/log/syslog"); };
destination stunnel { tcp ("127.0.0.1", port(514)); };
# Level Filters
filter f_emerg { level (emerg); };
filter f_alert { level (alert .. emerg); };
filter f_crit { level (crit .. emerg); };
filter f_err { level (err .. emerg); };
filter f_warning { level (warning .. emerg); };
filter f_notice { level (notice .. emerg); };
filter f_info { level (info .. emerg); };
filter f_debug { level (debug .. emerg); };
# Facility Filters
filter f_kern { facility (kern); };
filter f_user { facility (user); };
filter f_mail { facility (mail); };
filter f_daemon { facility (daemon); };
filter f_auth { facility (auth); };
filter f_syslog { facility (syslog); };
filter f_lpr { facility (lpr); };
filter f_news { facility (news); };
filter f_uucp { facility (uucp); };
filter f_cron { facility (cron); };
filter f_local0 { facility (local0); };
filter f_local1 { facility (local1); };
filter f_local2 { facility (local2); };
filter f_local3 { facility (local3); };
filter f_local4 { facility (local4); };
filter f_local5 { facility (local5); };
filter f_local6 { facility (local6); };
filter f_local7 { facility (local7); };
# Custom Filters
filter f_user_none { not facility (user); };
filter f_kern_debug { filter (f_kern) and filter (f_debug); };
filter f_daemon_notice { filter (f_daemon) and filter (f_notice); };
filter f_mail_crit { filter (f_mail) and filter (f_crit); };
filter f_mesg { filter (f_kern_debug) or
filter (f_daemon_notice) or
filter (f_mail_crit); };
filter f_authinfo { filter (f_auth) or program (sudo); };
# Log statements
# Log things locally
log { source (s_local); filter (f_authinfo); destination (l_authlog); };
log { source (s_local); filter (f_mail); destination (l_maillog); };
log { source (s_local); filter (f_local0); destination (l_ipflog); };
log { source (s_local); filter (f_local1); destination (l_imaplog); };
log { source (s_local); filter (f_syslog); destination (l_syslog); };
log { source (s_local); filter (f_emerg); filter (f_user_none);
destination (l_console); };
log { source (s_local); filter (f_mesg); filter (f_user_none);
destination (l_messages); };
# Log everything remotely via stunnel
log { source (s_local); destination (stunnel); };
Продвинутые пользователи могут включить в syslog-ng инструкции по
приему сообщений от принтеров, баз данных, вести почтовые логи. Также
полезным будет посылать критически важные сообщения в отдельный лог, с
тем чтобы можно было обеспечить его анализ в реальном масштабе времени
с использованием
swatch ftp://ftp.cert.dfn.de/pub/tools/audit/swatch/
logsurfer http://www.cert.dfn.de/eng/logsurf/
Log Tool http://xjack.org/logtool/
или Logwatch http://www.logwatch.org/
Возможности для автоматизирования процесса мониторинга
файлов журналов весьма обширны, так как вывод логов можно организовать
достаточно гибко.
Ресурсы
Software packages on the reference systems:
* OpenSSL http://www.openssl.org/
* A HOW-TO for SSL certificates http://tldp.org/HOWTO/SSL-Certificates-HOWTO/
* OpenSSL mailing lists http://www.openssl.org/support/
* tcp wrappers ftp://ftp.porcupine.org/pub/security/
* /dev/urandom patch for the Solaris 8 OS http://sunsolve6.sun.com/search/document.do?assetkey=112438
* GNU gcc http://gcc.gnu.org/
* GNU wget http://www.gnu.org/software/wget/wget.html
Stunnel resources:
* The latest Stunnel source code http://www.stunnel.org/download/stunnel/src/stunnel-4.05.tar.gz
* The Stunnel FAQ http://www.stunnel.org/faq/
* Some Stunnel examples http://www.stunnel.org/examples/
* The stunnel-users mail archive http://marc.theaimsgroup.com/?l=stunnel-users
syslog-ng resources:
* The syslog-ng home page http://www.balabit.com/products/syslog_ng/
* The latest libol source code
http://www.balabit.com/downloads/libol/0.3/libol-0.3.14.tar.gz
* The latest syslog-ng source code
http://www.balabit.com/downloads/syslog-ng/1.6/src/syslog-ng-1.6.5.tar.gz
* The syslog-ng reference manual
http://www.balabit.com/products/syslog_ng/reference/book1.html
* The syslog-ng FAQ
http://www.campin.net/syslog-ng/faq.html
* Support packages for syslog-ng
http://www.balabit.com/products/support/syslog-ng/
* The syslog-ng mail archive
https://lists.balabit.hu/pipermail/syslog-ng/
* The syslog-ng-announce mail archive
https://lists.balabit.hu/pipermail/syslog-ng-announce/
Real-time log parsing tools:
* swatch ftp://ftp.cert.dfn.de/pub/tools/audit/swatch/
* logsurfer http://www.cert.dfn.de/eng/logsurf/
* Log Tool http://xjack.org/logtool/
* Logwatch http://www.logwatch.org/