เป็นไปได้ไหมที่จะเรียกใช้งานสคริปต์ใน BIND โดยอิงตามการค้นหา


9

เป็นไปได้หรือไม่ที่จะตั้งค่า BIND เป็นเซิร์ฟเวอร์ DNS ในเครือข่ายท้องถิ่นของฉันและสร้างสคริปต์เมื่อมันได้รับการค้นหา?

ฉันต้องการเรียกใช้งานสคริปต์ Python หรือ Bash ตามการค้นหา DNS ขาเข้าฉันจะแก้ไขปัญหานี้ได้อย่างไร

ถ้าเป็นไปได้ในการผูกโปรดบอกฉันว่าและถ้าไม่บอกฉันว่ามันเป็นไปได้ในการใช้งานเซิร์ฟเวอร์ DNS อื่น ๆ ที่ทำงานบน Ubuntu

ขอบคุณมาก.


1
นี่เป็นเรื่องแปลกสำหรับฉันฉันขอให้คุณพยายามทำอะไรให้สำเร็จ
sr_

มันอาจจะแปลก;) สิ่งที่ฉันพยายามทำคือการค้นหาในฐานข้อมูลของฉันหาก IP ปลายทางของการค้นหาอยู่ในต่างประเทศและถ้าเป็นฉันต้องการตั้งค่าเส้นทางในของฉัน เซิร์ฟเวอร์ที่ทำหน้าที่เป็นเราเตอร์กับ ISP ที่เฉพาะเจาะจงหรือในบางกรณีการเชื่อมต่อ VPN ฉันพยายามตั้งค่าเส้นทางจำนวนมาก 99% จะไม่ถูกใช้งานและประสิทธิภาพแย่มาก ถ้าฉันสามารถทำได้ตามความต้องการประสิทธิภาพ DNS จะไม่ดี แต่ในกรณีของฉันสิ่งนี้จะไม่มีอิทธิพลใด ๆ
Gunnar

อืมมันอาจล้มเหลวอย่างน่ากลัวถ้าเว็บไซต์ฮังการีใช้ Google Ad-blah ใช่ไหม? (แต่ฉันก็ไม่มีความคิดอื่นเหมือนกันขอโทษด้วย)
sr_

ฉันค่อนข้างอยากรู้อยากเห็นว่าคุณกำลังพยายามทำอะไรให้สำเร็จเพราะสิ่งที่จะเกิดขึ้นคุณจะได้รับคำขอจาก IP ที่คุณจะต้องเทียบกับที่ตั้งทางภูมิศาสตร์ซึ่งอาจเป็นเท็จแล้วตั้งค่าเส้นทางบน DNS ของคุณ เซิร์ฟเวอร์เพื่อตอบสนองต่อ IP นั้นผ่านเส้นทางที่เฉพาะเจาะจงซึ่งไม่เหมาะสมเนื่องจากคำขอได้ทำให้เป็น BIND แล้ว?
Karlson

หากฉันเดาว่าคุณกำลังพยายามทำอะไรให้ถูกต้อง (กำหนดเส้นทางการเชื่อมต่อบางอย่างผ่านเกตเวย์ที่ไม่ได้มาตรฐาน) ไม่ได้ผูกที่ผิดที่จะทำหรือไม่ คุณเคยดูนโยบายการกำหนดเส้นทางและ / หรือ iptables หรือไม่?
Alexios

คำตอบ:


1

ฉันสามารถนึกถึงตัวเลือกเพิ่มเติมสองตัวที่ไม่ต้องแยกวิเคราะห์บันทึก BIND หรือรบกวน BIND เลย

1) การทำมิเรอร์พอร์ต - แพ็คเก็ตที่ซ้ำกันและส่งไปยังพอร์ตแยกต่างหากที่แอปพลิเคชันกำลังฟังแยกวิเคราะห์คำขอ DNS และดำเนินการ dpktหรือscapyหรือการสร้างแพ็กเก็ตไลบรารีที่คล้ายกันจะช่วยให้คุณแยกวิเคราะห์คำร้องขอ raw

