Belirli bir dosyadaki /etc/syslog.conf
günlük bilgilerini kaydetmek için dosyayı nasıl yapılandırabilirim iptables
.
Bu bilgileri ayrı ayrı kaydetmek istiyorum, böylece istediğimi kolayca ve hızlı bir şekilde çıkarabiliyorum.
Belirli bir dosyadaki /etc/syslog.conf
günlük bilgilerini kaydetmek için dosyayı nasıl yapılandırabilirim iptables
.
Bu bilgileri ayrı ayrı kaydetmek istiyorum, böylece istediğimi kolayca ve hızlı bir şekilde çıkarabiliyorum.
Yanıtlar:
İçin man sayfasına bir göz atın iptables
. İstediğiniz LOG
şeyi yapabilen bir hedef gösterir .
Günlük kaydı düzeyini LOG
4 olarak ayarlayın .
# DROP everything and Log it
iptables -A INPUT -j LOG --log-level 4
iptables -A INPUT -j DROP
syslog.conf
Bu iletileri ayrı bir dosyaya yazacak şekilde yapılandırın .
# /etc/syslog.conf
kern.warning /var/log/iptables.log
Sistem günlüğünü yeniden başlatın.
Debian / Ubuntu
$ sudo /etc/init.d/sysklogd restart
Fedora / CentOS / RHEL
$ sudo /etc/init.d/syslog restart
NOT: Bu günlük kaydı yöntemine sabit öncelikler denir. Sayılar veya adlar (1,2,3,4, ..) veya (HATA AYIKLA, UYARI, BİLGİ vb.).
Şans eseri kullanıyorsanız rsyslog
, şu şekilde mülke dayalı bir filtre oluşturabilirsiniz:
# /etc/rsyslog.conf
:msg, contains, "NETFILTER" /var/log/iptables.log
:msg, contains, "NETFILTER" ~
Ardından, günlüğe kaydetmek istediğiniz iptables kurallarınıza thils anahtarını ekleyin:
–log-prefix NETFILTER
Alternatif olarak, bu tür özellik filtresini kullanarak iletileri günlüğe kaydedebilirsiniz:
:msg, startswith, "iptables: " -/var/log/iptables.log
& ~
:msg, regex, "^\[ *[0-9]*\.[0-9]*\] iptables: " -/var/log/iptables.log
& ~
NOT: Bu 2. yöntemde herhangi bir değişiklik yapılması gerekmez iptables
.
/var/log/iptables
ve içine kaydedilir /var/log/messages
. Bu verilerden sadece bir kopya istiyorumiptables.log
Bu, güvenlik duvarınızın herhangi bir aklı başında güvenlik duvarında olduğu gibi zaten günlükler oluşturduğunu varsayar. Bazı örnekler için slm örneğindeki "NETFILTER" gibi tanımlanabilir bir mesaj gerektirir.
rsyslog.d'de dosya oluşturma
vim /etc/rsyslog.d/10-firewall.conf
Bu CentOS 7'de çalışır. IN ve OUT aramaktan başka güvenlik duvarından geldiğini nasıl doğrulayacağımı bilmiyorum ... CentOS garip. Bir sonraki sürüm çalışmadığı sürece bunu kullanmayın.
# into separate file and stop their further processing
if ($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
& ~
}
Bu, CentOS 7'de çalışır ve ileti içeriğini de denetler ("Shorewall" yerine -j LOG kuralınızın iletisinde bulunanlarla değiştirin):
# into separate file and stop their further processing
if ($msg contains 'Shorewall') and \
($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
& ~
}
Bu diğerlerinde de çalışır (Ubuntu, Debian, openSUSE). Ve bunu yapmanın en iyi yolu bu. Mesajda dize aranmaz:
# into separate file and stop their further processing
if ($syslogfacility-text == 'kern') and \\
($msg contains 'IN=' and $msg contains 'OUT=') \\
then -/var/log/firewall
& ~
Ve burada varsayılan bir openSUSE makinesinin sahip olduğu (ki her dağıtımın sahip olması ve eksik olması gerektiğini düşünüyorum) (fark "& ~" yerine sadece "dur" gibi görünüyor; tüm sistemler her iki sözdizimini desteklemiyor):
if ($syslogfacility-text == 'kern') and \
($msg contains 'IN=' and $msg contains 'OUT=') \
then {
-/var/log/firewall
stop
}
Yukarıdakilerin tümü için bir logrotate.d dosyasını da unutmayın:
vim /etc/logrotate.d/firewall
kapsamak:
/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
}