Обнаружение вторжения средствами Debian GNU/Linux

ArticleCategory:

SystemAdministration

AuthorImage:

[Photo of the Author]

TranslationInfo:

original in es José Salvador González Rivera 

es to en Georges Tarbouriech 

en to ru Kolobynin Alexey 

AboutTheAuthor:

José Salvador González Rivera — активный участник Linux Users Group Puebla (Мексика). Он часто участвует в акциях пропагандирующих использование свободного программного обеспечения, в частности Linux. Недавно получил ученую степень по компьютерным системам. Вы можете связаться с ним по адресам jsgr(at)tec.com.mx и jsgr(at)linuxpuebla.org.

Abstract:

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

Против бессовестных людей сложно что-либо предпринять. В этой короткой статье я сделаю обзор способов и инструментов, которые мы можем использовать в Debian GNU/Linux для обнаружения и выслеживания злоумышленников. Я не буду воспроизводить содержание руководств, а расскажу о том, что может случиться в реальной жизни.

ArticleIllustration:

[debian]

ArticleBody:

Введение

При выборе операционной системы Linux, необходимо рассмотреть множество доступных дистрибутивов. Большинство из них основаны на RedHat, например, Conectiva (Бразилия), Hispa source (Испания), Mandrake (Франция), SuSE (Германия), Caldera и многие другие, использующие менеджер пакетов RPM. Есть также Slackware, который пытается быть ближе к традиционной Unix, используя только архивы .tgz. "Почти" все они разработаны коммерческими компаниями, чего нельзя сказать о Debian. Debian предоставляет менеджер пакетов (DPKG), который помогает нам обновлять систему, так как автоматически проверяет обновления в Интернете. Также он проверяет зависимости, что делает администрирование системы проще, и, если говорить о патчах по безопасности, позволяет находиться системе в актуальном состоянии.

Почему Debian GNU/Linux?

Debian также обладает несколькими важными свойствами:

1) У него нет коммерческого предназначения, и на него не влияют потрясения на рынке.
2) У него есть хорошая система отслеживания ошибок, проблемы решаются менее чем за 48 часов.
3) С самого начала главным приоритетом разработчиков была разработка полной и надежной операционной системы.
4) Он разрабатывается добровольцами со всего мира.

В каждой новой версии добавляется поддержка новой аппаратной архитектуры, на данный момент есть поддержка для Alpha, ARM, HP PA-RISC, Intel x86, Intel IA-64, Motorola 680x0, MIPS, MIPS (DEC), Power PC, IBM S/390, Sparc, система также работает на Sun UltraSparc и Hitachi SuperH. Это Linux система, поддерживающая наибольшее число платформ.

Среди существующих пакетов Debian есть различные утилиты для обнаружения вторжения в реальном времени, способные обнаружить недружелюбное поведение в соединениях. Их можно разделить на два типа: одни следят за попытками сетевых атак, вторые следят за особыми действиями машины.

Утилиты, наблюдающие за машиной

Мы используем PortSentry для обнаружения сканеров портов, TripWire для обнаружения изменений в системе и LogSentry для анализа логов. Первая и последняя утилиты — часть набора TriSentry от Psionic Technologies.

Обнаружение сканера портов

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

Домашняя страница программы http://www.psionic.com/products/portsentry.html. Программа доступна для Solaris, BSD, AIX, SCO, Digital Unix, HP-UX и Linux.

В Debian она может быть установлена при помощи инструкции:

apt-get install portsentry

Могут быть выбраны разные режимы работы: классический режим, стелс и продвинутый режим. Конфигурация описана в файле /usr/local/psionic/portsentry/portsentry.conf.

Я взял основные опции из статьи José Torres Luque в ES Linux Magazine, вот они:

TCP_PORTS, здесь вы определяете порты, которые будут контролироваться в классическом и стелс режимах. Автор приводит для примера три списка портов для различных уровней чувствительности программы. Максимальное количество портов — 64.

UDP_PORTS, то же что и выше, но для UDP портов.

ADVANCED_PORTS_TCP, ADVANCED_PORTS_UDP, указывают максимальный номер порта, который будет использоваться в продвинутом режиме. Каждый порт с номером не большим чем этот, если он не исключен, будет проверяться. Максимальный указанный номер может быть 65535. Однако рекомендуется указывать номер не больший 1024, чтобы избежать ложной тревоги.

ADVANCED_EXCLUDE_TCP, ADVANCED_EXCLUDE_UDP, указывают список исключенных портов. Порты из этого списка не будут проверяться в продвинутом режиме. Здесь вы указываете порты, предназначенные для удаленных клиентов и те, которые не предоставляют реальную услугу, например, ident.

