CentOS/RHELでRsyslogを使用して集中ログサーバーを作成する方法7

システム管理者がCentOS7またはRHEL7サーバーシステムの問題を特定またはトラブルシューティングするには、システムに格納されている/var/logディレクトリ

Linuxマシン上のsyslogサーバーは、すべてのサーバー、ネットワークデバイス、ルーター、スイッチ、およびログを生成する内部サービスのほとんどが、特定の内部問題に関連しているか、単に有益なメッセージに関連しているかにかかわらず、ログを送信できるネットワーク上の中央監視ポイントを動作させることができます。

CentOS/RHEL7システムでは、Rsyslog daemonがプリインストールされているメインログサーバーであり、Systemd Journal Daemon(journald)が続きます。

Rsyslogサーバーは、クライアント/サーバーアーキテクチャサービスとしてビルドされ、両方の役割を同時に達成できます。 サーバーとして実行し、ネットワーク内の他のデバイスによって送信されたすべてのログを収集するか、リモートエンドポイントsyslogサーバーにログに記録され

rsyslogがクライアントとして設定されている場合、ログはローカルファイルシステム上のファイルにローカルに格納されているか、マシンに格納されているファイルに書き込むのではなく、リモートで送信したり、イベントログファイルをローカルに書き込んでリモートのsyslogサーバーに同時に送信したりすることができます。

Syslogサーバーは、次のスキームを使用してログメッセージを操作します:

type (facility).priority (severity) destination(where to send the log)

A. 機能データまたはタイプデータは、メッセージを生成する内部システムプロセスによって表されます。 Linuxでは、ログを生成する内部プロセス(機能)は次のように標準化されています:

  • auth=認証プロセス(ログイン)によって生成されたメッセージ。
  • cron=スケジュールされたプロセス(crontab)によって生成されたメッセージ。
  • daemon=デーモンによって生成されたメッセージ(内部サービス)。
  • kernel=Linuxカーネル自体によって生成されたメッセージ。
  • mail=メールサーバーによって生成されたメッセージ。
  • syslog=rsyslogデーモン自体によって生成されたメッセージ。
  • lpr=ローカルプリンターまたはプリントサーバーによって生成されたメッセージ。
  • local0–local7=管理者によって定義されたカスタムメッセージ(local7は通常、CiscoまたはWindowsに割り当てられます)。

B.優先度(重大度)レベルも標準化されています。 各優先度には、以下で説明するように、標準の省略形と番号が割り当てられます。 第7の優先順位は、すべてのより高いレベルです。

  • emerg=緊急–0
  • alert=アラート–1
  • err=エラー–3
  • warn=警告–4
  • notice=通知–5
  • info=情報-6
  • debug=デバッグ– 7

特別なRsyslogキーワード:

  • * = すべての施設または優先順位
  • none=施設には指定された優先順位がありません。none

c.syslogスキーマの3番目の部分はdestinationディレクティブで表されます。 Rsyslogデーモンは、ローカルファイルシステム上のファイル(主に/var/log/ディレクトリ内のファイル)に書き込まれるログメッセージを送信したり、別のローカルプロセスにパイプされたり、ローカルユーザーコンソール(stdout)に送信されたり、TCP/UDPプロトコルを介してリモートsyslogサーバーにメッセージを送信したり、/dev/nullにメッセージを破棄したりすることができます。

CentOS/RHEL7を中央ログサーバーとして設定するには、まず、すべてのログファイルが記録されている/varパーティションが、他のデバイスから送信されるすべてのログファイルを格納できるように十分な大きさ(最小数GB)であることを確認する必要があります。 別のドライブ(LVM、RAID)を使用して/var/log/ディレクトリをマウントすることをお勧めします。

要件

  1. CentOS7.3インストール手順
  2. RHEL7.3インストール手順

Centos/RHEL7サーバーでRsyslogを設定する方法

1. デフォルトでは、Rsyslogサービスは自動的にインストールされ、CentOS/RHEL7で実行されている必要があります。 デーモンがシステムで起動されているかどうかを確認するには、root権限で次のコマンドを発行します。

# systemctl status rsyslog.service
チェックRsyslogサービス
チェックRsyslogサービス

サービスがデフォルトで実行されていない場合は、以下のコマンドを実行してrsyslogデーモンを起動します。

# systemctl start rsyslog.service

2. 集中ログサーバーとして使用するシステムにrsyslogパッケージがインストールされていない場合は、次のコマンドを発行してrsyslogパッケージをインストールします。

# yum install rsyslog

3. Rsyslogデーモンを集中ログサーバーとして設定するためにシステム上で行う必要がある最初のステップは、外部クライアントのログメッセージを受信できるよconf、以下の抜粋で提示されているように。

# vi /etc/rsyslog.conf

