Rsyslog via TLS

J'ai essayé de faire en sorte que rsyslog transmette par TLS sans chance jusqu'à présent.

Il semble y avoir quelque chose qui ne fonctionne pas avec ma configuration, mais je ne peux pas l'identifier.

Ceci est mon file conf du server:

# rsyslog v5 configuration file # For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html # If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html #### MODULES #### $ModLoad imuxsock # provides support for local system logging (eg via logger command) $ModLoad imklog # provides kernel logging support (previously done by rklogd) $ModLoad immark # provides --MARK-- message capability $ModLoad imgssapi # provides GSSAPI syslog reception # Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 10514 $InputTCPServerStreamDriverMode 1 # run driver in TLS-only mode $InputTCPServerStreamDriverAuthMode anon # client is NOT authenticated # make gtls driver the default $DefaultNetstreamDriver gtls # certificatee files $DefaultNetstreamDriverCAFile /etc/pki/tls/private/ca-cert.pem $DefaultNetstreamDriverCertFile /etc/pki/tls/private/rslserver-cert.pem $DefaultNetstreamDriverKeyFile /etc/pki/tls/private/rslserver-key.pem # specify senders you permit to access $AllowedSender TCP, 127.0.0.1, 10.111.1.0/24, *.evoltek.test.com #add: define logfiles ## /var/log/secure $template Auth_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.secure" ## /var/log/messages $template Msg_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.messages" ## /var/log/maillog $template Mail_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.maillog" ## /var/log/cron $template Cron_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.cron" ## /var/log/spooler $template Spool_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.spooler" ## /var/log/boot.log $template Boot_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.boot.log" ## emergency messages "*.emerg" $template Emerg_log,"/var/log/secure.d/%fromhost%/%$year%-%$month%.emerg" #### GLOBAL DIRECTIVES #### # Use default timestamp format $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # Include all config files in /etc/rsyslog.d/ $IncludeConfig /etc/rsyslog.d/*.conf #### RULES #### # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none;cron.none -?Msg_log # The authpriv file has ressortingcted access. authpriv.* -?Auth_log # Log all the mail messages in one place. mail.* -?Mail_log # Log cron stuff cron.* -?Cron_log # Everybody gets emergency messages *.emerg -?Emerg_log # Save news errors of level crit and higher in a special file. uucp,news.crit -?Spool_log # Save boot messages also to boot.log local7.* -?Boot_log 

Et c'est le file conf du client:

 # rsyslog v5 configuration file # certificatee files $DefaultNetstreamDriverCAFile /etc/pki/tls/private/ca-cert.pem $DefaultNetstreamDriverCertFile /etc/pki/tls/private/rslclient-cert.pem $DefaultNetstreamDriverKeyFile /etc/pki/tls/private/rslclient-key.pem $ModLoad imuxsock.so $ModLoad imklog.so $ModLoad imtcp $DefaultNetstreamDriver gtls $ActionSendStreamDriverAuthMode anon $ActionSendStreamDriverMode 1 # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has ressortingcted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* -/var/log/maillog # Log cron stuff cron.* /var/log/cron # Everybody gets emergency messages *.emerg * # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler # Save boot messages also to boot.log local7.* /var/log/boot.log *.* @@10.111.1.151:10514 

J'ai créé les certificates suivant ce guide: http://kb.kristianreese.com/index.php?View=entry&EntryID=148

Mon environnement de test n'a pas de FQDN, donc j'ai laissé les champs DNs et les FQDN et j'ai rempli le champ IP.

3 Solutions collect form web for “Rsyslog via TLS”

Dans CentOS / RedHat, vous devez également activer le port SSL rsyslog dans SElinux. Quelque chose comme le semanage port -a -t syslogd_port_t -p tcp 10514 devrait faire l'affaire.

Vous pouvez vérifier votre port syslog actuel avec sudo semanage port -l| grep syslog sudo semanage port -l| grep syslog

Aussi, vous pouvez essayer, exécuter rsyslog en mode debugging, pour voir ce qui se passe: Arrêtez le démon rsyslog, puis

export RSYSLOG_DEBUGLOG="/path/to/debuglog"

export RSYSLOG_DEBUG="Debug"

commencez maintenant rsyslog avec:

rsyslogd -dn

Pour vérifier si la syntaxe utilisée est une utilisation valide:

rsyslogd -N 1

Je n'ai pas trouvé de configuration de travail pour rsyslog 5.8 (à partir de repos de CentOS).

J'ai installé plutôt les returns officiels de rsyslog et j'ai enregistré rsyslog 7.6.0 en quelques minutes avec cette configuration.

Rsyslog 5.8 avec Centos 6.9 fonctionne pour moi

https://www.youtube.com/watch?v=pgcdHmsfmJM&t=3s

Créez les certificates sur l'autorité de certificateion (autorité de certificateion)

 sudo mkidr /etc/ssl/rsyslog/ cd /etc/ssl/rsyslog/ 

Installez gnutls-utils

 sudo yum install -y gnutls-utils 

Générer une key privée CA (PROTÉGEZ CETTE CHÈQUE!)

 sudo certtool --generate-privkey --outfile CA-key.pem sudo chmod 400 CA-key.pem 

Générer une key publique de l'autorité de certificateion

 sudo certtool --generate-self-signed --load-privkey CA-key.pem --outfile CA.pem Common name: CA.EXAMPLE.COM The certificatee will expire in (days): 3650 Does the certificatee belong to an authority? (Y/N): y Will the certificatee be used to sign other certificatees? (Y/N): y Will the certificatee be used to sign CRLs? (y/N): y 