IGNORE_FILE, здесь мы указываем имя файла, куда мы поместили IP адреса, которые будут игнорироваться при проверке. Сюда же можно включить локальные интерфейсы, в том числе и lo.

KILL_ROUTE, сюда мы можем поместить команду для блокирования машины атакующего. Например: iptables -I INPUT -s $TARGET$ -j DROP, где $TARGET$ указывает адрес атакующего.

KILL_RUN_CMD, здесь помещается команда для выполнения перед блокированием доступа к машине атакующего.

SCAN_TRIGGER, определяет количество попыток перед оповещением о тревоге.

PORT_BANNER, отображает сообщение на открытых портах при соединении.

После конфигурирования программу надо запустить в одном из трех режимов с помощью опций: для TCP опция -tcp (классический режим), -stcp (стелс) и -atcp (продвинутый); для UDP соответствующие опции -udp, -sudp, audp.

Проверка целостности

TripWire позволяет проверить целостность файловой системы. Домашняя страница программы http://www.tripwire.org. Она свободно доступна для Linux и платная для Windows NT, Solaris, AIX и HP-UX.

В Debian программа может быть установлена командой:

apt-get install tripwire

Для хранения информации необходимы два ключа: первый, "site key", используется для шифрования политик и конфигурационного файла, второй — "local key" для шифрования информации, отображающей статус проверяемых файлов.

Начальная конфигурация сделана в файле /etc/tripwrie/twpol.txt, после того как вы ее приспособите для своих нужд, примените ее используя

twadmin -m P /etc/tripwire/twpol.txt

Для создания начальной базы данных, содержащей текущее состояние файлов, выполните

tripwire -m i 2

Для проверки целостности файловой системы используйте инструкцию:

tripwire -m c

Конфигурационные файлы могут быть удалены, чтобы взломщик не мог узнать, какие файлы были изменены.

rm /etc/tripwire/twcfg.txt /etc/tripwire/twpol.txt

При необходимости их можно создать

twadmin -m p > /etc/tripwire/twpol1.txt twadmin -m f > /etc/tripwire/twcfg.txt

Анализ логов

LogCheck - это часть LogSentry, которая позволяет эффективно анализировать логи, она производит классификацию и генерирует отчеты об активности и ошибках, на которые надо обратить внимание. Программа разбивает логи на 4 класса: подлежащие игнорированию, необычная активность, нарушение безопасности, атака.

Домашняя страница программы http://www.psionic.com/products/logsentry.html. Она доступна для Solaris, BSD, HP-UX и Linux.

В Debian она может быть установлена командой:

apt-get install logcheck

Команда устанавливает программу logtail в /usr/local/bin, которая предназначена для сохранения проанализированных логов. Также устанавливаются файлы:

Logcheck.sh,
Скрипт, содержащий основную конфигурацию.

Logcheck.hacking,
Содержит правила, определяющие уровни работы.

Logcheck.ignore,
Содержит выражения, которые должны быть проигнорированы.

Logcheck.violations,
Содержит выражения, которые могут быть рассмотрены как нарушения безопасности.

Logcheck.violations.ignore,
Выражения из этого файла будут проигнорированы.

Вы можете воспользоваться cron для запуска logcheck каждый час: 0 * * * * /bin/sh /usr/local/etc/logcheck.sh

Сетевые утилиты

Мы используем Snort для обнаружения попыток сетевых атак. Домашняя страница программы http://www.snort.org. Программа доступна для BSD, Solaris, AIX, Irix, Windows, MacOS X и Linux.
В Debian она может быть установлена командой:

apt-get install snort

Программа работает в трех различных режимах: снифер, регистратор пакетов и детектор вторжений.

Могут быть использованы следующие параметры:

-l каталог
указывает каталог для хранения файлов.

-h IP
определяет IP адрес, который мы хотим контролировать.

-b
захватывает каждый пакет в двоичном виде.

-r файл
обрабатывает двоичный файл.

Snort в режимах снифера и регистратора пакетов

В режиме снифера программа считывает каждый пакет, проходящий по сети, и отображает его на консоли, а в режиме регистратора пакетов она сохраняет данные в файл в каталоге.

Snort -v

Показывает IP и заголовки.

Snort -dv

Также показывает передающиеся данные.

Snort -dev

То же, но подробнее.

Режим детектора вторжений Snort

В этом режиме snort сообщает нам о сканировании портов, DoS (Deny of Service — отказ в обслуживании) атаках, эксплоитах и т.д. При работе он основывается на правилах, содержащихся в /usr/local/share/snort, которые вы можете скачать с сайта, сервер обновляет их почти каждый час.

Конфигурация программы очень проста — она состоит из редактирования файла snort.conf, где мы указываем свои сетевые настройки и рабочие директории. Просто смените IP:

