Skip to content

Feature/csyslog tcp tls - #2293

Merged
atomicturtle merged 5 commits into
ossec:mainfrom
atomicturtle:feature/csyslog-tcp-tls
Aug 11, 2026
Merged

Feature/csyslog tcp tls#2293
atomicturtle merged 5 commits into
ossec:mainfrom
atomicturtle:feature/csyslog-tcp-tls

Conversation

@atomicturtle

Copy link
Copy Markdown
Member
  • Raise ossec-csyslogd alert assemble buffer from 2048 to OS_MAXSTR (6144) so long CEF/JSON/syslog payloads are not cut mid-field (Long syslog messages being truncated when forwarded by syslog_output to graylog. #1762).
  • Add optional protocol (udp|tcp), tls, tls_verify, and tls_ca on each <syslog_output> destination.
  • TCP uses RFC 6587 newline framing; TLS wraps TCP via OpenSSL (LIBOPENSSL_ENABLED) with peer/hostname (or IP) verification when tls_verify=yes.
  • Reconnect once on send failure; set keepalive and send/recv timeouts so a wedged collector does not stall the single-threaded daemon.
  • Docs companion: atomicturtle:ossec-docs:docs/csyslog-tcp-tls.

Related

ossec-csyslogd truncated forwarded alerts at 2048 bytes, cutting ~3KB Graylog
CEF payloads. Use OS_MAXSTR (6144) and harden field_add helpers (ossec#1762).
Allow ossec-csyslogd to forward alerts over TCP (newline framing) or
TLS with optional peer verification, addressing large CEF/JSON delivery
beyond UDP MTU limits (ossec#1762).

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends ossec-csyslogd’s syslog_output destinations to support larger outbound alert payloads and optional TCP/TLS transports, aiming to prevent truncation of long CEF/JSON/syslog messages and enable reliable forwarding over TCP/TLS.

Changes:

  • Increase csyslogd’s outbound alert assembly buffer from 2048 to OS_MAXSTR (OS_CSYSLOG_MAX).
  • Add per-destination transport options: protocol (udp/tcp), tls, tls_verify, tls_ca, with TCP/TLS connection/reconnect helpers.
  • Add OpenSSL-backed TLS client support (SNI + optional peer/hostname/IP verification) for syslog_output.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/os_csyslogd/main.c Switch pre-chroot connect flow to support UDP/TCP(+TLS) and log transport type.
src/os_csyslogd/csyslogd.h Introduce OS_CSYSLOG_MAX and transport helper prototypes; make send API mutable for reconnect state.
src/os_csyslogd/csyslogd.c Increase field assembly buffers and adjust truncation/append logic for larger messages.
src/os_csyslogd/alert.c Build outbound syslog/CEF/JSON/Splunk messages up to OS_CSYSLOG_MAX and send via new transport helper.
src/os_csyslogd/csyslog_send.c Implement connect/send/close helpers for UDP/TCP/TLS with retry and socket options.
src/os_csyslogd/csyslog_tls.h Declare TLS helper APIs gated by LIBOPENSSL_ENABLED.
src/os_csyslogd/csyslog_tls.c Implement TLS context creation, handshake, verification, and write retry logic via OpenSSL.
src/config/csyslogd-config.h Extend SyslogConfig with protocol/TLS settings and runtime TLS state pointers.
src/config/csyslogd-config.c Parse protocol/tls/tls_verify/tls_ca, enforce TLS⇒TCP, and initialize new config fields.
CHANGELOG.md Document TCP/TLS support and buffer increase.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/os_csyslogd/csyslog_send.c
Comment thread src/os_csyslogd/csyslog_tls.c Outdated
Comment thread src/os_csyslogd/csyslogd.c
Comment thread src/os_csyslogd/csyslog_send.c
Flatten embedded CR/LF before newline framing, cap TLS WANT_* waits to
~10s, create SSL_CTX before connect so CA loads survive chroot, and
guard field_add_truncated against size_t underflow.
Use non-blocking connect with a 10s poll deadline, guard field_add_truncate
size_t math, free multi-line logmsg, avoid mid-JSON truncation, and fix
cefescape early-return when no escaping is needed.
Start versioning the local testsuite harness and cover Ubuntu 26.04 LTS
alongside the existing distro Matrix for agent/server builds.
@atomicturtle
atomicturtle merged commit f0c98f7 into ossec:main Aug 11, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants