DUICUO

rsyslogの設定とログ転送に関する簡単な説明

パート01. rsyslogとは何ですか?

強力で高度に設定可能なシステムログデーモンであるrsyslogは、ログサーバーとログクライアントという2つの異なる環境で実行できます。ログサーバーとして、rsyslogはネットワーク上の他のホストからログデータを収集できます。ログクライアントとして、rsyslogは内部ログメッセージをフィルタリングし、ルーティング可能なリモートrsyslogサーバーに送信できます。

rsyslog の主な機能は次のとおりです。

  • マルチスレッド サポート: rsyslog は、より高い同時処理機能を実現するためにマルチスレッド サポートを提供します。
  • マルチプロトコル サポート: rsyslog は、UDP、TCP、SSL、TLS、RELP などのプロトコルを使用して情報を収集できます。
  • データベース統合: rsyslog は、MySQL、pgsql、Oracle などのさまざまなデータベース管理システムにログ データを保存できます。
  • 強力なフィルター: rsyslog は、ログ情報をフィルターできる強力なカスタム フィルターを提供します。
  • カスタム出力形式:ユーザーは必要に応じて rsyslog の出力形式を設定できます。
  • 集中ログ管理:ユーザーは rsyslog を通じてログを集中管理できます。
  • C/S アーキテクチャ: rsyslog のクライアント/サーバー アーキテクチャでは、クライアントがログをサーバーにアップロードし、ユーザーはサーバー ログを照会することですべてのクライアント ログを集中管理できます。

これらの機能により、rsyslog はシステム ログを処理および管理するための強力なツールになります。

パート02. rsyslogのログの種類とレベル

rsyslog ログ タイプは、ログ メッセージのソースを定義するために使用され、ログの分類が容易になります。

rsyslog ログ レベルは、さまざまなメッセージのレベルを定義します。

写真

パート03. rsyslogを簡単に設定する方法

内部ログ メッセージをリモート rsyslog サーバーに送信するには、次のトポロジ構成を使用できます。

  • ログ メッセージを送信するには、IP アドレス 172.21.44.93 の仮想マシンを rsyslog クライアントとして構成します。
  • ログ メッセージを受信して​​保存するには、IP アドレス 172.21.44.245 の仮想マシンを rsyslog ログ サーバーとして構成します。

上記の構成により、後続の分析と監視のために内部ログを集中管理および保存できます。

写真

3.1 rsyslog ログサーバーの設定

- rsyslog サービスがインストールされているかどうかを確認します。

 ps -ef | grep rsyslog rsyslogd -v

- 設定ファイルを編集する

vi /etc/rsyslog.conf $ModLoad imudp $UDPServerRun 514

この設定により、rsyslogデーモンはUDPポート514経由でログメッセージを受信できるようになります。UDPはTCPよりも高速なプロトコルですが、TCPほどの信頼性はありません。信頼性の高いトランスポートメカニズムが必要な場合は、TCPポート514でログメッセージを受信できます。

TCP/UDP 接続をリッスンするには、TCP と UDP の両方を同時に有効にできることに注意することが重要です

 $ModLoad imtcp $InputTCPServerRun 514

写真

ログ情報を受信するためのプロトコルとポートを構成することに加えて、他のクライアント マシンから受信したメッセージを記録する方法を rsyslog デーモンに指示するためのログ受信テンプレートも作成する必要があります。

テキストエディタで `/etc/rsyslog.conf` ファイルを開き、`GLOBAL DIRECTIVE` ブロックの前に以下のテンプレート設定を追加します。`$template RemoteLogs` ディレクティブを使用して、rsyslog デーモンにログメッセージを別のローカルログファイル `/var/log/rsyslogTest` に書き込むように指示します。

 $template RemoteLogs,"/var/log/rsyslogTest/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" *.* ? RemoteLogs

- 設定ファイルを編集した後、変更を有効にするためにデーモン プロセスを再起動します。

 systemctl restart rsyslog

