Безопасность syslog: TLS, проверка сертификатов и подмена
Введение
Канал доставки логов — частая точка атаки. Шифрование и проверка подлинности защищают от перехвата, подмены и несанкционированного чтения.
Протоколы и угрозы
- UDP — без гарантий и шифрования; подмена и перехват тривиальны.
- TCP — доставка в пределах соединения; при разрыве — буферизация на клиенте.
- TLS поверх TCP — шифрование и аутентификация; защита от перехвата и MITM.
- RELP с TLS — прикладные подтверждения доставки плюс шифрование.
TLS: что настроить
- Сервер: валидный сертификат, закреплённый CA, проверка клиентских сертификатов по необходимости.
- Клиент: тот же CA, проверка hostname, запрет самоподписанных без pinning.
- Версии: TLS 1.2+; крепкие шифры; OCSP stapling; ротация сертификатов.
Защита от подмены
- Подписывайте сообщения (например, mmjson/mmnormalize с HMAC) при отсутствии TLS.
- Проверяйте целостность на приёмнике; отклоняйте сообщения без подписи или с неверной.
- Логируйте факты подмены и источник (IP, сертификат).
Мини-конфиг rsyslog с TLS
module(load="imtcp")
module(load="omfwd")
# Приём TCP+TLS
input(type="imtcp" port="6514"
tls="on"
tls.caCert="/etc/ssl/certs/ca.pem"
tls.myCert="/etc/ssl/certs/server.pem"
tls.myPrivKey="/etc/ssl/private/server-key.pem"
tls.authmode="x509/name"
tls.permittedpeer=["collector.internal"])
# Отправка TLS
action(type="omfwd"
target="collector.internal:6514"
protocol="tcp"
streamdriver="gtls"
streamdriver.mode="1"
streamdriver.authmode="x509/name"
streamdriver.permittedpeer=["collector.internal"]
queue.type="LinkedList"
queue.filename="q_fwd"
queue.size="100000"
action.resumeRetryCount="-1"
queue.saveonshutdown="on")
Чек-лист
- Включите TLS на всех плечах; проверьте hostname и цепочку сертификатов.
- Отключите слабый TLS и шифры; включите OCSP stapling.
- Включите дисковые очереди на источнике.
- Мониторьте ошибки рукопожатий и отклонения подписей.
- Тестируйте сценарии обрыва и подмены.