当記事では、LinuxのfirewallログをLogStare Collector(以下、LSCと記載)にて収集する方法について記載します。大まかな流れとしては、①firewalldの拒否ログ出力設定、②serviceごとのログ出力設定、③LSC受信設定となります。
目次
前提条件
・当記事では事前にrsyslog及びLSCの設定・構築が済んでいる前提で紹介します。LSCのインストールについては以下をご参照ください。
LogStare Collectorインストールからアンインストールまで Linux版
https://www.secuavail.com/kb/references/ref-200812_01/
・当記事の手順はすべて管理者権限にて実施しています。
・当記事の記載内容は下記環境にて実施したものです。
Linux
OS : CentOS7
IPアドレス:192.168.100.2
LSCサーバ
OS :CentOS7
メモリ: 4GB
CPU: 2コア
IPアドレス:192.168.100.1
Linux設定
firewalldの拒否ログ設定
firewalldのデフォルト設定では拒否ログを出力しないため、出力する設定に変更します。
現状設定の確認
# firewall-cmd –get-log-denied off
設定変更
# firewall-cmd –set-log-denied=all success
設定が反映されているかの確認
# firewall-cmd –get-log-denied all
許可していない送信元からのアクセスや開いていないポートに通信が来た時は/var/log/messagesに以下のようにログが出力されます。
サービスごとのログ出力
httpdやsshdのアプリケーションレベルのログではなくfirewallのパケットのログを出力します。以下のコマンドはfirewallのリッチルールで特定のipアドレス宛(この場合は自分自身)に送られてくるサービスをログに出力する設定です。
コマンド
firewall-cmd –permanent –zone=public –add-rich-rule=’rule family=”ipv4” destination address=”192.168.100.2/24” service name=”http” log prefix=”http:”’
以下各コマンドオプション解説
--permanent 恒久的に設定を反映
--zone=public publicのゾーンにこの設定を反映(デフォルト設定ではpublicでOK)
--add-rich-rule=’’ シングルクォーテーションの中にリッチルールを記入
rule family=”ipv4” ipv4の設定
destination address=”” 宛先のアドレス
service name=”” 表示しているログのサービス名
log prefix=”” このprefixに記入した文字列(今回はhttp:)をログの先頭に付与
prefixの文字列は任意なので設定するサービス名にするとログが見やすくなります。
設定の反映
# firewall-cmd --reload
反映の確認
# firewall-cmd --list-rich-rules --permanent rule family="ipv4" destination address="192.168.100.2/24" service name="http" log prefix="http:"
以上の設定から、httpのアクセスがあると下記のように/var/log/messagesにログが出力されます。
またこれとは別にhttpd(apache)自身が出しているログが/var/log/httpd/access_logに保存されており、アクセス日時と送信元ipが同じなため同一のログであることがわかります。
次にrsyslogでfirewallのログをLSCへ転送する設定を行います。
# vi /etc/rsyslog.conf
90行目あたり以下をを追記します。
kern.warn @@192.168.100.1:514
この場合は192.168.100.1(LSCサーバ)の514番ポートにTCPでログを転送する設定です。@@はTCPでの転送、@ではUDPでの転送になります。
設定を反映させて、Linuxのfirewallの設定は完了です。
# systemctl restart rsyslog
LSC設定
LSCの監視・収集よりfirewallのSYSLOG収集の設定を行います。
監視・収集一覧より右上のプラスボタンを押して新規項目を追加します。
新規項目の設定内容は次の通りです。
デバイス・アプリケーション種類に任意の名前を入れる(今回はhttp-firewall)。
ファシリティ: kern
プライオリティ:warn
※firewallのログはfacility.priority=kern.warnであるため、この設定で取得できます。
最後に追加ボタンを押し監視項目が作成されます。
設定後正常に収集できていれば以下のように表示されます。
もし表示されない場合は検索バーで表示する範囲(期間)の変更をお試し下さい。
※今回の設定では監視項目がkern.warnであるためfirewall以外のログが出力されます。もし他の方法を望まれる方は以下の記事よりマッチング文字列(今回の場合であれば”http:”)を設定し、指定したサービスのログのみを収集することが可能です。
SYSLOG収集
※補足
「SYSLOG収集」にて利用されるポート番号はデフォルトでtcp/udp共に514となっています。/etc/rsyslog.confにてポート番号を514以外に設定した場合、環境設定より「SYSLOG収集」にて利用されるポート番号を変更することで514以外のポートでの「SYSLOG収集」が可能となります。環境設定につきましては、以下の記事をご参照ください。
LogStare Collector における環境設定について
以上でLinuxのfirewallログをLSCで収集する方法についての説明は終了となります。
記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。
当社製品以外のサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。