ログ情報が特定のファイルに/etc/syslog.conf
保存されるようにファイルを設定する方法。iptables
この情報を別々に保管して、私が欲しいものをすばやく簡単に抽出できるようにしたいと思います。
答え1
システムログ
マニュアルページを確認してくださいiptables
。これLOG
には、目的のアクションを実行するというターゲットが表示されます。
はい
ロギングレベルを
LOG
4に設定します。# DROP everything and Log it iptables -A INPUT -j LOG --log-level 4 iptables -A INPUT -j DROP
構成は、
syslog.conf
これらのメッセージを別々のファイルに書き込みます。# /etc/syslog.conf kern.warning /var/log/iptables.log
syslogd を再起動します。
Debian/Ubuntu
$ sudo /etc/init.d/sysklogd restart
Fedora/セントOS/RHEL
$ sudo /etc/init.d/syslog restart
メモ:この記録方式を固定優先順位と呼びます。数字または名前(1、2、3、4、..)または(DEBUG、WARN、INFOなど)にすることができます。
システムログ
これを使用している場合は、rsyslog
次のプロパティベースのフィルタを作成できます。
# /etc/rsyslog.conf
:msg, contains, "NETFILTER" /var/log/iptables.log
:msg, contains, "NETFILTER" ~
次に、記録したいiptablesルールにこのスイッチを追加します。
–log-prefix NETFILTER
代わりに、次のプロパティフィルタを使用してメッセージを記録することもできます。
:msg, startswith, "iptables: " -/var/log/iptables.log
& ~
:msg, regex, "^\[ *[0-9]*\.[0-9]*\] iptables: " -/var/log/iptables.log
& ~
メモ:2番目の方法はペアリングを必要としませんiptables
。
引用する
答え2
これは、通常のファイアウォールと同様に、ファイアウォールがすでにログを生成していると仮定します。一部の例では、slm 例の「NETFILTER」などの認識可能なメッセージが必要です。
rsyslog.dでファイルを生成する
vim /etc/rsyslog.d/10-firewall.conf
これはCentOS 7で動作します。 IN、OUT 探しているのではなく、ファイアウォールから来ているかどうかを確認する方法がわからない…CentOSがおかしいですね。次のバージョンが機能しない限り、使用しないでください。
# into separate file and stop their further processing
if ($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
& ~
}
これはCentOS 7で動作し、メッセージの内容を確認します(「Shorewall」を-j LOGルールメッセージの内容に置き換えます)。
# into separate file and stop their further processing
if ($msg contains 'Shorewall') and \
($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
& ~
}
これは他のシステム(Ubuntu、Debian、openSUSE)でも機能します。これが最善の方法です。メッセージから文字列を検索しないでください。
# into separate file and stop their further processing
if ($syslogfacility-text == 'kern') and \\
($msg contains 'IN=' and $msg contains 'OUT=') \\
then -/var/log/firewall
& ~
これは基本的なopenSUSEシステムにあります(すべてのディストリビューションに存在する必要があると思いますが、欠落しています)。違いは「&~」ではなく「stop」のようです。すべてのシステムが両方の構文をサポートしているわけではありません。
if ($syslogfacility-text == 'kern') and \
($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
stop
}
上記のように、logrotate.dファイルも忘れないでください。
vim /etc/logrotate.d/firewall
含む:
/var/log/firewall {
rotate 7
size 500k
postrotate
# before using this, run the command yourself to make sure
# it is right... the daemon name may vary
/usr/bin/killall -HUP rsyslogd
endscript
}