İptables tarafından engellenen IP adreslerini nasıl listeleyebilirim?


16

SSH'ye karşı kaba kuvvet saldırılarını önlemek için bazı iptables kuralları ekledim (aşağıda). Soru şudur: Engellenen IP adreslerini nasıl listeleyebilirim?

(1)
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP

1
iptables -L INPUT -v -nengellenen tüm ipleri gösterir
dinamik

Yanıtlar:


16

Seçeneklerden biri, bırakılan paketlerinizin herhangi birini aşağıdaki gibi bir kuralla günlüğe kaydetmek olabilir:

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl -j LOG --log-prefix "FW_DROPPED: "

Bunu DROPkuraldan hemen önce ekleyin . Ardından, içinde "FW_DROPPED" olan herhangi bir şey için syslog dosyasını grep edebilirsiniz ve IP listesi orada olacaktır. Günlük dosyasındaki girdiler şöyle görünür:

Jun  3 08:05:57 some-machine kernel: [15852451.420557] FW_DROPPED: IN=eth0 OUT= MAC=00:50:ba:4a:d9:e3:00:12:17:3a:e3:64:08:00 SRC=228.23.45.189 DST=192.168.1.1 LEN=48 TOS=0x00 PREC=0x00 TTL=106 ID=10941 PROTO=TCP SPT=58212 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0

Bu nedenle, "SRC =" ifadesini izleyen öğelerin kesilmesi size bırakılan IP'leri gösterir. Yinelenenleri ortadan kaldırarak sıralayın ve listeniz olur.

Ben iptables / netfilter için en yararlı belgeler olarak iptables öğretici buldum .


Evet, bunu yapmanın yolu budur.
Brent

Bu, aynı kurala giriş yapmadığınız ve bırakmadığınız için kurallarınızı çoğaltmanızı gerektirir.
David Pashley

3
Sorunlu paketleri günlüğe kaydedip bıraktığı bir kullanıcı zinciri oluştursa daha da iyi olurdu. Bunu yaparak gereksiz yere çoğaltma kaldırılır. Bu şekilde yapılabilir: iptables -N saldırıları; iptables -A INPUT -i eth0 -p tcp --dport 22 -m durum --stat YENİ -m son - güncelleme - saniye 60 --hitcount 8 --rttl - adı SSH -j saldırıları; iptables -A saldırıları -j LOG --log-öneki "FW_DROPPED:"; iptables -A saldırıları -j DAMLA
Cristian Ciupitu

1
Kabul. Tablolar / zincirler gidilecek yoldur; iptables bütün mesele, gerçekten. Kabul edilmiş, sessizce düşürülmüş, sesli olarak reddedilmiş, atıldı, sel baskınları, yasadışı, şüpheli problar, şüpheli taramalar, bilinmeyen türler ve izlenen trafik için ayrı tablolar oluşturuyorum. FW'lerim bu eski komut dosyasına dayanıyor (uyarı: kendi kendine tanıtım): code.google.com/p/klondike-firewall/source/browse/trunk/…
yukondude

1
İpozgaj ve David Pashley'nin referans verdiği ipt_recent modülü oldukça şık bir eklentidir, ancak belirli bir IP'nin düştüğü (farklı --log-önek ayarlarında olduğu gibi) aynı ince ayrıntıyı sağlayamaz veya zaman damgalarıyla saldırıların uzun geçmişi. Her iki tekniği de birlikte kullanmak kesinlikle iyi bir fikirdir.
yukondude


4

Bakmak

/proc/net/ipt_recent/YOURNAME

Burada YOURNAME, iptables kuralınızda --name seçeneğiyle kullandığınız addır.


Bazı dağıtımlarda (örn. Debian) geçerli yol:/proc/net/xt_recent/[list-name]
itachi


1

Yaptığım şey, örneğin giriş adres sahteciliği için, zinciri tanımlamaktır SPOOF_REJECT:

