Книга: Linux-сервер своими руками
23.1. SATAN
23.1. SATAN
Нет, в этой главе мы будем говорить не о религии. Программа SATAN, как могло вам показаться с первого взгляда, ничего общего с религией не имеет. SATAN (Security Administrator Tool for Analyzing Networks) — это утилита для анализирования сети и выявления дыр в различных узлах. SATAN представляет собой мощный сетевой сканер, который сканирует порты всех компьютеров вашей (и не только вашей) сети и информирует вас о возможной дыре в системе безопасности того или иного узла.
Итак, давайте приступим к установке программы. Сразу же скажу, что если вы не знакомы с программированием на С, вам будет трудно установить эту программу. Данная программа распространяется в исходных текстах. Никогда нельзя быть уверенным в том, что программа, прекрасно работающая на FreeBSD, откомпилируется и будет корректно работать в Linux, несмотря на мобильность языка С. Все же, если вы обладаете хотя бы небольшими навыками в программировании, можно изменить исходные тексты, «заточенные» под FreeBSD так, чтобы они смогли работать в Linux. В Интернет можно найти «пропатченную» версию SATAN для Linux, однако эта версия еще хуже собирается, чем версия для FreeBSD. Мы же поступим следующим образом: скачайте обе версии — для FreeBSD и для Linux. Версию для Linux можно загрузить по адресу:
http://www.ibiblio.org/pub/packages/security/Satan-for-Linux/satan-1.1.1.linux.fixed2.tgz
Версия для FreeBSD доступна на сайте автора — http://www.fish.com/satan. Распакуйте версию для Linux и перейдите в каталог satan-1.1.1. Затем введите команду:
perl reconfig
На что в ответ вы получите сообщение, что у вас не установлен Perl версии 5, хотя на вашей машине, скорее всего, уже будет установлена более поздняя версия. Первые изменения нужно сделать в файле reconfig. He вдаваясь в тонкости программирования на Perl, просто закомментируйте строки 51…70: начиная со строки:
for $dir (@all_dirs) {
и по строку:
Idle "nCan't find perl5! Bailing out…n" unless $PERL;
Эти строки обеспечивают поиск интерпретатора Perl. Если Perl у вас установлен в каталог, отличный от /usr/bin, то перед строкой:
print "nPerl5 is in $PERLn";
добавьте строку:
$PERL=/path-to-perl/
Таким образом переменной $PERL будет присвоено имя каталога Perl. Затем перейдите в каталог src/boot и откройте файл boot.с. В нем нужно найти и закомментировать следующую строку:
char *strchr();
Она находится в самом начале файла (строка 24).
Потом замените файл /src/fping/fping.c одноименным файлом из дистрибутива SATAN для FreeBSD. Следующий шаг — найдите и закомментируйте следующие строки (у меня это строки 189…191):
#ifndef SYS_ERRLIST_DECLARED
extern char *sys_errlist[];
#endif
Кажется, все. Если вдруг компилятор выдаст вам примерно такое сообщение:
structure has no member named 'th_sport' (или 'th_dport')
то член структуры th_sport замените на source, a th_dport — на dest. Структуpa tcphdr (TCP Header) — это описание заголовка TCP. В BSD член структуры, обозначающий порт-источник называется th_sport, а в Linux этот элемент структуры называется source (аналогично, элемент th_dport называется dest). Структура tcphdr описана в файле /usr/include/netinet/tcp.h.
Теперь можно ввести команду:
make linux
Параметр linux — это цель для сборки программы SATAN для операционной системы Linux.
Если сборка программы прошла без ошибок, приступите к изменению путей программ, необходимых для SATAN. Пути прописаны в файле config/paths.pl.
Обычно этот файл должен выглядеть так, как это показано в листинге 23.1. Если расположение каких-либо программ у вас отличается от приведенного в файле (или вы хотите использовать другие программы), измените соответствующие пути.
Листинг 23.1. Файл paths.pl
$FINGER="/usr/bin/finger" ;
$FTP="/usr/bin/ftp";
$RPCINFO="/usr/sbin/rpcinfo";
$RUSERS="/usr/bin/rusers";
$SHOWMOUNT="/usr/sbin/showmount";
$YPWHICH="/usr/bin/ypwhich";
$NSLOOKUP="/usr/bin/nslookup";
$XHOST="/usr/bin/X11/xhost";
$PING="/bin/ping";
$MOSAIC="/usr/bin/netscape";
$TCP_SCAN="bin/tcp_scan";
$UDP_SCAN="bin/udp_scan";
$FPING="bin/fping";
$NFS_CHK="bin/nfs-chk";
$YP_CHK="bin/yp-chk";
$SAFE_FINGER="bin/safe_finger";
$MD5="bin/md5";
$SYS_SOCKET="bin/sys_socket";
$BOOT="bin/boot";
$GET_TARGETS="bin/get_targets";
$TIMEQUT="bin/timeout";
$SATAN_CF="config/satan.cf";
$SERVICES="config/services";
Для работы SATAN вам необходим браузер Netscape. Подойдут также Mosaic и Lynx, но лучше использовать Netscape. Для запуска SATAN введите ./satan
Никаких параметров при этом указывать не нужно. При запуске SATAN становится HTTP-сервер и запускает браузер Netscape, перенаправляя его на себя. Порт сервера SATAN выбирается случайным образом. Поскольку SATAN при запуске становится Web-сервером, можно попытаться «зайти» на этот сервер, подобрав номер порта. Однако при этом у вас ничего не выйдет — нужно еще знать идентификатор сессии: SATAN разрешает работать только с определенным идентификатором, который создается при каждом запуске SATAN.
Сканировать порты имеет право только пользователь root. В открывшемся окне Netscape вы увидите Панель управления SATAN (см. рис. 23.1). Выберите пункт Data Management и создайте новую базу данных, с которой вы будете работать. Введите имя базы данных (имя по умолчанию — satan-data) и нажмите на кнопку «Open/Create».
Рис. 23.1. Панель управления SATAN
После создания базы данных результатов можно приступить к выбору цели для сканирования. Перейдите на страницу Target Selection. Вы увидите окно, в котором нужно ввести узел для сканирования и уровень сканирования (см. рис. 23.2).
Рис. 23.2. Выбор цели
Сканировать можно как отдельный узел, так и всю подсеть, в которой находится узел. Уровень сканирования может быть легким (light), средним (normal) и высоким (heavy). Установив необходимые параметры, нажмите на кнопку «Start the scan».
Сканирование производится примерно так: сканер SATAN получает всю возможную информацию о заданном узле, потом, если задан режим сканирования подсети, начинает сканировать всю сеть. Весь это процесс отобража-ется в окне браузера Netscape. Время сканирования зависит от режима сканирования и размера сети. Например, отдельный узел локальной сети в режиме light сканируется несколько секунд.
После сканирования я рекомендую вам выйти из SATAN, зарегистрироваться в системе как обыкновенный пользователь (сейчас вы были зарегистрированы как пользователь root), заново запустить SATAN и спокойно просматривать результаты сканирования (Reporting and Data Analysis). Долго работать с SATAN под пользователем root не рекомендуется, как и переходить на другой сайт, не завершив работу SATAN. При переходе на другой узел Netscape передаст ему переменную HTTP_REFERER, в которой будут указаны идентификатор сессии и номер порта сервера SATAN.
Для редактирования конфигурационного файла SATAN можно воспользоваться утилитой Configuration Management, хотя можно редактировать файл satan.cf и вручную.
Среди прочих параметров есть одновременно интересный и опасный параметр: max_proximity_level.
Этот параметр задает уровень сканирования соседей. По умолчанию этот параметр равен нулю и соседние сети не сканируются. Чтобы лучше понять, что это такое, представьте себе такую ситуацию. SATAN сканирует узел host.depl.company.ru. Сканер определяет, что домен depl.company.ru обслуживает сервер DNS ns.depl.company.ru. Пусть одна из записей NS этого сервера указывает на узел ns.company.ru. Автоматически домен company га попадает в число сканируемых. Поэтому никогда не устанавливайте значение параметра max_proximity_level большее 2, иначе это может закончиться сканированием всего Интернета.