Usando o rsyslog com o TLS sem gerar um certificado autoassinado

3

Quase todos os guias que vi para usar o TLS com o rsyslog envolvem gerar um certificado auto-assinado e usá-lo. Se as caixas já estiverem configuradas com um certificado assinado legítimo, como você configura o cliente e o servidor para simplesmente usar isso?

    
por placeybordeaux 11.02.2015 / 17:25

2 respostas

3

Não há grande diferença em configurar isso se o seu certificado for "legit". Um certificado amplamente confiável é caracterizado por ter sua âncora de confiança (também conhecida como raiz ou certificado de CA) propagada no armazenamento de confiança do sistema operacional ou do navegador.

Suponha que você tenha server.example.com.key e server.example.com.csr . Sua CA envia de volta seu certificado, server.example.com.crt e tudo o que leva ao seu certificado, se a cadeia de confiança, por exemplo, ca.crt, intermedia1.crt, intermediate2.crt ou todos os certs concatenados em um como chain.crt. Alguns vão para client.crt e client.key . client.crt tem a mesma cadeia de confiança que o certificado do servidor.

A grande diferença para um certificado autoassinado na configuração é que você pode ter que incluir certificados intermediários no arquivo CA. Se os intermediários estão presentes no truststore de seu sistema, tudo que você precisa fazer é apontar o rsyslog (/etc/ssl/certs/ca-certificates.crt no Ubuntu, YMMV)

Os documentos ( aqui , aqui e aqui ) resumem bem como configurar o TLS:

A configuração do servidor é feita assim:

# make gtls driver the default
$DefaultNetstreamDriver gtls

# certificate files
$DefaultNetstreamDriverCAFile /path/to/chain.crt
$DefaultNetstreamDriverCertFile /path/to/server.example.com.crt
$DefaultNetstreamDriverKeyFile /path/to/server.example.com.key

$ModLoad imtcp # load TCP listener
$InputTCPServerStreamDriverAuthMode x509/name
$InputTCPServerStreamDriverPermittedPeer *.example.com
$InputTCPServerStreamDriverMode 1 # run driver in TLS-only mode
$InputTCPServerRun 10514 # start up listener at port 10514

A configuração do cliente deve ficar assim:

# certificate files
$DefaultNetstreamDriverCAFile /path/to/chain.crt
$DefaultNetstreamDriverCertFile /path/to/client.crt
$DefaultNetstreamDriverKeyFile /path/to/client.key

# set up the action
$DefaultNetstreamDriver gtls # use gtls netstream driver
$ActionSendStreamDriverMode 1 # require TLS for the connection
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer server.example.com
*.* @@(o)server.example.com:10514 # send (all) messages
    
por 11.02.2015 / 18:51
0

Se você tiver seus próprios certificados legítimos:

minhaempresa.ca

minhaempresa.crt

minhaempresa.key

No servidor:

Uncomment:

$ModLoad imtcp

Adicionar:

$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/ssl/certs/mycompany.ca
$DefaultNetstreamDriverCertFile /etc/ssl/certs/mycompany.crt
$DefaultNetstreamDriverKeyFile /etc/ssl/certs/mycompany.key
$InputTCPServerStreamDriverAuthMode anon
$InputTCPServerStreamDriverMode 1
$InputTCPServerRun 10514

No cliente:

$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/ssl/certs/mycompany.ca
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer *.mycompany.com
$ActionSendStreamDriverMode 1
*.* @@rsyslog_server.mycompany.com:10514 (or ip)

Reinicie o syslog

Para testar os resultados na execução do servidor:

sudo tcpdump -i eth0 tcp port 10514 -X -s 0 -nn

Verifique o Selinux, o caminho dos certificados, a data de expiração dos certificados e as permissões.

    
por 09.02.2016 / 22:32