var HOME_NET IP

Для запуска snort введите:

snort -c snort.conf

Лог-файлы содержатся в /var/log/snort, где мы можем увидеть IP адреса атакующих. Конечно, это очень краткий обзор возможностей snort, и я рекомендую больше прочитать о программе. Большинство организаций, журналов, групп, занимающихся безопасностью, считают эту прекрасную утилиту лучшей системой обнаружения вторжений для любых Unix и Windows платформ и рекомендуют использовать ее. Существует коммерческая поддержка от таких компаний как Silicon Defense и Source Fire, начинают появляться графические интерфейсы для программы, для более привлекательного представления результатов.

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

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

Другие полезные утилиты

Обнаружение снифера

Снифер - утилита, которая переключает наш сетевой интерфейс в прослушивающий режим с целью просмотра всего сетевого трафика. Команда ifconfig дает нам полную информацию о сетевом интерфейсе:

eth0 Link encap:Ethernet HWaddr 00:50:BF:1C:41:59
inet addr:10.45.202.145 Bcast:255.255.255.255 Mask:255.255.128.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7180 errors:0 dropped:0 overruns:0 frame:0
TX packets:4774 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:8122437 (7.7 MiB) TX bytes:294607 (287.7 KiB)
Interrupt:10 Base address:0xc000

Однако, если команда ifconfig была заменена, или снифер работает на другой машине в сети, вам следует проверить внешние соединения, например, не производится ли отсылка писем на "подозрительные" адреса, или же попробовать обнаружить логи снифера.

Существует утилита neped, разработанная группой испанских хакеров, которая может нам сообщить об интерфейсах в нашей сети, работающих в прослушивающем режиме. Эта утилита не является частью Debian, однако может быть скачана с ftp://apostols.org/AposTools/snapshots/neped/neped.c
Замечание: похоже сервер не будет работать несколько недель.

Выполнение программы дает результат наподобие следующего:

neped eth0
----------------------------------------------------------
> My HW Addr: 00:80:F6:C2:0E:2A
> My IP Addr: 192.168.0.1
> My NETMASK: 255.255.255.0
> My BROADCAST: 192.168.1.255
----------------------------------------------------------
Scanning ....
* Host 192.168.0.2, 00:C2:0F:64:08:FF **** Promiscuous mode detected !!!
End.

При посылке IP пакета с 191.168.0.1 на 192.168.0.2 нам необходимо знать MAC адрес машины. Чтобы узнать его, в сеть посылается широковещательный пакет, в котором запрашивается MAC адрес для указанного IP. Все машины получают этот запрос, однако отвечает только та, которая имеет данный адрес.

neped делает такие запросы для каждого адреса в сети, однако не посылает широковещательные запросы, а использует несуществующий IP адрес. На такие запросы ответит только та машина, у которой интерфейс находится в прослушивающем режиме, так как только она сможет увидеть пакеты.

Я узнал об этой программе из статьи об обнаружении шпионов, которую нашел в сети. Там приводился простой пример. Если вы знаете URL статьи, не стесняйтесь, присылайте его мне по почте, потому что я его потерял :-)

Обнаружение руткитов

Руткиты дают возможность пользователю получить больше привилегий, чем он может иметь. Обычно, они заменяют исполняемые системные файлы другими версиями, чтобы позже получить доступ к системе. Вот почему мы должны проверить не изменили ли наши файлы, используя chkrootkit. Программа может быть установлена так:

apt-get install chkrootkit

Сайт программы www.chkrootkit.org. Утилита проверяет следующие файлы:

aliens, asp, bindshell, lkm, rexedcs, sniffer, wted, z2, amd, basename, biff, chfn, chsh, cron, date, du, dirname, echo, egrep, env, find, fingerd, gpm, grep, hdparm, su, ifconfig, inetd, inetdconf, identd, killall, ldsopreload, login, ls, lsof, mail, mingetty, netstat, named, passwd, pidof, pop2, pop3, ps, pstree, rpcinfo, rlogind, rshd, slogin, sendmail, sshd, syslogd, tar, tcpd, top, telnetd, timed, traceroute, w, write

Чтобы запустить ее, введите:

chkrootkit

Она проверит файлы, в поисках известных сниферов и руткитов. Есть и другие утилиты, предназначенные для проверки на подмену лог-файлов (chkwtmp и chklastlog), и конечно нельзя забыть про ifpromisc, которая сообщит нам, что сетевой интерфейс находится в прослушивающем режиме.

Ссылки

Рекомендуется прочитать man-страницы перечисленных программ. Также я приведу несколько ссылок, которые использовал. Не стесняйтесь, присылайте мне свои предложения и комментарии на мой адрес.