web-dev-qa-db-ja.com

iptablesのカスタムログファイルの構成

ドロップされたパッケージを/var/log/messagesではなくカスタムファイルに記録しようとしています。

これを実現するために、構成ファイルの最後に次の2行を追加しました。

    -A INPUT -m limit --limit 5/min -j LOG --log-prefix "IPTables-INPUT-Dropped: " --log-level 4
    -A OUTPUT -m limit --limit 5/min -j LOG --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4

これが機能するのは、デフォルトでINPUTチェーンとOUTPUTチェーンをDROPとして構成しているためです。したがって、パッケージが以前のルールを満たさない場合は、ログに記録されて削除されます。

ただし、カスタムファイルにログを記録することはできません。それらは/var/log/messagesに正常にログインしますが、/var/log/iptables.logにログオンしてほしいです。次の内容のファイル/etc/rsyslog.d/iptables.confを作成しました。

    :msg, contains, "IPTables-INPUT-Dropped: " - /var/log/iptables.log
    & ~

次に、rsyslogを再起動し、/etc/init.d/rsyslog restartをドロップして、ドロップされることがわかっているパッケージをいくつか送信しました。ただし、それらはiptables.logに記録されておらず、/var/log/messagesにログオンしています。

不足している構成はどれですか?

[〜#〜] solved [〜#〜]問題は、-/の間にスペースを入れてはならないことです

8
eez0

問題は、-と/の間にスペースを入れないことです。

4
eez0

これは、ulogdを使用した代替アプローチです。 -m LOGが使用するカーネルロギングメカニズムを停止するため、このメカニズムをお勧めします(dmesgログがいっぱいになるという重大な副作用もあります)。

まず、apt-get install ulogdで取得できるulogdが必要です。 /etc/ulogd.confを編集し、このモジュールを有効にします(行の先頭にある#を削除して):

plugin="/usr/lib/ulogd/ulogd_LOGEMU.so"

セクション[LOGEMU]を変更/追加します。

[LOGEMU]
file="/var/log/iptables.log"
sync=1

次に、/etc/init.d/ulogd restartを使用してulogdを再起動します。次に、-j LOGの代わりに、iptablesルールで-j ULOGを使用します。 ULOGモジュールには--log-levelの概念がないため、これらのオプションを削除できます。また、--ulog-prefixではなく--log-prefixを使用します。

2
Drav Sloan

これは次の方法で可能です。

Syslogでiptablesログを無効にするには、/etc/rsyslog.d/50-default.confで以下のように変更します。

*.*;auth,authpriv.none;kern.*=!kern.warning             -/var/log/syslog

別のファイルにログインするには、追加:

kern.=warning -/var/log/iptables.log

次に、syslogまたはrsyslogおよびtailログを再起動します

/etc/init.d/rsyslog restart

syslogrsyslogでも動作します

2
Rahul Patil

FYI:

& ~は新しいrsyslogでは非推奨です。代わりにstopを使用してください。

/ etc/rsyslog.d/10-iptables

if ( $msg contains 'IN=' and $msg contains 'OUT=' ) 
then { 
    /var/log/10-iptables.log
    stop
}

/ etc/logrotate.d/iptables

/var/log/iptables.log
{
        rotate 30
        daily
        missingok
        notifempty
        delaycompress

        postrotate
                service rsyslog rotate > /dev/null
        endscript
}

注:デフォルトのルール(50-デフォルト)に達する前に、プレフィックスを10に設定してキャッチします。

1
Rabin

Ulogdを使用した実用的なソリューション

a)開始時にこのモジュールがあることを確認してください

modprobe nf_log_ipv4
cp /etc/modules /etc/modules.bak
echo nf_log_ipv4 >> /etc/modules

b)/etc/ulogd.confファイルを編集して、それらのプラグインを有効にします(コメントを外す#)

plugin="/usr/lib64/ulogd/ulogd_inppkt_NFLOG.so"
plugin="/usr/lib64/ulogd/ulogd_filter_IFINDEX.so"
plugin="/usr/lib64/ulogd/ulogd_filter_IP2STR.so"
plugin="/usr/lib64/ulogd/ulogd_filter_PRINTPKT.so"
plugin="/usr/lib64/ulogd/ulogd_output_LOGEMU.so"
plugin="/usr/lib64/ulogd/ulogd_raw2packet_BASE.so"

最初のコメント付きスタックの前にこの行を追加します

stack=firewall11:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu11:LOGEMU

そして最後にファイルの最後にそれらの行を追加します

[firewall11]
group=11

[emu11]
file="/var/log/iptables.log"
sync=1

c)今、私はFirewalldではなく古い方法のiptablesスクリプトを使用することを好みます。私のiptablesスクリプトでは、これらの行をロギングに使用します。

# Log
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A FORWARD -j NFLOG
iptables -A LOGGING -j NFLOG --nflog-prefix "[firewall-drop]:" --nflog-group 11
iptables -A LOGGING -j DROP

d)最終部品

touch /var/log/iptables.log
systemctl restart ulogd

このコマンドで機能するかどうかを確認します

tail -f /var/log/iptables.log

イベント後にいくつかの行が表示されるはずです:nmap portscan、または単にマシンにtelnetで接続します(希望が無効になっているか、ファイアウォールで保護されています)。

0
elbarna