rsyslogデーモンが正常に動作しているかどうかを確認するには、netstatコマンドを使用します。以下のコマンドを実行してください。

 $ sudo netstat -tulpn | grep rsyslog如果rsyslog守护进程正在使用UDP监听端口,可以看到类似下面的输出: udp 0 0 0.0.0.0:514 0.0.0.0:* 551/rsyslogd udp6 0 0 :::514 :::* 551/rsyslogd如果rsyslog守护进程被设置在TCP连接端口,可以看到类似下面的输出: tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1891/rsyslogd tcp6 0 0 :::514 :::* LISTEN 1891/rsyslogd以上输出表明rsyslog守护进程正在监听相应的端口,并处于活动状态。

3.2 rsyslog ログクライアントの設定

- rsyslogデーモンをインストールする

CentOS 7では、rsyslogデーモンがプリインストールされています。以下のコマンドを実行すると、CentOSシステムにrsyslogがインストールされているかどうかを確認できます。

 # rpm -qa | grep rsyslog # rsyslogd -v、

何らかの理由で rsyslog デーモンがシステムに存在しない場合は、次のコマンドを使用してインストールできます。

 # yum install rsyslog

- 設定ファイルの変更

テキスト エディターを使用して、/etc パスにあるメインの rsyslog 構成ファイルを開きます。

 # vim/etc/rsyslog.conf开启文件用于编辑后,将IP地址替换为远程rsyslog服务器的IP地址: *.* @172.21.44.245:514该配置指示rsyslog守护进程将系统上各个设备的各种日志消息路由到远程rsyslog服务器的UDP端口514(IP地址为172.21.44.245)。如果出于某种原因,需要更为可靠的协议TCP,可以如下配置: *.* @@172.21.44.245:514

写真

3.3 設定ファイルを編集した後、変更を有効にするためにデーモン プロセスを再起動します。

 systemctl restart rsyslog.service

- リモートログの検証

rsyslogクライアントで、コマンド「logger -t kern -p err "adddddddddddd"」を入力します。このコマンドは、kernタイプとerrレベルを含むログメッセージをクライアント上に作成し、その内容は「adddddddddd」になります。

写真

rsyslog サービス ログを表示すると、クライアントからログ ファイルに送信された内容が表示されます。

写真

パート04. 安全なログサーバーを素早くセットアップする方法

セキュリティを強化するために、TLSを使用して安全なリモートログを実行できます。TLSを使用して安全なリモートログを実行すると、次のようなセキュリティ上の利点があります。

  • システム ログ メッセージは、ネットワーク転送中に暗号化されます。
  • Syslog 送信者は Syslog 受信者を認証するため、受信者は通信相手が誰であるかを知ることができます。
  • Syslog 受信者は Syslog 送信者を認証するため、送信者はメッセージが実際に意図した受信者に送信されたことを確認できます。
  • 双方向認証により、中間者攻撃を防ぐことができます。

以下のデモでは、2つの異なるノードを用いて、TLS証明書を使用したrsyslogによる安全なリモートログ記録の実行方法を説明します。これらの2つのノードはそれぞれクライアントとサーバーであり、クライアントノードはrsyslogクライアントとして機能し、サーバーノードはリモートログサーバーとして機能します。

4.1 CA証明書を生成する

syslog をリモート ログ サーバーに安全に転送するための自己署名証明書を作成するには、まず GnuTLS の一部である certtool ツールをインストールする必要があります。

 yum -y install gnutls-utils

秘密鍵を生成し、作成された鍵が root ユーザーのみによって読み取れるように権限を設定します。

 certtool --generate-privkey --outfile ca-key.pem chmod 400 ca-key.pem

自己署名 CA 証明書を作成します。

 certtool --generate-self-signed --load-privkey ca-key.pem --outfile ca.pem

証明書の有効期限については、証明書の有効期限が切れると、すべての証明書を再作成する必要があります。3650日(約10年)という比較的長い期間を設定できます。

写真

