Сетевой мониторинг и выявление атак
Выявление перехватчиков пакетов
Главная оплошность большинства людей при обеспечении безопасности их машин в том, что они забывают создать опорную линию системы, которая является профилем системы, схемой использования ресурсов и т.п. в нормальной работе. Например, простой "netstat -a -n > netstat-output" может дать Вам много полезной информации (в частности о всех открытых портах, которые может быть стоит закрыть). Использование памяти и диска также полезно для изучения системы. Внезапное колебание в использовании памяти может кончиться нехваткой ресурсов в системе. Для отслеживания использования памяти и диска есть несколько команд: vmstat, free, df, du, все они подробно описаны на их man-страницах.
Как минимум, резервируйте систему и все файлы протоколов, что поможет выявить что же происходит. Не забывайте, что совсем не факт, что система атакована! Часто причиной может оказаться какая-нибудь новая программа, которая ничего плохого не делает. Также ведите журнал важных событий в системе (пользователь "rewt" был добавлен в резервной копии от 4 апреля, так что его наличие в копии от 20 марта выглядит странно). Если систему все-таки кто-то вскрыл, в ней обычно стоит "rootkit", содержащий в себе троян или целый выводок троянов. Удалить их часто бывает почти невозможно, не развалив при этом систему целиком. Так что в ряде случаев проще отформатировать диск и установить все заново. Правда, если Вы используете инструментальные средства контроля целостности файла/каталога вроде L5, Вы будете способны точно определить измененные файлы и иметь дело только с ними.
Имеется также ряд инструментальных средств, которые не входят ни в одну из рассматриваемых в данном разделе категорий, но нацелены на обнаружение и отражение нападения. Одно из них, проект Linux Intrusion Detection System (LIDS).
Допустим, Вы воздвигли вокруг своей системы настоящий бастион. Да, в ней стало почти невозможно работать, но зато она стала защищенной... Теперь главное не успокаиваться на достигнутом. Проверяйте защиту, ищите дыры, затывайте их. Попробуйте сами взломать защиту такой ход покажет, что именно надо укрепить. Если не получилось радуйтесь: система надежна. Но не радуйтесь долго: если будете купаться в лучах славы, расслабитесь, а мы... скажем так, специалисты по компьютерной безопасности, только того и ждем... Если дыра нашлась, она представляет собой хороший случай показать начальству, что защита системы, это постоянный поединок, обезопасить систему раз и навсегда невозможно. Прислушивайтесь к замечаниями пользователей, они часто сообщат Вам такое, что и в голову бы Вам не пришло: их много, а Вы один. Создайте сигнатуры файлов, которые нельзя подделать, и регулярно проверяйте целостность файлов системы.
Tripwire больше не имеет открытого кода. Я никогда не имел проблем с коммерческим программным обеспечением. Однако, когда Вы ожидаете хорошей защиты, отсутствие возможности посмотреть исходники, весьма беспокоит. Tripwire стоит примерно $70 для Linux и доступен только как пакет RPM, нацеленный на Red Hat Linux (tripwire стоит около $500 для других ОС). Альтернативой является несколько пакетов, например L5 или Gog&Magog. Tripwire доступен на http://www.tripwiresecurity.com.
AIDE замена tripwire, которая пытается быть лучше самого tripwire. GPL делает данный пакет более привлекательным с точки зрения доверия. Он поддерживает несколько алгоритмов хеширования, и Вы можете загрузить его с http://www.cs.tut.fi/~rammer/aide.html.
Еще одна альтернатива пакету tripwire, L5 доступен на ftp://avian.org/src/hacks, полностью свободно и очень эффективно. Я определенно рекомендовал бы этот инструмент.
Gog&Magog создает список свойств системного файла, владельца, разрешений, MD5-сигнатуру файла (подобно tripwire). Вы можете затем автоматически сравнивать данные с текущими, что гарантирует то, что любое измененение регистрируется быстро. Также, становится просто восстановить систему, поскольку вы будете знать, какие файлы были изменены. Вы можете скачать Gog&Magog с http://www.multimania.com/cparisel/gog.
Sentinel сканирует жесткий диск и создает контрольные суммы файлов для которых Вы их запрашиваете. Это использует не патентованный алгоритм (RIPEMD-160bit MAC ), и имеет факультативный графический внешний интерфейс (nice). Доступно на: http://zurk.netpedia.net/zfile.html.
SuSEauditdisk представляет собой загрузочный диск с системой проверки целостности. Он поставляется в поставке SuSE и может быть легко перенесен на другие дистрибутивы Linux. Доступен по GPL и может быть загружен с http://www.suse.de/~marc.
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 проверяет setuid и setgid на предмет измения, строит MD5-сигнатуры файлов и вообще позволяет Вам прослеживать любые сделанные изменения. Вы можете скачать его с ftp://marcus.seva.net/pub/sxid.
nannie относительно просто инструмент, который полагается на stat, чтобы сформировать список файлов (размер, timestamps и прочее). Он создает список, содержащий имя файла, inode, информацию о его связях и так далее. Загрузить пакет можно с ftp://tools.tradeservices.com/pub/nannie.
confcollect простой скрипт для сбора системной информации, например, таблиц роутинга, установленных пакетов rpm и прочего в таком духе. Загрузить его можно с http://www.skagelund.com/confcollect.
Pikt чрезвычайно интересный инструмент, это фактически язык скриптов для администрирования системы. Pikt позволяет Вам делать многое: уничтожать неактивные процессы пользователя, устанавливать квоты почты, контролировать систему на предмет подозрительных действий и многое другое. Единственной проблемы с Pikt будет трудность изучения, поскольку он использует собственный язык создания скриптов, но в конечном счете я думаю этот язык того стиот, особенно если Вы имеете много систем (тем более, что Pikt сейчас работает на Solaris, Linux и FreeBSD). Pikt доступен на http://pikt.uchicago.edu/pikt.
Многое забывается, но Вы можете сравнивать текущие файлы с их резервными копиями. Поддерживается много носителей (ленты, дискеты, CD-R...). Носитель может быть сделан доступным только для чтения, так что копия недавно установленной системы обеспечивает хороший эталонный тест. Утилиты diff и cmp могут использоваться, чтобы сравнить файлы друг с другом. См. в разделе Резервирование список программного обеспечения.
Самый надежный способ защититься от сетевых атак: открывать порты и запускать сервисы только при необходимости (уж сколько было проникновений через игры типа MUD...), своевременно обновлять программы и защитить все, что только можно firewallом.
К счастью в Linux эти инструментальные средства свободны и легко доступны, я буду рассматривать opensource инструментальные средства, так как идея относительно firewall с закрытыми исходниками довольно подозрительна. Первая линия защиты должна быть хорошим firewall, сопровождаемого фильтрами пакета на всех Internet-машинах, либеральное использование TCP-WRAPPERS, подробная регистрация событий и автоматический анализ протоколов.
Deception ToolKit представляет из себя набор программ, которые подражают известным услугам, чтобы обеспечить неправильные данные нападавшим. Есть надежда, что они должны запутаться и замедлиться за счет неправильных заключений, Вы можете скачать DTK с http://all.net/dtk.
Третий компонент набора Abacus, обнаруживает и регистрирует сканирование портов, включая тайные сканирования, может быть конфигурирован, чтобы блокировать машину с которой пришли запросы. Поскольку этот инструмент находится в состоянии тестирования, пока лучше воздержаться от его применения, но со временем... Psionic PortSentry доступен на http://www.psionic.com/abacus/portsentry.
Поскольку это программное обеспечение еще не готово для массового потребления, я упоминаю его только как часть большого проекта (проект Abacus, http://www.psionic.com/abacus). В основном Psionic HostSentry формируетпрофили доступа пользователей и затем сравнивает их с текущими действиями, чтобы пометить любое подозрительное действие. Psionic HostSentry доступен на http://www.psionic.com/abacus/hostsentry.
Большинство щитов (firewall) ведут протоколы, и ipfwadm/ipchains не исключение, с параметром -l Вы получите syslog-записи по каждому пакету, используя автоматизированные фильтры (perl хорош для этого) Вы можете обнаружить попытки атаки.
Wietse's TCP-WRAPPERS позволяют Вам ограничивать подключения к различным сервисам на основании IP-адреса и другой информации, но что даже более важно, так это то, что такая система позволяет Вам конфигурировать ответ. TCP_WRAPPERS входят во многие дистрибутивы, а вообще-то их можно скачать с ftp://ftp.porcupine.org/pub/security.
В дополнение к TCP-WRAPPERS и протоколам firewall, klaxon может быть полезен в борьбе со сканированием портов, если Вы не хотите полностью блокировать машину. Klaxon доступен на ftp://ftp.eng.auburn.edu/pub/doug.
NFR (Network Flight Recorder) намного больше, чем перехватчик пакетов. Он фактически регистрирует данные, и в реальном времени обнаруживает нападения, сканирования и тому подобные мерзости. Это очень мощный инструмент и требует значительного времени и ресурсов системы, но того стоит. NFR доступен на http://www.nfr.com.
FAQ: Network Intrusion Detection Systems, отличный FAQ, который покрывает все основные (и много мелких) проблем с IDS-системами. Доступен на http://www.robertgraham.com/pubs/network-intrusion-detection.html.
Итак, система защищена. Вы поставили tripwire, DTK и прочее. Но в 3am Вы получаете сообщение, что кто-то модифицировал первичный сервер NIS. Ваши действия? Действия при атаке зависят от ряда факторов. Например, нападение все еще идет, или хакер уже смылся? Вы обнаруживали, бизнес-план компании, отправляемый на адрес в hotmail? Вы примчались из дома, чтобы обнаружить кластер мертвых серверов? Каковы ваши приоритеты? Восстановление обслуживания? Обеспечение безопасности конфиденциальных данных? Преследование по суду нападавшего? Несколько вещей, которые надо иметь в виду:
Также при отражении атаки неплохо быть в курсе стратегии Вашей компании. Еще одна хорошая идея в том, чтобы иметь готовый план на случай нападения то есть, что проверять сначала, ччто потом. Есть хорошая книга 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.
Самый первый перехватчик пакетов для Linux, этот инструмент существовал сколько я помню, и использовался для отладки сетевых проблем. Большинство дистрибутивов его имеет в своем составе. Недостатки, а их немало, учтены в более новых перехватчиках, но иногда tcpdump может быть полезен.
Мой любимый перехватчик, sniffit, имеет хорошие возможности фильтрации, преобразует полезные грузы данных в ASCII текст для простого чтения (подобно telnet-сеансам), и даже имеет графический режим (хорош для текущего контроля действий/подключений). Sniffit доступен на http://sniffit.rug.ac.be/~coder/sniffit/sniffit.html.
Хороший анализатор протокола сети с интерфейсом, подобным сетевому монитору NT. Позволяет простой просмотр полезных грузов данных для большинства сетевых протоколов (tftp, http, Netbios...). Основан на GTK, таким образом, для работы с ним, вероятно, понадобится пакет gnome. Доступен для скачивания на http://ethereal.zing.org .
Snort хороший пакет, который может использоваться, чтобы обнаружить различные нападения. Он может наблюдать за действиями типа Queso TCP-IP fingerprinting scans, Nmap scans и подобными. Snort доступен на http://www.clark.net/~roesch/security.html.
SPY продвинутый многопротокольный перехватчик, который работает на различных платформах. Это не свободная программа, однако имеется одиночная лицензия, доступная для некоммерческого использования с максимумом в 5 серверов. Коммерческая версия стоит около $6000 US, но вроде бы того стоит, поскольку качество программы великолепное. Доступен на http://pweb.uunet.de/trillian.of/Spy.
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 инструмент, который исследует сетевые устройства, чтобы увидеть, работают ли они в ином режиме, чем нормальный режим работы. Это, возможно, эффективно, и будет работать против большинства перехватчиков. Скачать можно с http://www.l0pht.com/antisniff.
Written by Kurt Seifried |