rsyslogメイン設定ファイルで、514ポートを介してRSYSLOGサーバーにUDPトランスポート受信を提供するために、次の行を検索してコメントを解除します(行頭のハッシュタグ#記号を削除します)。 UDPは、Rsyslogによるログ送信に使用される標準プロトコルです。

$ModLoad imudp $UDPServerRun 514

Rsyslogサーバーの設定
Rsyslogサーバーの設定

4. UDPプロトコルにはTCPオーバーヘッドがないため、TCPプロトコルよりもデータの送信が高速になります。 一方、UDPプロトコルは、送信されたデータの信頼性を保証しません。

ただし、ログ受信にTCPプロトコルを使用する必要がある場合は、/etc/rsyslogから次の行を検索してコメントを解除する必要があります。514ポートでTCPソケットをバインドしてリッスンするようにRsyslogデーモンを設定するためのconfファイル。 受信用のTCPおよびUDPリスニングソケットは、Rsyslogサーバー上で同時に構成できます。

$ModLoad imtcp $InputTCPServerRun 514 

5. 次の手順では、ファイルをまだ閉じずに、リモートメッセージの受信に使用する新しいテンプレートを作成します。 このテンプレートは、syslogネットワーククライアントによって送信された受信メッセージを保存する場所をローカルRsyslogサーバーに指示します。 テンプレートは、以下の抜粋に示すように、GLOBAL DIRECTIVESブロックの先頭の前に追加する必要があります。

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" . ?RemoteLogs & ~
Create Rsyslog Template
Create Rsyslog Template

上記のtemplate template Remotelogディレクティブは、Rsyslogデーモンに、クライアントマシン名と、テンプレート設定で定義されたプロパティ%HOSTNAME%と%PROGRAMNAME%に基づいてメッセージを生成したリモートクライアントファシリティ(アプリケーション)に基づいて、受信したすべてのログメッセージを収集し、個別のファイルに書き込むように指示します。

これらのログファイルはすべて、クライアントマシンのホスト名にちなんで命名された専用ファイルにローカルファイルシステムに書き込まれ、/var/log/ディ

&~redirectルールは、受信したログメッセージの処理をさらに停止し、メッセージを破棄するようにローカルRsyslogサーバーに指示します(内部ログファイルに書き込まない)。

RemoteLogs名は、このテンプレートディレクティブに指定された任意の名前です。 あなたの型板のために最も適する見つけることができるどんな名前を使用できる。

クライアントから受信したすべてのメッセージを、リモートクライアントのIPアドレスにちなんで命名された単一のログファイルに書き込むには、メッ

$template FromIp,"/var/log/%FROMHOST-IP%.log" . ?FromIp & ~ 

認証機能フラグを持つすべてのメッセージが”TmplAuth”という名前のテンプレートに記録されるテンプレートの別の例。

$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" authpriv.* ?TmplAuth

以下は、Rsyslog7サーバーからのテンプレート定義からの抜粋です:

template(name="TmplMsg" type="string" string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log" )

上記のテンプレートの抜粋は、次のように書くこともできます:

template(name="TmplMsg" type="list") { constant(value="/var/log/remote/msg/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") }

複雑なRsyslogテンプレートを記述するには、man rsyslogを発行してRsyslog設定ファイルマニュアルを読んでください。confコマンドまたはrsyslogオンラインドキュメントを参照してください。

6. 上記のように独自の設定でRsyslog構成ファイルを編集した後、次のコマンドを発行して変更を適用するためにRsyslogデーモンを再起動します:

# service rsyslog restart

7. 今では、Rsyslogサーバーは、集中ログサーバーを動作し、syslogクライアントからのメッセージを記録するように設定する必要があります。 Rsyslogネットワークソケットを検証するには、root権限でnetstatコマンドを実行し、grepを使用してrsyslog文字列をフィルタリングします。

# netstat -tulpn | grep rsyslog 
Rsyslogネットワークソケットの確認
Rsyslogネットワークソケットの確認

8. CentOS/RHEL7でSELinuxを有効にしている場合は、次のコマンドを実行して、ネットワークソケットの種類に応じてrsyslogトラフィックを許可するようにSELinuxを設定します。

# semanage -a -t syslogd_port_t -p udp 514# semanage -a -t syslogd_port_t -p tcp 514 

9. ファイアウォールが有効でアクティブな場合は、Firewalldでrsyslogポートを開くために必要なルールを追加するために、以下のコマンドを実行します。

# firewall-cmd --permanent --add-port=514/tcp# firewall-cmd --permanent --add-port=514/udp# firewall-cmd –reload

それだけです! Rsyslogはサーバーモードで構成され、リモートクライアントからのログを一元化できます。 次の記事では、CentOS/RHEL7サーバーでRsyslogクライアントを設定する方法を説明します。

リモートログメッセージの中央監視ポイントとしてRsyslogサーバーを使用すると、システムがクラッシュしたり、何らかの攻撃を受けたりしたときに、ログファイ

コメントを残す

メールアドレスが公開されることはありません。