Show Table of Contents
22.5. ロギングサーバーでの rsyslog の設定
rsyslog サービスは、ロギングサーバーを実行する機能と、個別のシステムがログファイルをロギングサーバーに送信するように設定する機能の両方を提供します。クライアントの rsyslog 設定については、例22.12「サーバーへのログメッセージの確実な転送」 を参照してください。
rsyslog サービスは、ロギングサーバーとして使用するシステムと、そのシステムにログを送信するように設定する全システムにインストールする必要があります。Red Hat Enterprise Linux 7 では、rsyslog がデフォルトでインストールされます。確実にインストールする必要がある場合は、root で以下のコマンドを入力します。
~]# yum install rsyslog
syslog トラフィックのデフォルトのプロトコルとポートは、
/etc/services ファイルで示されているように UDP と 514 です。ただし、デフォルトで rsyslog はポート 514 で TCP を使用するよう設定されます。設定ファイル /etc/rsyslog.conf において、TCP は @@ で示されます。
例では他のポートが使用されることがありますが、SELinux は、デフォルトで以下のポートでの送受信のみを許可するよう設定されます。
~]# semanage port -l | grep syslog
syslog_tls_port_t tcp 6514, 10514
syslog_tls_port_t udp 6514, 10514
syslogd_port_t tcp 601, 20514
syslogd_port_t udp 514, 601, 20514
semanage ユーティリティーは、policycoreutils-python パッケージの一部として提供されます。必要な場合は、以下のようにパッケージをインストールします。
~]# yum install policycoreutils-python
また、デフォルトで
rsyslog の SELinux タイプである rsyslogd_t は、SELinux タイプが rsh_port_t のリモートシェル (rsh) ポートでの送受信を許可するよう設定されます (デフォルトでポート 514 の TCP に設定されます)。したがって、semanage を使用してポート 514 で TCP を明示的に許可する必要はありません。たとえば、SELinux がポート 514 で許可するよう設定されたプロトコルを確認するには、以下のコマンドを入力します。
~]# semanage port -l | grep 514出力省略
rsh_port_t tcp 514
syslogd_port_t tcp 6514, 601
syslogd_port_t udp 514, 6514, 601
SELinux の詳細については、『Red Hat Enterprise Linux 7 SELinux ユーザーおよび管理者のガイド)』 を参照してください。
ロギングサーバーとして使用するシステムで以下の手順を実行します。これらの手順はすべて
root ユーザーで実行する必要があります。
手順22.4 ポートで rsyslog トラフィックを許可するよう SELinux を設定
rsyslog トラフィックに新しいポートを使用する必要がある場合は、ロギングサーバーとクライアントでこの手順を実行します。たとえば、ポート 10514 で TCP トラフィックを送受信する場合は、以下のようになります。
~]#
semanage port -a -t syslogd_port_t -p tcp 10514- 以下のコマンドを入力して SELinux ポートを確認します。
~]#
semanage port -l | grep syslog - 新しいポートがすでに
/etc/rsyslog.confに設定されている場合は、変更を反映するためにrsyslogを再起動します。~]#
service rsyslog restart rsyslogが現在リッスンしているポートを確認します。~]#
netstat -tnlp | grep rsyslogtcp 0 0 0.0.0.0:10514 0.0.0.0:* LISTEN 2528/rsyslogd tcp 0 0 :::10514 :::* LISTEN 2528/rsyslogd
semanage port コマンドの詳細については、semanage-port(8) man ページを参照してください。
手順22.5 firewalld の設定
firewalld が受信 rsyslog トラフィックを許可するよう設定します。たとえば、ポート 10514 で TCP を許可するには、以下の手順を実行します。
~]#
firewall-cmd --zone=zone --add-port=10514/tcpsuccessここで、zone は使用するインターフェースのゾーンです。これらの変更は次回のシステム起動後に維持されないことに注意してください。ファイアウォールに永久的な変更を行うには、--permanentオプションを追加してコマンドを繰り返します。firewalldでのポートの開閉の詳細については、Red Hat Enterprise Linux 7 Security Guide (Red Hat Enterprise Linux 7 セキュリティーガイド) を参照してください。- 上記の設定を確認するには、以下のコマンドを使用します。
~]#
firewall-cmd --list-allpublic (default, active) interfaces: eth0 sources: services: dhcpv6-client ssh ports: 10514/tcp masquerade: no forward-ports: icmp-blocks: rich rules:
手順22.6 リモートログメッセージを受信してソートするよう rsyslog を設定
- テキストエディターで
/etc/rsyslog.confファイルを開き、以下の手順を実行します。- モジュールセクションと
Provides UDP syslog receptionセクションの間に以下の行を追加します。# Define templates before the rules that use them ### Per-Host Templates for Remote Systems ### $template TmplAuthpriv, "/var/log/remote/auth/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log" $template TmplMsg, "/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
- デフォルトの
Provides TCP syslog receptionセクションを以下の内容に置き換えます。# Provides TCP syslog reception $ModLoad imtcp # Adding this ruleset to process remote messages $RuleSet remote1 authpriv.* ?TmplAuthpriv *.info;mail.none;authpriv.none;cron.none ?TmplMsg $RuleSet RSYSLOG_DefaultRuleset #End the rule set by switching back to the default rule set $InputTCPServerBindRuleset remote1 #Define a new input and bind it to the "remote1" rule set $InputTCPServerRun 10514
/etc/rsyslog.confファイルへの変更を保存します。 rsyslogサービスは、ログサーバーと、そのサーバーにログ記録を試みるシステムの両方で実行する必要があります。systemctlコマンドでrsyslogサービスを起動します。~]#
systemctl start rsyslogrsyslogサービスを今後自動的に起動するために、root で以下のコマンドを入力します。~]#
systemctl enable rsyslog
環境内の他のシステムからのログファイルを受信し、保管するためのログサーバーの設定が完了しました。
22.5.1. ロギングサーバーでの新規テンプレート構文の使用
rsyslog 7 には複数の異なるテンプレートスタイルがあります。文字列テンプレートは従来の形式に最もよく似ています。文字列形式を使用して上記の例からテンプレートを生成する場合は、以下のようになります。
template(name="TmplAuthpriv" type="string"
string="/var/log/remote/auth/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
)
template(name="TmplMsg" type="string"
string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
)
また、これらのテンプレートは、以下のようにリスト形式で記述することもできます。
template(name="TmplAuthpriv" type="list") {
constant(value="/var/log/remote/auth/")
property(name="hostname")
constant(value="/")
property(name="programname" SecurePath="replace")
constant(value=".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 の初心者にとって理解しやすいかもしれません。したがって、要件が変更したら簡単に変更できます。
新規構文への変更を完了するには、モジュールロードコマンドを再作成し、ルールセットを追加して、プロトコル、ポート、およびルールセットにルールセットをバインドする必要があります。
module(load="imtcp")
ruleset(name="remote1"){
authpriv.* action(type="omfile" DynaFile="TmplAuthpriv")
*.info;mail.none;authpriv.none;cron.none action(type="omfile" DynaFile="TmplMsg")
}
input(type="imtcp" port="10514" ruleset="remote1")
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.