2

Windows からログを送信するオプションを検討しており、既に logstash をセットアップしており、現在、logstash-forwarder と ssl 暗号化を使用して Linux (CentOS) サーバーから ELK スタックにログを送信しています。

コンプライアンス上の理由から、この環境では暗号化が非常に重要です。

私は Windows でも logstash-forwarder を使用したいと思っていましたが、Go でコンパイルした後、イベント ログを送信する際に問題が発生しました。人々は取り組んでいるようですが、私は本当に待ちきれません。

とにかく、最終的に、nxlog は ssl を使用して暗号化された形式でログを送信できるようであることがわかりました。同様のトピックに関するいくつ の投稿 を見つけましたが、ログを送信する方法と方法についてかなり学びました。 nxlog をセットアップするには、ログを処理できるようにログを受け入れるように logstash をセットアップする方法にまだ途方に暮れています。

#nxlog および #logstash irc チャネルで質問したところ、#nxlog で可能であるという確認が得られましたが、どのように構成する必要があるかについての詳しい情報はありません。

とにかく、私はlogstash-forwarderで使用するために作成されたcrtファイルを取得し(これが機能することに満足している場合、必要に応じて新しいファイルを作成します)、pem拡張子で名前を変更しました。これはそのまま機能するはずですASCII 形式で読み取り可能。%CERTDIR% の環境変数を作成し、そこに自分のファイルを置きました。読んだ他の記事から nxlog の次の構成ファイルを作成しました。正しいと思いますが、100% 確実ではありません。

## This is a sample configuration file. See the nxlog reference manual about the
## configuration options. It should be installed locally and is also available
## online at http://nxlog.org/nxlog-docs/en/nxlog-reference-manual.html

## Please set the ROOT to the folder your nxlog was installed into,
## otherwise it will not start.

#define ROOT C:\Program Files\nxlog
define ROOT C:\Program Files (x86)\nxlog

Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log

# Enable json extension
<Extension json>
    Module xm_json
</Extension>

# Nxlog internal logs
<Input internal>
    Module im_internal
    Exec $EventReceivedTime = integer($EventReceivedTime) / 1000000; to_json();
</Input>

# Windows Event Log
<Input eventlog>
  # Uncomment im_msvistalog for Windows Vista/2008 and later
    Module im_msvistalog
  # Uncomment im_mseventlog for Windows XP/2000/2003
  # Module im_mseventlog
    Exec $EventReceivedTime = integer($EventReceivedTime) / 1000000; to_json();
</Input>

<Output sslout>
    Module          om_ssl
    Host            lumberjack.domain.com
    Port            5000
    CertFile        %CERTDIR%/logstash-forwarder.crt
    AllowUntrusted  TRUE
    OutputType      Binary
</Output>

<Route 1>
    Path     eventlog, internal => sslout
</Route>

私が知りたいのは、logstash で使用する入力形式です。次の構成を使用して、logstash-forwarders が使用するのと同じ構成を使用して、ログを木こりの入力タイプに送信しようとしました。

input {
  lumberjack {
    port => 5000
    type => "logs"
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}

しかし、サービスが開始されると、nxlog ログファイルに次のように表示されます。

2014-11-06 21:16:20 INFO connecting to lumberjack.domain.com:5000
2014-11-06 21:16:20 INFO nxlog-ce-2.8.1248 started
2014-11-06 21:16:21 INFO successfully connected to lumberjack.domain.com:5000
2014-11-06 21:16:22 INFO remote closed SSL socket
2014-11-06 21:16:22 INFO reconnecting in 1 seconds
2014-11-06 21:16:23 INFO connecting to lumberjack.domain.com:5000
2014-11-06 21:16:24 INFO reconnecting in 2 seconds
2014-11-06 21:16:24 ERROR couldn't connect to ssl socket on lumberjack.antmarketing.com:5000; No connection could be made because the target machine actively refused it.

ログを DEBUG にすると、大量のログが飛んでいるのがわかりますが、重要な部分は次のとおりだと思います。

2014-11-06 21:20:18 ERROR Exception was caused by "rv" at om_ssl.c:532/io_err_handler(); [om_ssl.c:532/io_err_handler()] -; [om_ssl.c:501/om_ssl_connect()] couldn't connect to ssl socket on lumberjack.domain.com:5000; No connection could be made because the target machine actively refused it.

これは、logstash で間違った入力方法を使用していることを示していると思いますが、ssl 証明書またはその構成方法にも問題がある可能性があると思います。Windows マシンから接続を確立したときに、logstash サーバーでログが生成されていないようです。

4

2 に答える 2

2

b0ti の助けに感謝します。多くの問題がありました。logstash 構成がサービスをクラッシュさせていましたが、nxlog のセットアップと ssl 証明書が正しい方法でセットアップされていることにも問題がありました。

SSL 証明書の作成に関するこの投稿を見つけました。この記事では、Web サービスとして使用する自己署名証明書を適切にセットアップする方法について説明しています。

nxlog の主な問題点は、b0ti が指摘したように、nxlog サーバーに出荷する場合にのみ機能するバイナリで出荷しようとしていたことです。ドキュメントで、AllowUntrusted のデフォルトが false であることにも気づいたので、ssl が機能していることに満足したら削除する必要がありました。

<Output sslout>
    Module          om_ssl
    Host            lumberjack.domain.com
    Port            5001
    CAFile          %CERTDIR%\nxlog-ca.crt
    OutputType      LineBased
</Output>

CA キーを作成し、これを秘密にしておく必要があるため保護します (/etc/pki/tls への cd):

certtool --generate-privkey --bits 2048 --outfile private/nxlog-ca.key
chown logstash:logstash private/nxlog-ca.key
chmod 600 private/nxlog-ca.key

次に、自己署名 CA 証明書をクライアントに転送する必要があります。

certtool --generate-self-signed --load-privkey private/nxlog-ca.key --bits 2048 --template nxlog-ca-rules.cnf --outfile certs/nxlog-ca.crt

cnf ファイルは、このオプションが変更された標準のみです。

# Whether this is a CA certificate or not
ca

logstash の入力方法:

input {
  tcp {
    port => 5001
    type => "nxlogs"
    ssl_cacert => "/etc/pki/tls/certs/nxlog-ca.crt"
    ssl_cert => "/etc/pki/tls/certs/nxlog.crt"
    ssl_key => "/etc/pki/tls/private/nxlog.key"
    ssl_enable => true
    format => 'json'
  }
}

秘密鍵を生成します。

certtool --generate-privkey --bits 2048 --outfile private/nxlog.key
chown logstash:logstash private private/nxlog.key
chmod 600 private/nxlog.key

CSR (証明書署名要求) を生成します。

certtool --generate-request --bits 2048 --load-privkey private/nxlog.key --outfile private/nxlog.csr

CA 秘密鍵で証明書に署名する

certtool --generate-certificate --bits 2048 --load-request private/nxlog.csr --outfile certs/nxlog.crt --load-ca-certificate certs/nxlog-ca.crt --load-ca-privkey private/nxlog-ca.key --template nxlog-rules.cnf

ここでも、cnf ファイルの標準入力に関する唯一の重要な部分は次のとおりです。

# Whether this certificate will be used to encrypt data (needed
# in TLS RSA ciphersuites). Note that it is preferred to use different
# keys for encryption and signing.
encryption_key

# Whether this certificate will be used for a TLS client
tls_www_client

私はこれをテストしましたが、うまく機能します。今すぐフィルタを設定する必要があります

于 2014-11-11T21:25:25.430 に答える