2) ใช้ไลบรารีการดักจับแพ็คเก็ตบางประเภทเพื่อติดตามการร้องขอ นี่คือตัวอย่างการใช้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)

เห็นได้ชัดว่านี่เป็นเพียงตัวอย่างดั้งเดิม มันพิมพ์ชื่อโดเมนที่ถูกสอบถามเท่านั้น แต่แน่นอนว่าคุณสามารถเพิ่มตรรกะได้อย่างมาก หากคุณอ้างอิงเอกสาร scapy คุณจะพบว่าฟิลด์ทั้งหมดจากคำขอ DNS พร้อมใช้งาน


มันดูน่าสนใจ ฉันจะตรวจสอบเรื่องนี้ ขอบคุณ :-)
Gunnar

0

คุณสามารถทำได้โดยการตรวจสอบล็อก bind-server (ต้องเปิดการบันทึกคิวรี) โชคดี...


โปรดทราบว่าการบันทึกแบบสอบถามที่ผูกทั้งหมดเป็นท่อระบายน้ำประสิทธิภาพที่รุนแรง ฉันจะไม่แนะนำสิ่งนี้ในเซิร์ฟเวอร์ที่เชื่อถือได้ในระดับการผลิตใด ๆ
Shadur

ขึ้นอยู่กับโหลดของ bind-server และสามารถเขียนบันทึกลงใน ram-disk เช่น/dev/shmกัน
นิลส์

บันทึกจากนั้นเรียกใช้swatchหรือ OSSEC บนบันทึกเพื่อโทรหาสคริปต์ของคุณ ไม่ใช่ความคิดที่ดีมากในระยะยาว แต่อย่างใด
โจดี้ซี

0

ไม่มีสิ่งใดที่จะถูกนำมาใช้เป็นเหตุการณ์ผูกมัดมันไม่ต้องการ

คุณสามารถดูไฟร์วอลล์ที่มีการใช้งานซึ่งใช้ในบางองค์กรเพื่อ จำกัด การเข้าถึงผู้ใช้บางคน ที่นั่นคุณจะมีโอกาสมากขึ้นในการบรรลุสิ่งที่คุณต้องการ

การตั้งค่าเส้นทางดูเหมือนว่าเป็นความคิดที่ดีเช่นกันในท้ายที่สุดสิ่งที่คุณต้องการให้บรรลุด้วยการเรียกใช้สคริปต์ที่ผูกและเรียกจะไม่มีประสิทธิภาพเช่นกัน: คุณต้อง:

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

การตั้งค่าเส้นทางจำนวนมากไม่ใช่ปัญหาและจะไม่ส่งผลกระทบต่อประสิทธิภาพการทำงานในลักษณะที่เห็นได้ชัดเจน คุณคิดว่าเราเตอร์ขององค์กรมีเส้นทางกี่เส้นทาง หลายร้อย? ไม่มาก ... และพวกเขาไม่จำเป็นต้องมีการกำหนดค่าฮาร์ดแวร์แฟนซี อย่างจริงจังคุณเป็นคนดีระบบปฏิบัติการที่จริงจังได้รับการออกแบบมาโดยเฉพาะเพื่อรองรับเส้นทางจำนวนมากและปรับการค้นหาให้เหมาะสม

นอกจากสิ่งที่คุณต้องการทำในตอนแรกคือการใช้ฐานข้อมูลที่ด้านบนของตารางเส้นทางซึ่งจะเป็นฐานข้อมูลประเภทอื่น ง่าย ๆ เข้าไว้. บนเซิร์ฟเวอร์ BGP เส้นทางจำนวนมากจะถูกเลือกจริง / ที่ต้องการด้วยเหตุผลทางการเมือง / การเงินแต่ละ ISP / องค์กรสามารถทำเช่นนั้นและพวกเขาทุกเส้นทางเพิ่มเฉพาะสำหรับวัตถุประสงค์นี้ ค่าใช้จ่ายในการขนส่งหรือคำสั่งศาลมักเป็นสาเหตุของมาตรการดังกล่าว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.