図に示すように、ca-key.pem は認証局の秘密鍵であり、ca.pem は他のノードに配布される公開鍵です。

写真

4.2 マシン証明書の生成

このステップでは、サーバーの秘密鍵と証明書を生成します。`--outfile` オプションは、秘密鍵を使用するサーバーの名前を指定します。ここではサーバー名を `node3` とします。

 certtool --generate-privkey --outfile node3-key.pem --bits 2048

秘密鍵を使用して署名要求を取得し、サーバー側の秘密鍵 node3-key.pem をロードし、秘密鍵を node3-request.pem に署名します。

 certtool --generate-request --load-privkey node3-key.pem --outfile node3-request.pem

写真

上記の手順を完了すると、ログサーバーの鍵生成プロセスが完了します。その後、認証局の秘密鍵(ca-key.pem)を使用して、使用する証明書に署名します。

 certtool --generate-certificate --load-request node3-request.pem --outfile node3-cert.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem

4.3 安全なリモートログ記録を可能にするためにTLS証明書を配布する

次に、キーをリモート ノード サーバー node3 にコピーします。

キーをコピーする前に、サーバー ノードに rsyslog-key という名前のディレクトリを作成してこれらのキーを保存し、クライアントからサーバーにキーをコピーします。

4.4 システムログを安全に転送するようにサーバーを構成する

サーバー上でメッセージを受信するには、次の設定が必要です。

在/etc/rsyslog.config文件中输入以下信息: #将gtls驱动程序设为默认驱动程序$ DefaultNetstreamDriver gtls #证书文件$ DefaultNetstreamDriverCAFile /etc/rsyslog-keys/ca.pem $ DefaultNetstreamDriverCertFile /etc/rsyslog-keys/node3-cert.pem $ DefaultNetstreamDriverKeyFile /etc/rsyslog-keys/node3-key.pem #TCP侦听器$ ModLoad imtcp #在仅TLS模式下运行驱动程序$ InputTCPServerStreamDriverMode 1 $ InputTCPServerStreamDriverAuthMode anno #在端口514上启动侦听器$ InputTCPServerRun 514

rsyslog サービスを再起動して、そのステータスを確認します。

 systemctl status rsyslog.service

4.5 ログメッセージを安全に受信するためのクライアント設定

ログをリモート ログ サーバーに安全に転送するようにクライアントを構成し、ca.pem を保存するためのディレクトリをクライアントに作成します。

/etc/rsyslog.config ファイルに次の情報を入力します。

 #tls protocol $DefaultNetstreamDriver gtls $DefaultNetstreamDriverCAFile /etc/rsyslog-keys/ca.pem $ActionSendStreamDriverAuthMode anon $ActionSendStreamDriverMode 1 *.* @@172.21.44.245:514

rsyslog サービスを再起動して、そのステータスを確認します。

 systemctl status rsyslog.service

4.6 リモートログ記録の検証

rsyslog クライアントに `logger "hello world"` と入力すると、スクリーンショットに、リモート ログ サーバーがクライアントから送信されたメッセージを受信したことが示されます。

写真

パート05. 結論

rsyslogは、Ubuntu 14.04、CentOS 6以降のバージョンなど、様々なLinuxディストリビューションで広く使用されている強力で安全なログシステムです。豊富な機能を備えており、さまざまなソースからログを収集し、ログをフィルタリングおよびフォーマットする機能も提供します。

rsyslog を使用することで、システムログの管理と記録が容易になります。rsyslog は、ログイン認証やシステムログなどの重要な情報を一元的に処理・保存し、リモートログサーバーに送信することができます。これにより、システム負荷の軽減とログの一元管理が可能になります。さらに、rsyslog は最新のログ情報をいつでも取得して監視・分析できるため、システムの稼働状況を把握するのに役立ちます。

まとめると、rsyslogは強力なログ収集機能を提供し、システムログをより適切に管理・活用することを可能にします。信頼性が高く、広く使用されているツールであり、システムのセキュリティ、信頼性、そして管理性の向上に役立ちます。