OpenBSD'de pf ile kötüye kullanılan IP adresleri nasıl engellenir?


13

Nginx günlüklerinden kötü şeyler yapan bir IP adresi olduğunu görebiliriz.

Bunu bir pfkomutla ve daha sonra kalıcı olarak nasıl engelleyebiliriz /etc/pf.log? x.x.x.x/24Bu IP için a'yı nasıl engelleyebiliriz ? Örnek: 1.2.3.4

GÜNCELLEME: hayır, OpenBSD'nin / etc dosyasında izin ver / reddet komutuna sahip olmadığı anlaşılıyor. Ve AFAIK, kötü niyetli IP adreslerini engellemek için en iyi tavsiyeyi pf kullanıyor.

# cd /etc 
# ls -la|egrep -i 'deny|allow'
# uname -a
OpenBSD foo.com 5.4 GENERIC.MP#0 amd64
# 

/ Etc dizininde bir hosts.deny dosyanız var mı?
ryekayo

Yanıtlar:


13

Bunu yapmanın en iyi yolu, bir tablo tanımlamak ve ana bilgisayarları engellemek için bir kural oluşturmaktır pf.conf:

table <badhosts> persist
block on fxp0 from <badhosts> to any

Ardından dinamik olarak IP adresleri ekleyin / silin:

$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T delete 1.2.3.4

Diğer 'tablo' komutları flush(tümünü kaldır) replaceve içerir show. Daha fazlası man pfctliçin bakınız .

Daha kalıcı bir liste istiyorsanız listeyi bir (veya daha fazla) dosyada saklayabilirsiniz. İçinde pf.conf:

table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on fxp0 from <badhosts> to any

IP adresleri yerine ana makine adları da ekleyebilirsiniz. Arasında "Tablolar" bölümüne bakın man pf.confve man pfctl.

Not : Yukarıdaki örneklerde, internete dönük arayüzün fxp0kurulumunuza göre değiştiği varsayılmaktadır . Ayrıca, içindeki kuralların pf.confsırayla değerlendirildiğini ve geçerli olan son eşleme kuralını dikkate aldığını blockveya passkurallara uyduğunu unutmayın. Bu kural seti ile

table <badhosts> persist
block on fxp0 from <badhosts> to any
pass inet tcp from 192.168.0.0/24 to any port 80

ve badhostsmasaya 1.2.3.4 ve 192.168.0.10 ekledikten sonra

$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T add 192.168.0.10

1.2.3.4 192.168.0.10'daki gelen tüm trafik engellenir, ancak ikinci ana bilgisayar olacak diğer makinelerin limanına 80 çünkü bağlantı yapabilmek passkural maçları ve geçersiz kılar blockkuralı.


4
Blok kuralı olarak daha kolay belirtilebilir block in from <badhosts>. Arabirimi veya to anyparçayı belirtmenize gerek yoktur .
kurtm

4

Diğer yanıtlardan, engellemeye çalıştığınız kötü ev sahiplerinin gerçek bir tablosunu oluşturmanız gerektiği açık değildir.

Bu pf.conf dosyasına gider, örneğin iki badguys dosyam var, 1 & 2 badguys1 gelip gidenler içindir ve badguys2 kalıcı kara listeleme içindir.

Bu nedenle, bir süre rahatsızlık veren birinin ipini eklemeniz gerekiyorsa, bunları badguys1'e ekleyin.

Şimdi, pf.conf dosyanızda buna sahipsiniz. Örneğimde en1 kullanıyorum, çünkü bu benim WiFi arayüzüm. Bunu, ağınızın geldiği arabirime ayarlayın.

table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on en1 from <badhosts> to any

Şimdi badguys1'e geçici adresler ekleyebilirsiniz. (Badhosts DEĞİL, bu tablolar için bir ad)

sudo pfctl -t badguys1 -T add 185.130.5.160

1 table created.
1/1 addresses added.

Her ne kadar 1 tablo oluşturulmuş diyor olsa da - aslında yeni bir tablo oluşturmak değil, ip ekler. Şimdi badguys1'e bakarsanız, yeni IP'yi göreceksiniz.

sudo pfctl -t badhosts -T show

3

Bu bilgiyi web sitesinden aldım ve kötü bilgim için beni affettim OpenBSD, ama işte gidiyor. Bu URL'ye bir göz atın . Buna göre, bir IP'yi engelleyeceğinizi belirtiyor:

echo '123.123.123.123' >> /etc/pf.blocked.ip.conf

Ardından güvenlik duvarını yeniden başlatırsınız:

pfctl -d
pfctl -e -f /etc/pf.conf

Veya güvenlik duvarı türünü yeniden başlatmadan eklemek için:

pfctl -t blockedips -T add 111.222.333.444

Şimdi eklenip eklenmediğini kontrol etmek için şunu yazın:

pfctl -t blockedips -T show

Güncelleme: Belki bu yardımcı olabilir.

  • Aşağıdaki dosyayı vi'de açın:

    vi /etc/pf.conf

  • Aşağıdaki kod satırını ekleyin:

    table <blockedips> persist file "/etc/pf.blocked.ip.conf" ext_if="bge0" # interface connected to internet

  • Bu noktadan sonra, güvenlik duvarını yeniden başlatmayı ve IP'nin yazarak engellendiğini onaylamayı denerdim:

    pfctl -d
    pfctl -e -f /etc/pf.conf
    pfctl -t blockedips -T show
    

1
Tablonun bloke edilmesi gerektiğini düşünüyorum, ancak bu kısım
howto'da

Bakalım nasıl yapacağımı arayabilir miyim.
ryekayo

2
Pf.conf dosyasını yeniden yüklemek için pf'yi devre dışı bırakmaya ve yeniden etkinleştirmeye gerek yoktur. pfctl -f /etc/pf.confyeterlidir.
Zé Loff

1
(Kötü) NASIL'lar düşünmeyi caydırır ve kopyalamayı teşvik eder. Okuyun man pf.conf, OpenBSD kılavuz sayfalarının ne kadar iyi olduğuna şaşıracaksınız. Ayrıca, pf.confdosyaların bir bütün olarak okunması gerekir (kuralların koyulma sırası çok önemlidir), bu nedenle tek satırları kopyalamak ve yapıştırmak genellikle kötü bir fikirdir. Dosyayı ve tablekuralı oluşturun (bu çok doğrudur), ancak tüm pf.confdosyanızı paylaşırsınız veya dosyadaki uygun blockkuralı ve konumunu bulmak size bağlıdır.
Zé Loff

1
@ryekayo sen dahil haklı sürece ext_if="bge0"makro ve bir blok kural yok neden o zaman olacak ne olursa olsun bunu içine koymak çaba, eksik (yani değil uygun bir cevap) çünkü, cevabınızı eleştiriyorlar. Ayrıca NASIL ile ilgili yorumum OP'de ele alındı, siz değil (özür dilerim, bunu açıkça belirtmeliydim).
Zé Loff
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.