読者です 読者をやめる 読者になる 読者になる

RSYSLOGとTLS

f:id:sunrise683:20160505140823j:plain
photo credit: keys via photopin (license)

この記事はIT系の仕事、研究などに従事している方向けの記事になりますので、
予めご了承ください。

rsyslogをTLS化する過程ではまってしまったので、メモ書きです。


参考リンク:

  1. Sample Use Case: Single Central Log Server — rsyslog 8.18.0 documentation http://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_scenario.html
  2. rsyslogの通信をTLSSSL)化してみた | 黒ぶちメガネのblog http://www.kurobuti.com/blog/?p=4581
  3. rsyslogのTLSSSL)暗号化 | 外道父の匠 http://blog.father.gedow.net/2013/08/13/rsyslog-tls/

なにも考えずに上記日本語2サイトを参考に設定をしていたら、
CA証明書、サーバ証明書の発行がうまくいかなかったようで、
rsyslogdがエラーになり、数時間を無駄にしてしまった。

困ったときは原文を参考にするに限る!!
ということで、上記リンクはまず一番トップのrsyslogのサイトを参考にすることをお勧めします。
tutorialをそのままやればうまくできるはず。

パッケージ「gnutls-utils」、「rsyslog-gnutls」がインストールされている必要がありました。
SSL/TLSというとやはりWebのHTTPSに関するサイトが多く、
opensslを利用してオレオレ証明書を作成している方が多かったようですが、
タイトルにもあるようにrsyslogのtls化なので、上記2パッケージを使用します。

参考に/etc/rsyslog.confだけ。

Central Server(Syslog送信先) :

$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
$ModLoad imuxsock # local messages

# make gtls driver the default
$DefaultNetstreamDriver gtls

# certificate files
$DefaultNetstreamDriverCAFile /etc/myCA/ca.pem
$DefaultNetstreamDriverCertFile /etc/myCA/machine-cert.pem
$DefaultNetstreamDriverKeyFile /etc/myCA/machine-key.pem

$ModLoad imtcp # load TCP listener
$InputTCPServerStreamDriverMode 1
$InputTCPServerStreamDriverAuthMode anon # client is NOT authenticated
$InputTCPServerRun 514 # start up listener at port 514

$ModLoad imudp # load UDP listener
$UDPServerRun 1514 # start up listener at port 1514

*.* /var/log/central.log

Cient Server(Syslog送信元) :

$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
$ModLoad imuxsock # local messages
$ModLoad imtcp # load TCP listener

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# certificate files - just CA for a client
$DefaultNetstreamDriverCAFile /etc/myCA/ca.pem

# set up the action
$DefaultNetstreamDriver gtls # use gtls netstream driver
$ActionSendStreamDriverMode 1 # require TLS for the connection
$ActionSendStreamDriverAuthMode anon # server is NOT authenticated
*.* /var/log/messages
*.* @@192.168.10.109:514 # send (all) messages
*.* @192.168.10.109:1514

TCPTLS)とUDPが両方できるかなっと調べた関係があって、
両方で送受信する設定になっています。
「$InputTCPServerStreamDriverMode 1」という設定がないと、
下記のエラーが出るので注意。

2016-05-05T13:44:07.922921+09:00 192.168.10.106 #026#003#002#000V#001#000#000R#003#002W*

また、ずっとはまっていた証明書関連(?)の発行がうまくいっていない件は、
RSYSLOGのTUTORIALを見る限り、おそらくだけどサーバ証明書の「common name」というところだろうなぁ、
と思われる。下記の注意書きがあるくらいないなので、ちょっとした検証でやるくらいなら、
空白のままの方がよいのだろう。そもそもオレオレ証明書なんて商用で使わないでしょうし。

Please note: you need to substitute the names specified below with values that match your environment. Most importantly, machine.example.net must be replaced by the actual name of the machine that will be using this certificate. For example, if you generate a certificate for a machine named “server.example.com”, you need to use that name. If you generate a certificate for “client.example.com”, you need to use this name. Make sure that each machine certificate has a unique name. If not, you can not apply proper access contro

広告を非表示にする