Có thể thực thi các tập lệnh trong BIND dựa trên tra cứu


9

Có thể, để thiết lập BIND làm máy chủ DNS trên mạng cục bộ của tôi và thực hiện các tập lệnh thực thi khi nó được tra cứu?

Tôi muốn thực thi tập lệnh Python hoặc Bash, dựa trên tra cứu DNS đến, làm cách nào để giải quyết vấn đề này?

Nếu có thể trong Bind, vui lòng cho tôi biết làm thế nào và nếu không, hãy cho tôi biết nếu có thể trong các triển khai máy chủ DNS khác, chạy trên Ubuntu.

Cảm ơn rât nhiều.


1
Điều này có vẻ hơi kỳ lạ đối với tôi, tôi có thể hỏi bạn đang cố gắng đạt được điều gì không?
sr_

Nó có thể là lạ máy chủ, cũng hoạt động như một bộ định tuyến, đến một ISP cụ thể hoặc trong một số trường hợp là kết nối VPN. Tôi đã cố gắng thiết lập rất nhiều tuyến đường, 99% sẽ không bao giờ được sử dụng và hiệu suất rất tệ. Nếu tôi có thể làm điều đó theo yêu cầu, hiệu suất DNS sẽ rất tệ, nhưng trong trường hợp của tôi, điều này không có bất kỳ ảnh hưởng nào.
Gunnar

Hmm, điều này có thể thất bại khủng khiếp nếu, trang web Hungary sử dụng Google Ad-blah, phải không? (Nhưng tôi cũng không có ý tưởng nào khác, xin lỗi.)
sr_

Tôi khá tò mò về những gì bạn đang cố gắng thực hiện vì những gì sẽ xảy ra, bạn sẽ nhận được yêu cầu từ một IP mà bạn sẽ phải khớp với một vị trí địa lý, có thể là sai và sau đó thiết lập tuyến đường trên DNS của bạn Máy chủ phản hồi IP đó thông qua một tuyến cụ thể, điều này có nghĩa gì vì yêu cầu đã được đưa vào BIND?
Karlson

Nếu dự đoán của tôi về những gì bạn đang cố gắng đạt được là chính xác (định tuyến một số kết nối nhất định thông qua các cổng không chuẩn), thì BIND có phải là nơi sai để làm điều đó không? Bạn đã xem xét định tuyến chính sách và / hoặc iptables chưa?
Alexios

Câu trả lời:


1

Tôi có thể nghĩ đến hai tùy chọn bổ sung không yêu cầu phân tích nhật ký BIND hoặc can thiệp vào BIND.

1) Phản chiếu cổng - sao chép các gói và gửi chúng đến một cổng riêng nơi ứng dụng đang lắng nghe, phân tích cú pháp các yêu cầu DNS và thực hiện hành động. dpkthoặc scapyhoặc các thư viện chế tạo gói tương tự sẽ giúp bạn phân tích các yêu cầu thô.

2) Sử dụng một số loại thư viện đánh hơi gói để theo dõi thụ động các yêu cầu. Dưới đây là một ví dụ sử dụng 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)

Rõ ràng, đây chỉ là một ví dụ nguyên thủy. Nó chỉ in tên miền đã được truy vấn, nhưng tất nhiên bạn có thể thêm rất nhiều logic. Nếu bạn tham khảo tài liệu về tài liệu lưu trữ, bạn sẽ thấy rằng tất cả các trường từ yêu cầu DNS đều có sẵn.


Điều này có vẻ thú vị. Tôi sẽ xem xét này. Cảm ơn :-)
Gunnar

0

Bạn có thể làm như vậy bằng cách theo dõi nhật ký máy chủ liên kết (phải ghi nhật ký truy vấn). Chúc may mắn...


Lưu ý rằng việc ghi nhật ký tất cả các truy vấn liên kết là một hiệu suất nghiêm trọng . Tôi sẽ không đề xuất điều này trên bất kỳ máy chủ có thẩm quyền cấp sản xuất nào .
Shadur

Phụ thuộc vào tải của máy chủ liên kết đó. Và người ta có thể ghi các bản ghi vào một đĩa ram /dev/shm, ví dụ , quá.
Nils

đăng nhập và sau đó chạy swatchhoặc OSSEC trên nhật ký để gọi tập lệnh của bạn. dù sao đi nữa, đó không phải là một ý tưởng tốt
Jodie C

0

Không có những thứ như các sự kiện được thực hiện trong ràng buộc, nó không cần điều đó.

Bạn có thể nhìn xung quanh tường lửa ứng dụng, những người được sử dụng trong một số tổ chức để hạn chế quyền truy cập đối với một số người dùng. Ở đó bạn sẽ có nhiều cơ hội đạt được những gì bạn muốn.

Thiết lập các tuyến đường cũng có vẻ là một ý tưởng tốt, cuối cùng, những gì bạn muốn đạt được với việc thực thi tập lệnh liên kết và kích hoạt cũng sẽ không hiệu quả: bạn phải:

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

Thiết lập vô số tuyến đường không phải là vấn đề và sẽ không ảnh hưởng đến hiệu suất theo cách đáng chú ý. Bạn nghĩ có bao nhiêu tuyến đường bộ định tuyến của công ty? hàng trăm? không hoàn toàn ... Và họ không nhất thiết phải có một cấu hình phần cứng ưa thích. Nghiêm túc mà nói, bạn vẫn ổn, hệ điều hành nghiêm túc được thiết kế đặc biệt để xử lý nhiều tuyến đường và tối ưu hóa việc tra cứu.

Bên cạnh những gì bạn muốn làm ở nơi đầu tiên là sử dụng một cơ sở dữ liệu trên đầu bảng định tuyến, đó sẽ là một loại cơ sở dữ liệu khác. Giữ cho nó đơn giản. Trên các máy chủ BGP, nhiều tuyến thực sự được chọn / ưa thích vì lý do chính trị / tài chính, mỗi ISP / tổ chức có thể làm điều đó và tất cả đều thêm các tuyến cụ thể cho mục đích này. Chi phí quá cảnh hoặc lệnh của tòa án thường là nguyên nhân của các biện pháp đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.