ドロップされたパッケージを/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 [〜#〜]問題は、-と/の間にスペースを入れてはならないことです
問題は、-と/の間にスペースを入れないことです。
これは、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
を使用します。
これは次の方法で可能です。
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
syslog
とrsyslog
でも動作します
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に設定してキャッチします。
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で接続します(希望が無効になっているか、ファイアウォールで保護されています)。