iptables -N SPOOF_REJECT
iptables -A SPOOF_REJECT -j LOG --log-prefix "Input spoof detected: "
iptables -A SPOOF_REJECT -j REJECT

daha sonra, sahte olduklarında paketleri bu zincire göndermek için:

iptables -A INPUT -i $EXT_DEV1 -s $INT_NET -j SPOOF_REJECT
iptables -A INPUT -i $EXT_DEV2 -s $INT_NET -j SPOOF_REJECT

Bu günlük satırlarından yalnızca IP adreslerini almak için sistem günlüğünde bir satır almak için bıraktığınız veya reddettiğiniz her paket kategorisi için böyle bir şey yapabilirsiniz, daha sonra düzenli olarak grep, cut, sort.

Her kategori için ayrı zincirler kullanmanın yararı, yapılandırmanızın daha kolay hale gelmesi ve iptablesyapılandırmanızı daha kolay okumasıdır. Daha fazla kural ekledikçe, belirli farklı eylemler için ayrı zincirler kullandığınızdan memnun olacaksınız.


Sahte paketleri tam olarak nasıl tespit ediyorsunuz? Deneyimlerime göre, bu genel durumda imkansızdır.
MarkR

Yukarıdaki sadece bir örnektir. Burada, harici bir cihazdan gelen ancak ağımın içindeki bir IP adresinden geldiğini iddia eden INPUT zincirine gelen herhangi bir paket arıyorum. Bu durumda, adres sahteciliğini kesinlikle tespit edebilirim, ancak evet, genel durumda işler farklı.
Eddie

1

"Soru şu: Engellenen IP adreslerini nasıl listeleyebilirim?"

BANNED zinciri oluşturun:

iptables -N BANNED
iptables -F BANNED

Bir günlük zinciri oluşturun:

iptables -N BANNEDLOG
iptables -F BANNEDLOG
iptables -A BANNEDLOG -j LOG --log-prefix "BANNED:" --log-level 6
iptables -A BANNEDLOG -j DROP

Diğer kuralların çoğundan önce INPUT zincirindeki yasaklanmış zincire atlama ekleyin

...
iptables -A INPUT -j BANNED
...

Şimdi yasaklı zincire ipaddresses ekleyin:

flock -w 5 /var/lock/iptables -c 'iptables -A BANNED -s 140.130.20.202/32 -i eth0 -m comment --comment "2012-03-19 23:49:33 accesslog" -j BANNEDLOG'
etc...

Yorum seçeneklerine sahip bir veritabanı gibi de kullanabilirsiniz, böylece iptables birçok işlem tarafından sık sık güncellenirken, akın ne zaman ve neden vb.

Yasaklanmış zincirdeki yasaklanmış adresleri ve kuralları görüntülemek için:

iptables -S BANNED

Yeni sıralanan benzersiz ipadresleri görüntülemek için:

iptables -S BANNED | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u

Sunucularımda syslog dosyalarını ve webloglarını kontrol eden bir dizi daemon var, bu yüzden herhangi biri tarafından kötü bir şey deneniyorsa, adresi otomatik olarak birkaç gün boyunca, türüne ve ciddiyetine ve önceki saldırıların sayısına bağlı olarak yasaklanır. Bilgi bir mysql veritabanına kaydedilir ve periyodik olarak süresi dolar. Adresler ayrıca kümedeki diğer tüm makinelere mysql çoğaltma üzerinden dağıtılır, böylece korunur ve senkronize olurlar. Yazılımım da ağın sahibini arar ve ISS'ye şikayette bulunur.

10 yıl çalıştıktan sonra, herkesin yakında kullanabilmesini umuyorum. Şu anda yaklaşık 1,5 milyon ip adresi geçmişim var ve yüz binlerce posta ve ssh saldırısı bildirerek net temizlemeye yardımcı oldum. Daha fazla kullanırsanız, umarım daha fazla etkisi olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.