Aramaya dayalı olarak BIND'de komut dosyaları yürütmek mümkün mü


9

Yerel ağımda BIND'ı DNS sunucusu olarak ayarlamak ve arama geldiğinde komut dosyalarını yürütmek mümkün mü?

Gelen DNS aramasına dayalı bir Python veya Bash betiği yürütmek istiyorum, bunu nasıl çözebilirim?

Bind'de mümkünse lütfen bana Ubuntu üzerinde çalışan diğer DNS sunucusu uygulamalarında bunun mümkün olup olmadığını söyle.

Çok teşekkür ederim.


1
Bu bana biraz tuhaf geliyor, ne yapmaya çalıştığınızı sorabilir miyim?
sr_

Bu biraz garip olabilir;) Yapmaya çalıştığım şey, aramanın hedef IP'si belirli bir yabancı ülkedeyse, veritabanımda arama yapmak ve eğer öyleyse, yönlendirici, belirli bir ISS'ye veya bazı durumlarda bir VPN bağlantısı olarak da işlev görür. Çok fazla rota kurmaya çalıştım,% 99'u asla kullanılmayacak ve performans çok kötü. Talep üzerine yapabilirsem, DNS performansı kötü olacaktır, ancak benim durumumda, bunun herhangi bir etkisi yoktur.
Gunnar

Hmm, Macar web sitesi Google Ad-blah kullanıyorsa, bu korkunç bir şekilde başarısız olabilir, değil mi? (Ama alternatif bir fikrim de yok, üzgünüm.)
sr_

Neyi başarmaya çalıştığınızı merak ediyorum, çünkü ne olması gerekecek, yanlış olabilecek ve daha sonra DNS'nizde bir rota ayarlayacak bir coğrafi konuma karşı eşleşmeniz gereken bir IP'den bir istek alacaksınız. sunucu bu IP'ye belirli bir yolla yanıt verecek, bu da talebin zaten BIND'a girmesinden sonra hiçbir anlam ifade etmiyor mu?
Karlson

Ulaşmaya çalıştığınız şeyle ilgili tahminim doğruysa (belirli bağlantıları standart olmayan ağ geçitleri üzerinden yönlendirin), BIND bunu yapmak için yanlış yer değil mi? Politika yönlendirmesini ve / veya iptables'ı incelediniz mi?
Alexios

Yanıtlar:


1

BIND günlüklerini ayrıştırmayı veya BIND'a müdahale etmeyi gerektirmeyen iki ek seçenek düşünebilirim.

1) Bağlantı noktası yansıtma - paketleri çoğaltın ve bunları uygulamanın dinlediği, DNS isteklerini ayrıştırdığı ve harekete geçtiği ayrı bir bağlantı noktasına gönderin. dpktveya scapyveya benzer paket hazırlama kütüphaneleri, ham istekleri ayrıştırmanıza yardımcı olur.

2) İstekleri pasif olarak izlemek için bir tür paket koklama kütüphanesi kullanın. İşte bir örnek scapy:

from scapy.all import *

def handler(req):
    if req.haslayer(DNS) and req.getlayer(DNS).qr == 0:
        ip = req.getlayer(IP)
        dns = req.getlayer(DNS)

        q = dns.qd
        print q.qname # simply print domain name


if __name__ == '__main__':
    sniff(iface="eth0", filter="udp and port 53", prn=handler, store=0)

Açıkçası, bu sadece ilkel bir örnek. Yalnızca sorgulanan etki alanının adını yazdırır, ancak elbette çok fazla mantık ekleyebilirsiniz. Scapy belgelerine başvurursanız, DNS isteğindeki tüm alanların hazır olduğunu görürsünüz.


Bu ilginç görünüyor. Bunu araştıracağım. Teşekkürler :-)
Gunnar

0

Bağlama sunucusu günlüğünü izleyerek bunu yapabilirsiniz (sorgu günlüğü açık olmalıdır). İyi şanslar...


Tüm bağlama sorgularının günlüğe kaydedilmesinin ciddi bir performans kaybı olduğunu unutmayın. Bunu herhangi bir üretim düzeyi yetkili sunucuda tavsiye etmem .
Shadur

Bu bağlanma sunucusunun yüküne bağlıdır. Ve günlükleri örneğin bir ram diskine de yazabiliriz /dev/shm.
Nils

günlüğünüzü yazın ve swatchkomut dosyanızı çağırmak için günlüklerde veya OSSEC'i çalıştırın . her iki durumda da uzun vadede pek iyi bir fikir değil.
Jodie C

0

Olaylar bağlama içinde uygulandığı gibi bir şey yoktur, buna gerek yoktur.

Bazı kuruluşlarda bazı kullanıcılara erişimi kısıtlamak için kullanılan geçerli güvenlik duvarlarına bakabilirsiniz. Orada istediğini başarma şansın daha fazla olurdu.

Rotaları ayarlamak da iyi bir fikir gibi görünüyor, sonunda bağlama ve tetiklenen komut dosyası yürütme ile elde etmek istediğiniz şey de verimsiz olacak:

for each dest IP 
look up through your database  
if match set the route
then the OS will see and use the root

Çok sayıda rota ayarlamak sorun değil ve performansı belirgin bir şekilde etkilemez. Kurumsal yönlendiricilerin kaç güzergahı olduğunu düşünüyorsunuz? Yüzlerce? tam olarak değil ... Ve mutlaka süslü bir donanım yapılandırmasına sahip değiller. Cidden, sen iyisin, ciddi işletim sistemleri özellikle birçok rotayı idare etmek ve görünümü optimize etmek için tasarlanmıştır.

İlk etapta yapmak istediklerinizin yanı sıra, yönlendirme tablosunun üstünde başka bir veritabanı olan bir veritabanı kullanmaktır. Basit tutun. BGP sunucularında birçok yolları aslında siyasi / mali nedenlerle tercih / seçilir, her ISS / kuruluş bunu yapabilir ve tüm bu amaçla eklenti belirli rotaları. Geçiş maliyeti veya mahkeme kararı genellikle bu tür önlemlerin sebebidir.

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.