Как получить общедоступные адреса сервера DNS?

Проверьте вход в систему Ваши серверы (и компьютеры, они непосредственно продолжают работать). Не только ищите их учетную запись, но также и учетные записи, которые не являются известными администраторами. Ищите дыры в своих журналах. Если журнал событий был недавно очищен на сервере, это - подозреваемый.

Проверьте измененную дату на файлах на Ваших веб-серверах. Запустите быстрый скрипт, чтобы перечислить все недавно измененные файлы и рассмотреть их.

Проверьте последнее обновление дата на всей Вашей групповой политике и пользовательских объектах в AD.

Проверьте, что все Ваши резервные копии работают, и существующие резервные копии все еще существует.

Проверьте серверы, куда Вы выполняете Службы теневого копирования томов для предыдущей истории для пропавших без вести.

Я уже вижу много хороших перечисленных вещей и просто требуемых для добавления этих других вещей, которые можно быстро проверить. Это стоило бы того, чтобы сделать полный обзор всего. Но запустите с мест с новыми изменениями. Некоторые из этих вещей могут быть быстро проверены и могут повысить некоторые ранние красные флаги для выручения Вас.

0
задан 13 June 2012 в 09:32
3 ответа

На самом деле нет способа выполнить вашу задачу, потому что DNS-сервер может разрешать запросы любым удобным для него способом, и для клиента это черный ящик. Однако, можно приблизиться к ответу на ваш вопрос.

Уловка состоит в том, чтобы настроить поддомен со специальным сервером имен, ответ которого на любой запрос A просто повторяет IP-адрес хоста, который отправил запрос . Такой сервер имен может быть реализован в Perl с помощью модуля Net :: DNS :: Nameserver :


#!/usr/bin/perl

use Net::DNS::Nameserver;

Net::DNS::Nameserver->new(
    # w.x.y.z is the IP address of the host where this code is running
    LocalAddr => ['w.x.y.z'],
    ReplyHandler => sub {
        my ($qname, $qclass, $qtype, $peerhost, $query) = @_;
        my ($rcode, @ans, @auth, @add) = ('NXDOMAIN');
        print "Received query for $qname from $peerhost\n";

        if ($qtype eq 'A') {
            $rcode = 'NOERROR';
            push @ans, Net::DNS::RR->new("$qname 1 $qclass $qtype $peerhost");
        }
        return ($rcode, \@ans, \@auth, \@add, { aa => 1});
    },
)->main_loop;

Затем настройте запись NS некоторого домена, чтобы она указывала на этот специальный сервер имен. Я сделал это для домена под названием resolverid.acrotect.com . (В качестве услуги я оставлю код работающим там на следующие несколько дней.)

Затем отправьте несколько разных DNS-запросов от клиента в вашей сети:

dig +short cachebuster1.resolverid.acrotect.com
dig +short cachebuster2.resolverid.acrotect.com
dig +short cachebuster3.resolverid.acrotect.com

Это заставит ваш сервер имен разрешить запросы, связавшись с поддельным сервером имен, который отвечает IP-адресом машины, пересылающей запрос. В некоторых случаях этот адрес является «публичной» стороной вашего «частного» сервера имен, о чем вы и просили.

В остальных случаях инфраструктура более сложная. Например, если вы настроены на использование серверов DNS Google 8.8.8.8 и 8.8.4.4, вы фактически используете географически распределенный пул серверов имен. Сервер Google, который делает запрос к поддельному серверу имен, может не иметь IP-адреса, близкого к 8.8.8.8 или 8.8.4.4. Однако вы сможете увидеть, что он принадлежит Google, выполнив поиск ответа по обратному IP или WHOIS. (Интересно, что если вы выполните поиск обратного IP-адреса с помощью Google DNS, вы увидите, что Google оптимизировал обратный поиск IP-адреса на основе только что выполненного вами поиска A . PTR , который он возвращает, будет что-то. resolverid.acrotect.com . Чтобы прервать эту оптимизацию, вам нужно будет выполнить dig + trace -x abcd .)

1
ответ дан 4 December 2019 в 21:46

Я не верю, что вы сможете (благодаря грамотному использованию DNS вашим клиентом).

Весь смысл наличия рекурсивного преобразователя DNS для вас заключается в том, что он будет ответить на ваши вопросы от вашего имени. Откуда они их взяли, не ваше дело (просто DNS-клиент).

0
ответ дан 4 December 2019 в 21:46

Команда source доступна только в bash , а команда супервизора выполняется sh . Я бы рекомендовал использовать сценарий для выполнения ваших команд:

/etc/supervisor/conf.d/my_app.conf

[program:my_app]
command = bash /path/to/app/init.sh
directory = /path/to/app/
user = ubuntu
autostart=true
autorestart=true

/path/to/app/init.sh

#!/bin/bash

beanstalkd -l 127.0.0.1 -p 11300
source /home/mf/virtualenvs/env/bin/activate    
python manage.py command1
python manage.py command2

Единственная проблема в том, что супервизор будет только иметь контроль над сценарием, а не над командами. Если у вас есть ситуация, когда вы хотите, чтобы супервизор управлял определенным процессом и поддерживал его активность, я бы порекомендовал использовать exec в вашем файле инициализации bash, таким образом супервизор будет контролировать ваш процесс. Например,

/path/to/app/init.sh

#!/bin/bash

exec beanstalkd -l 127.0.0.1 -p 11300

Вы можете найти это полезным: http: // sjsnyder.

0
ответ дан 4 December 2019 в 21:46

Теги

Похожие вопросы