Библиотека сайта rus-linux.net
Обнаружение атаки
Сетевой мониторинг и выявление атак
Выявление перехватчиков пакетов
Baselines
Главная оплошность большинства людей при обеспечении безопасности их машин в том, что они забывают создать опорную линию системы, которая является профилем системы, схемой использования ресурсов и т.п. в нормальной работе. Например, простой "netstat -a -n > netstat-output" может дать Вам много полезной информации (в частности о всех открытых портах, которые может быть стоит закрыть). Использование памяти и диска также полезно для изучения системы. Внезапное колебание в использовании памяти может кончиться нехваткой ресурсов в системе. Для отслеживания использования памяти и диска есть несколько команд: vmstat, free, df, du, все они подробно описаны на их man-страницах.
Как минимум, резервируйте систему и все файлы протоколов, что поможет выявить что же происходит. Не забывайте, что совсем не факт, что система атакована! Часто причиной может оказаться какая-нибудь новая программа, которая ничего плохого не делает. Также ведите журнал важных событий в системе (пользователь "rewt" был добавлен в резервной копии от 4 апреля, так что его наличие в копии от 20 марта выглядит странно). Если систему все-таки кто-то вскрыл, в ней обычно стоит "rootkit", содержащий в себе троян или целый выводок троянов. Удалить их часто бывает почти невозможно, не развалив при этом систему целиком. Так что в ряде случаев проще отформатировать диск и установить все заново. Правда, если Вы используете инструментальные средства контроля целостности файла/каталога вроде L5, Вы будете способны точно определить измененные файлы и иметь дело только с ними.
Имеется также ряд инструментальных средств, которые не входят ни в одну из рассматриваемых в данном разделе категорий, но нацелены на обнаружение и отражение нападения. Одно из них, проект Linux Intrusion Detection System (LIDS).
Мониторинг файловой системы
Допустим, Вы воздвигли вокруг своей системы настоящий бастион. Да, в ней стало почти невозможно работать, но зато она стала защищенной... Теперь главное не успокаиваться на достигнутом. Проверяйте защиту, ищите дыры, затывайте их. Попробуйте сами взломать защиту такой ход покажет, что именно надо укрепить. Если не получилось радуйтесь: система надежна. Но не радуйтесь долго: если будете купаться в лучах славы, расслабитесь, а мы... скажем так, специалисты по компьютерной безопасности, только того и ждем... Если дыра нашлась, она представляет собой хороший случай показать начальству, что защита системы, это постоянный поединок, обезопасить систему раз и навсегда невозможно. Прислушивайтесь к замечаниями пользователей, они часто сообщат Вам такое, что и в голову бы Вам не пришло: их много, а Вы один. Создайте сигнатуры файлов, которые нельзя подделать, и регулярно проверяйте целостность файлов системы.
Tripwire
Tripwire больше не имеет открытого кода. Я никогда не имел проблем с коммерческим программным обеспечением. Однако, когда Вы ожидаете хорошей защиты, отсутствие возможности посмотреть исходники, весьма беспокоит. Tripwire стоит примерно $70 для Linux и доступен только как пакет RPM, нацеленный на Red Hat Linux (tripwire стоит около $500 для других ОС). Альтернативой является несколько пакетов, например L5 или Gog&Magog. Tripwire доступен на http://www.tripwiresecurity.com.
AIDE
AIDE замена tripwire, которая пытается быть лучше самого tripwire. GPL делает данный пакет более привлекательным с точки зрения доверия. Он поддерживает несколько алгоритмов хеширования, и Вы можете загрузить его с http://www.cs.tut.fi/~rammer/aide.html.
L5
Еще одна альтернатива пакету tripwire, L5 доступен на ftp://avian.org/src/hacks, полностью свободно и очень эффективно. Я определенно рекомендовал бы этот инструмент.
Gog&Magog
Gog&Magog создает список свойств системного файла, владельца, разрешений, MD5-сигнатуру файла (подобно tripwire). Вы можете затем автоматически сравнивать данные с текущими, что гарантирует то, что любое измененение регистрируется быстро. Также, становится просто восстановить систему, поскольку вы будете знать, какие файлы были изменены. Вы можете скачать Gog&Magog с http://www.multimania.com/cparisel/gog.
Sentinel
Sentinel сканирует жесткий диск и создает контрольные суммы файлов для которых Вы их запрашиваете. Это использует не патентованный алгоритм (RIPEMD-160bit MAC ), и имеет факультативный графический внешний интерфейс (nice). Доступно на: http://zurk.netpedia.net/zfile.html.
SuSEauditdisk
SuSEauditdisk представляет собой загрузочный диск с системой проверки целостности. Он поставляется в поставке SuSE и может быть легко перенесен на другие дистрибутивы Linux. Доступен по GPL и может быть загружен с http://www.suse.de/~marc.
ViperDB
ViperDB проверяет setuid/setgid-программы и каталоги, и может сообщить (через syslog) Вам о любых изменениях или переустановить их владельца и права доступа должным образом. ViperDB создает серии баз данных (фактически, простые текстовые файлы) в каталоге, например файл /etc/.ViperDB может выглядеть так:
/etc/login.defs,1180,-,root,rw-,root,r--,r--,Apr,15,18:03 /etc/minicom.users,1048,-,root,rw-,root,r--,r--,Mar,21,19:11 /etc/CORBA,1024,d,root,rwx,root,r-x,r-x,Jun,14,16:51 /etc/X11,1024,d,root,rwx,root,r-x,r-x,Jun,14,23:05 /etc/cron.d,1024,d,root,rwx,root,r-x,r-x,Apr,14,17:09
К сожалению, ViperDB, кажется, не обрабатывает подкаталоги, так что Вы будете должны добавить их к файлу viperdb.ini:
find /etc/ -type d >> /usr/local/etc/viperdb.ini
viperdb.pl имеет 3 опции, -init (создает набор баз данных), -check (проверяет соответствие файлов базам данных, посылает сообщения syslog и обновляет базы данных) и -checkstrict (проверяет соответствие файлов базам данных, если нужно, восстанавливает разрешения и принадлежность, посылает сообщения syslog и обновляет базы данных). Если Вы используете -check, Вы получите предупреждение о том, что, например, /etc/passwd сейчас открылся для записи всем. Но, поскольку базы данных тут же обновятся, в следующий раз, когда Вы выполните viperdb, Вы не будете получать такое предупреждение. Я советовал бы запускать viperdb только в режиме -checkstrict, и удостовериться, что Вы выполняете viperdb с опцией -init после управления разрешением любого файла/каталога в защищенных каталогах. ViperDB доступен для загрузки на http://www.resentment.org/projects/viperdb.
Sxid
Sxid проверяет setuid и setgid на предмет измения, строит MD5-сигнатуры файлов и вообще позволяет Вам прослеживать любые сделанные изменения. Вы можете скачать его с ftp://marcus.seva.net/pub/sxid.
nannie
nannie относительно просто инструмент, который полагается на stat, чтобы сформировать список файлов (размер, timestamps и прочее). Он создает список, содержащий имя файла, inode, информацию о его связях и так далее. Загрузить пакет можно с ftp://tools.tradeservices.com/pub/nannie.
confcollect
confcollect простой скрипт для сбора системной информации, например, таблиц роутинга, установленных пакетов rpm и прочего в таком духе. Загрузить его можно с http://www.skagelund.com/confcollect.
Pikt
Pikt чрезвычайно интересный инструмент, это фактически язык скриптов для администрирования системы. Pikt позволяет Вам делать многое: уничтожать неактивные процессы пользователя, устанавливать квоты почты, контролировать систему на предмет подозрительных действий и многое другое. Единственной проблемы с Pikt будет трудность изучения, поскольку он использует собственный язык создания скриптов, но в конечном счете я думаю этот язык того стиот, особенно если Вы имеете много систем (тем более, что Pikt сейчас работает на Solaris, Linux и FreeBSD). Pikt доступен на http://pikt.uchicago.edu/pikt.
Backups
Многое забывается, но Вы можете сравнивать текущие файлы с их резервными копиями. Поддерживается много носителей (ленты, дискеты, CD-R...). Носитель может быть сделан доступным только для чтения, так что копия недавно установленной системы обеспечивает хороший эталонный тест. Утилиты ⌠diff ■ и ⌠cmp■ могут использоваться, чтобы сравнить файлы друг с другом. См. в разделе Резервирование список программного обеспечения.
Сетевой мониторинг и выявление атак
Самый надежный способ защититься от сетевых атак: открывать порты и запускать сервисы только при необходимости (уж сколько было проникновений через игры типа MUD...), своевременно обновлять программы и защитить все, что только можно firewallом.
К счастью в Linux эти инструментальные средства свободны и легко доступны, я буду рассматривать opensource инструментальные средства, так как идея относительно firewall с закрытыми исходниками довольно подозрительна. Первая линия защиты должна быть хорошим firewall, сопровождаемого фильтрами пакета на всех Internet-машинах, либеральное использование TCP-WRAPPERS, подробная регистрация событий и автоматический анализ протоколов.
DTK
Deception ToolKit представляет из себя набор программ, которые подражают известным услугам, чтобы обеспечить неправильные данные нападавшим. Есть надежда, что они должны запутаться и замедлиться за счет неправильных заключений, Вы можете скачать DTK с http://all.net/dtk.
Psionic PortSentry
Третий компонент набора Abacus, обнаруживает и регистрирует сканирование портов, включая тайные сканирования, может быть конфигурирован, чтобы блокировать машину с которой пришли запросы. Поскольку этот инструмент находится в состоянии тестирования, пока лучше воздержаться от его применения, но со временем... Psionic PortSentry доступен на http://www.psionic.com/abacus/portsentry.
Psionic HostSentry
Поскольку это программное обеспечение еще не готово для массового потребления, я упоминаю его только как часть большого проекта (проект Abacus, http://www.psionic.com/abacus). В основном Psionic HostSentry формируетпрофили доступа пользователей и затем сравнивает их с текущими действиями, чтобы пометить любое подозрительное действие. Psionic HostSentry доступен на http://www.psionic.com/abacus/hostsentry.
Firewalls
Большинство щитов (firewall) ведут протоколы, и ipfwadm/ipchains не исключение, с параметром -l Вы получите syslog-записи по каждому пакету, используя автоматизированные фильтры (perl хорош для этого) Вы можете обнаружить попытки атаки.
TCP-WRAPPERS
Wietse's TCP-WRAPPERS позволяют Вам ограничивать подключения к различным сервисам на основании IP-адреса и другой информации, но что даже более важно, так это то, что такая система позволяет Вам конфигурировать ответ. TCP_WRAPPERS входят во многие дистрибутивы, а вообще-то их можно скачать с ftp://ftp.porcupine.org/pub/security.
Klaxon
В дополнение к TCP-WRAPPERS и протоколам firewall, klaxon может быть полезен в борьбе со сканированием портов, если Вы не хотите полностью блокировать машину. Klaxon доступен на ftp://ftp.eng.auburn.edu/pub/doug.
NFR
NFR (Network Flight Recorder) намного больше, чем перехватчик пакетов. Он фактически регистрирует данные, и в реальном времени обнаруживает нападения, сканирования и тому подобные мерзости. Это очень мощный инструмент и требует значительного времени и ресурсов системы, но того стоит. NFR доступен на http://www.nfr.com.
Intrusion Detection Papers
FAQ: Network Intrusion Detection Systems, отличный FAQ, который покрывает все основные (и много мелких) проблем с IDS-системами. Доступен на http://www.robertgraham.com/pubs/network-intrusion-detection.html.
Имеем дело с атакой
Итак, система защищена. Вы поставили tripwire, DTK и прочее. Но в 3am Вы получаете сообщение, что кто-то модифицировал первичный сервер NIS. Ваши действия? Действия при атаке зависят от ряда факторов. Например, нападение все еще идет, или хакер уже смылся? Вы обнаруживали, бизнес-план компании, отправляемый на адрес в hotmail? Вы примчались из дома, чтобы обнаружить кластер мертвых серверов? Каковы ваши приоритеты? Восстановление обслуживания? Обеспечение безопасности конфиденциальных данных? Преследование по суду нападавшего? Несколько вещей, которые надо иметь в виду:
- Действия администратора должны зависеть от среды в которой он работает. Поскольку хакер почти наверняка получил контроль над административными логинами системы, отправка почты может не работать.
- Большинство сайтов обычно не хочет сообщать о нападении (удачном или нет) из-за проблем связей с широкой публикой.
- Большинство быстрых атак и атак "denial of service" замаскирвоаны. Отследить атаковавшего очень трудно. Еще хуже, когда вышли на человека, который вроде бы подходит, но на самом деле не тот. (Замечание переводчика: приведу конкретный пример: в университете, где я учусь, кто-то взломал сервер. Хакер явно был умным, впрочем рукастых студентов там хватает, а администратор у нас, похоже, вообще не слышал о какой-либо защите сервера. Но хакер выяснил фирму, с которой у меня дружеские отношения (что тоже легко: меня многие знают), и обставил все так, будто я заходил с фирмы в 12 ночи. Конечно, явный спуфинг. Но никого это не интересует, все мои вопли в адрес проректора о том, что я физически не мог находиться на фирме в 12 ночи услышаны не были. То, что мне закрыли доступ на сервер ни за что, мне самому глубоко безразлично, но хакер-то остался безнаказанным! На все мои попытки обратить на сей печальный факт внимание администрации университета, я получил немало ответов, самым вежливым из которых был: "Не надо искать несуществующих злоумышленников. Прочитайте рассказ Драгунского "Тайное всегда становится явным" и оставьте меня в покое!". Никакого расследования, обязательного в таких случаях, никто даже не собирается проводить! Ну что ж, от души надеюсь, что ушедший безнаказанным хакер еще им покажет...).
- Даже если все идет хорошо, проверьте загрузку оборудования и потребление ресурсов: хакер может быть еще в системе...
- Если Вы знаете, как нападавший вошел (то есть, NFR сделал запись этого), заткните соответствующую дыру.
- Не пытайтесь игнорировать атаку! Но в то же самое время имеется много людей, которые просто развлекаются в сети, и на которых не стоит тратить впустую время и силы администраторов (возможно, такая атака отвлекает их от более тонких нападений).
Также при отражении атаки неплохо быть в курсе стратегии Вашей компании. Еще одна хорошая идея в том, чтобы иметь готовый план на случай нападения то есть, что проверять сначала, ччто потом. Есть хорошая книга ⌠Practical Unix and Internet Security■, в которой все это рассмотрено очень подробно.
Неплохо данная тема расмотрена в документе (см. приложение D) ⌠How to Handle and Identify Network Probes■.
Перехватчики пакетов
Packet sniffing практика захвата сетевых данных, не предназначенных для вашей машины, обычно с целью просмотра конфиденциального трафика, типа telnet-сеансов или людей, читающих их email. К сожалению, нет никакого реального надежного способа обнаружить перехватчик, так как это обычно пассивное действие. Имеется также инструмент AntiSniff, который исследует сетевые устройства и может выявить сниффер (перехватчик). Это инструментальное средство также неоценимо, если сеть атакована, и Вы хотите видеть, что происходит. Имеется превосходный FAQ на http://www.robertgraham.com/pubs/sniffing-faq.html.
tcpdump
Самый первый перехватчик пакетов для Linux, этот инструмент существовал сколько я помню, и использовался для отладки сетевых проблем. Большинство дистрибутивов его имеет в своем составе. Недостатки, а их немало, учтены в более новых перехватчиках, но иногда tcpdump может быть полезен.
sniffit
Мой любимый перехватчик, sniffit, имеет хорошие возможности фильтрации, преобразует полезные грузы данных в ASCII текст для простого чтения (подобно telnet-сеансам), и даже имеет графический режим (хорош для текущего контроля действий/подключений). Sniffit доступен на http://sniffit.rug.ac.be/~coder/sniffit/sniffit.html.
Ethereal
Хороший анализатор протокола сети с интерфейсом, подобным сетевому монитору NT. Позволяет простой просмотр полезных грузов данных для большинства сетевых протоколов (tftp, http, Netbios...). Основан на GTK, таким образом, для работы с ним, вероятно, понадобится пакет gnome. Доступен для скачивания на http://ethereal.zing.org .
Snort
Snort хороший пакет, который может использоваться, чтобы обнаружить различные нападения. Он может наблюдать за действиями типа Queso TCP-IP fingerprinting scans, Nmap scans и подобными. Snort доступен на http://www.clark.net/~roesch/security.html.
SPY
SPY продвинутый многопротокольный перехватчик, который работает на различных платформах. Это не свободная программа, однако имеется одиночная лицензия, доступная для некоммерческого использования с максимумом в 5 серверов. Коммерческая версия стоит около $6000 US, но вроде бы того стоит, поскольку качество программы великолепное. Доступен на http://pweb.uunet.de/trillian.of/Spy.
packetspy
packetspy еще один перехватчик, основанный на libpcap. Доступен на http://www.bhconsult.com/packetspy.
Другие перехватчики
Вот список еще нескольких перехватчиков пакетов (снифферов) для Linux, основанных на библиотеке libpcap:
http://www.mtco.com/~whoop/ksniff/ksniff.html - KSniff
http://ksniffer.veracity.nu - Ksniffer
http://mojo.calyx.net/~btx/karpski.html - karpski
http://www.ozemail.com.au/~peterhawkins/gnusniff.html - Gnusniff
http://www.xnet.com/~cathmike/mike/Software - ipgrab
Выявление перехватчиков пакетов
В теории большинство операционных систем позволяют выявить сниффинг за счет нестандартных ответов на запросы и чуть разных пакетов. Однако, на практике обнаружить перехватчик пакетов удается крайне редко.
AntiSniff
Как упомянуто выше, AntiSniff инструмент, который исследует сетевые устройства, чтобы увидеть, работают ли они в ином режиме, чем нормальный режим работы. Это, возможно, эффективно, и будет работать против большинства перехватчиков. Скачать можно с http://www.l0pht.com/antisniff.
Written by Kurt Seifried