Créer une key privée SERVERS sur l'autorité de certificateion (autorité de certificateion)

 sudo certtool --generate-privkey --outfile SERVER-key.pem --bits 2048 

Créer la request de certificate pour le SERVEUR

 sudo certtool --generate-request --load-privkey SERVER-key.pem --outfile SERVER-request.pem Common name: SERVER.EXAMPLE.COM 

Signez la key SERVER et permettez aux paires de keys de faire confiance aux autres servers

 sudo certtool --generate-certificatee --load-request SERVER-request.pem --outfile SERVER-cert.pem --load-ca-certificatee CA.pem --load-ca-privkey CA-key.pem The certificatee will expire in (days): 1000 Is this a TLS web client certificatee? (Y/N): y Is this also a TLS web server certificatee? (y/N): y Enter a dnsName of the subject of the certificatee: SERVER.EXAMPLE.COM 

Créer une key privée CLIENT sur l'autorité de certificateion (autorité de certificateion)

 sudo certtool --generate-privkey --outfile CLIENT-key.pem --bits 2048 

Créer une request de certificate pour CLIENT

 sudo certtool --generate-request --load-privkey CLIENT-key.pem --outfile CLIENT-request.pem Common name: CLIENT.EXAMPLE.ORG 

Signez la key CLIENT et permettez aux paires de keys de faire confiance aux autres servers

 sudo certtool --generate-certificatee --load-request CLIENT-request.pem --outfile CLIENT-cert.pem --load-ca-certificatee CA.pem --load-ca-privkey CA-key.pem The certificatee will expire in (days): 1000 Is this a TLS web client certificatee? (Y/N): y Is this also a TLS web server certificatee? (y/N): y Enter a dnsName of the subject of the certificatee: CLIENT.EXAMPLE.ORG 

Supprimer les keys de request

 sudo rm *-request.pem 

Scp SERVER private / key et CA.pem à SERVER.EXAMPLE.COM Copiez les certificates avec scp ou un USB crypté

 sudo -u root scp -i ~/.ssh/id_rsa CA.pem SERVER-* root@172.16.9.30:/etc/ssl/rsyslog/ 

Scp CLIENT privé / key et le CA.pem à CLIENT.EXAMPLE.COM

 sudo -u root scp -i ~/.ssh/id_rsa CA.pem CLIENT-* root@172.16.9.40:/etc/ssl/rsyslog/ 

Installez le pilote Gtls sur SERVEUR et CLIENT

 sudo yum install rsyslog-gnutls -y 

Configurer le SERVEUR

 sudo vi /etc/rsyslog.d/rsyslog-tls.conf # Add # Listen for TCP $ModLoad imtcp # Set gtls driver $DefaultNetstreamDriver gtls # Certs $DefaultNetstreamDriverCAFile /etc/ssl/rsyslog/CA.pem $DefaultNetstreamDriverCertFile /etc/ssl/rsyslog/SERVER-cert.pem $DefaultNetstreamDriverKeyFile /etc/ssl/rsyslog/SERVER-key.pem # Auth mode $InputTCPServerStreamDriverAuthMode x509/name # Only allow EXAMPLE.COM domain $InputTCPServerStreamDriverPermittedPeer *.EXAMPLE.COM # Only use TLS $InputTCPServerStreamDriverMode 1 # Listen on port 6514 # If you want to use other port configure selinux $InputTCPServerRun 6514 

Ouvrez le port 6514 sur votre pare-feu

 sudo vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 6514 -j ACCEPT sudo /etc/init.d/iptables reload 

Redémarrez le démon rsyslog

 sudo /etc/init.d/rsyslog restart 

Configurer CLIENT

 sudo vi /etc/rsyslog.d/rsyslog-tls.conf # Add # Set gtls driver $DefaultNetstreamDriver gtls # Certs $DefaultNetstreamDriverCAFile /etc/ssl/rsyslog/CA.pem $DefaultNetstreamDriverCertFile /etc/ssl/rsyslog/CLIENT-cert.pem $DefaultNetstreamDriverKeyFile /etc/ssl/rsyslog/CLIENT-key.pem # Auth mode $ActionSendStreamDriverAuthMode x509/name # Only send log to SERVER.EXAMPLE.COM host $ActionSendStreamDriverPermittedPeer SERVER.EXAMPLE.COM # Only use TLS $ActionSendStreamDriverMode 1 # Forward everithing to SERVER.EXAMPLE.COM # If you use hostnames instead of IP configure DNS or /etc/hosts *.* @@SERVER.EXAMPLE.COM:6514 

Redémarrez le démon rsyslog

 sudo /etc/init.d/rsyslog restart 

Pour tester sur SERVER, exécutez tcpdump et envoyez des journaux du CLIENT

 sudo yum install tcpdump -y sudo tcpdump -i eth0 tcp port 6514 -X -s 0 -nn 
  • Configuration d'OpenLDAP sur TLS pour RHEL / CentOS 6.5
  • Comment forcer un propre ensemble de chiffres dans Postfix 2.11?
  • Comment puis-je utiliser des caractères generics pour sendmail TLS_Rcpt?
  • SHA-2 avec TLS inférieur à 1.1 ou inférieur
  • Dois-je activer TLS 1.0 dans Windows 2008 R2?
  • Postfix STARTTLS uniquement sur le port 25
  • Perfect Forward Secrecy (PFS) pour les servers de messagerie
  • TLS 1.1 avec Oracle HTTP Server?
  • Authentification de certificate client sans access aux keys privées
  • Connexion perdue après STARTTLS: Postfix
  • Postfix: Autoriser le courrier entrant non authentifié, mais seulement le courrier sortant authentifié?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.