Perl для системного администрирования


Обращаем внимание на неожиданные или несанкционированные изменения - часть 7


}

Объединим эту идею с MD5. Вместо того чтобы получать информацию о зоне, давайте просто сгенерируем для нее подпись:

use Net::DNS:

use FreezeTnaw qiv{f reeze!;

use Digest::MD5 qw(md5):

Sserver = new Net: :DNS::Resolver:

$server->naineservers($ARGV[0]):

print STDERR "Выполняется передача,..";

@zone = $server->axfr($ARGV[1]);

die $server->errorstring unless (defined @zone);

print STDERR "готово.\n";

$zone = join('',sort map(freeze($_),@zone));

print "MD5 fingerprint for this zone transfer is: ";

print Digest::MD5->new->add($zone)->hexdigest,"\n";

MD5 работает со скалярными данными (сообщение), но не со структурами типа списка кэшей, как @zone. Вот почему нужна такая строчка:

Szone = join(",sort map(freeze($_),@zone));

Для преобразования каждой записи из структуры данных @zone в обычные строки воспользуемся модулем FreezeThaw, который мы уже видели в главе 9 «Журналы». Перед тем как записи будут склеены в одно большое скалярное значение, они будут отсортированы. Сортировка позволяет проигнорировать порядок, в котором возвращались записи при пересылке зоны.

Пересылка всего файла зоны с сервера - это крайняя мера, особенно, если зона большая, поэтому имеет смысл наблюдать только за важным подмножеством адресов. Такой пример можно найти в главе 5. Кроме того, в целях безопасности было бы неплохо разрешить выполнение зонных пересылок только на минимальном количестве машин.

Все, что мы видели до сих пор, не очень помогло нам преодолеть затруднения. Возможно, следует прояснить несколько вопросов:

  • Что если кто-то подделает базу данных MD5 подписей и подставит действительные подписи под поддельные троянские файлы или изменения служб?
  • Что если кто-то подделает ваш сценарий таким образом, что он будет только создавать видимость проверки подписей со значениями из базы данных?
  • Что если кто-то сделает что-нибудь с модулем MD5 на вашей системе?
  • Это уже, конечно, предел паранойи, но что если кто-то сделает что-то с самим исполняемым файлом Perl, одной из его разделяемых библиотек или самим ядром операционной системы?

Обычные ответы на эти вопросы (какими бы они ни были неудовлетворительными): храните хорошие копии всего, что имеет отношение к этому процессу (базы данных подписей, модули, Perl и т. д.) на устройствах, к которым разрешен доступ только для чтения.

Эта головоломка - еще одна иллюстрация бесконечности безопасности.

Всегда можно найти что-то, чего можно опасаться.




- Начало -  - Назад -  - Вперед -



Книжный магазин