Детекторы сканирования в дистрибутивах Linux
Прежде всего, до попытки взлома чужого компьютера хакеру необходимо выполнить сканирование по сети выбранной цели. При использовании программ, позволяющих обнаружить выполнение сканирования, владелец компьютера или администратор сети получает преимущество и может подготовиться к атаке или заблокировать (или даже отключить) все слабые места защиты. Детекторы сканирования, которые являются неотъемлемой частью качественных систем обнаружения вторжений (Intrusion Detection System — IDS), позволяют предупредить о выполняющемся сканировании компьютера.
Для Linux-дистрибутивов разработано несколько детекторов сканирования. Каждая из этих программ использует различные методы для выявления выполняющегося сканирования, и у каждой есть свои потенциальные недостатки. Поэтому предпочтительнее будет испытать несколько из них, чтобы определить, какая программа предоставляет наилучшие функциональные возможности и методы обнаружения сканирования, наиболее подходящие для конкретного оборудования.
Klaxon
Программа Klaxon (можно найти по адресу — ftp://ftp.eng.auburn.edu/pub/doug) разработана Дугом Хьюзом (Doug Hughes) и является довольно простым детектором сканирования. Для прослушивания различных не использующихся службами портов в конфигурационный файл /etc/inetd.conf суперсервера inetd достаточно добавить несколько строк, подобных нижеприведенным.
discard stream TCP nowait root /path/to/klaxon klaxon discard рорЗ stream TCP nowait root /path/to/klaxon klaxon рорЗ netbios-ns stream TCP nowait root /path/to/klaxon klaxon netbios-ns imap2 stream TCP nowait root /path/to/klaxon klaxon imap2 rexec stream TCP nowait root /path/to/klaxon klaxon rexec login stream TCP nowait root /path/to/klaxon klaxon login tftp stream ODP wait root /path/to/klaxon klaxon tftp |
Теперь при вызове любого из указанных портов программа Klaxon зарегистрирует соединение с помощью команды syslog и попробует установить имя удаленного пользователя с помощью запроса IDENT.
К сожалению, Klaxon не в состоянии выявить скрытые (stealth) попытки сканирования, эта программа вызывается inetd только при полном установлении соединения (с подтверждением) по протоколу TCP. Если подтверждение не получено, то соединение в конечном итоге обрывается без запуска Klaxon.
scanlogd
Разработанная компанией Solar Designer (создавшей среди других средств и заплат утилиту John the Ripper) программа scanlogd (http://www.openwall.com/scanlogd/ (см. www.openwall.com)) является независимым демоном для обнаружения сканирования. Она позволяет использовать сокеты для доступа к протоколам нижнего уровня (raw sockets), а также программы libnids и libpcap Для контроля за входящими соединениями.
Программа scanlogd сигнализирует о выполняемом процессе сканирования портов, если обнаруживает запросы к 7 различным привилегированным портам (номера до 1024), к 21 непривилегированному порту (номера больше 1024) или ко взвешенной комбинации двух портов при их вызове в течение трехсекундного интервала. Сканирование немедленно регистрируется с помощью syslog. Кроме того, при обнаружении пяти процессов сканирования в течение 20 секунд scanlogd временно прекращает создание отчетов о сканировании этого компьютера для предотвращения возникновения атаки отказа в обслуживании, которая может полностью заполнить системный журнал. Сообщения syslog выдаются в следующем формате:
Например, при сканировании локального хоста с помощью программы nmap сообщения syslog могут выглядеть следующим образом (для удобства восприятия они сгруппированы в две строки):
scanlogd: 127.0.0.1 to 127.0.0.1 ports 47161, 835, 6110, 889, 6005, 963, 168, 403, ..., f??pauxy, TOS 00 @17:19:58 scanlogd: 127.0.0.1 to 127.0.0.1 ports 44851, 134, 1002, 633, 2, 6006, 761, 958, ..., f??pauxy, TOS 00 @17:22:45 scanlogd: 127.0.0.1 to 127.0.0.1 ports 39792, 910, 73, 117, 2638, 169, 53, 537, ..., f??pauxy, TOS 00 @18:30:32 |
Указанные TCP_флаги — это управляющие биты, установленные для пакетов протокола TCP. Хотя для того, чтобы понять, что компьютер подвергается сканированию, знать значение этих битов необязательно, но они будут полезными при более углубленном исследовании проведенного сканирования и атак. Описания управляющих битов приведены в документе RFC 793.
PortSentry
Программа PortSentry (http://sourceforge.net/projects/sentrytools/ (см. sourceforge.net)) является частью проекта Abacus компании Psionic и позволяет не только обнаруживать сканирование, но и предпринимать определенные действия против источника атаки. Она позволяет выявлять и обычное, и скрытое сканирование, а также осуществлять мониторинг до 64 портов, что более чем достаточно для определения сканирования. При выявлении сканирования портов PortSentry может выполнять следующие ответные действия:
- Записывать в системные журналы информацию об атаке посредством syslogd.
- С помощью добавления строки в файл /etc/hosts.deny запретить установку соединений с определенным хостом.
- Добавлять локальный маршрут, который делает невозможным обмен информацией с источником сканирования и эффективно блокирует весь обратный трафик.
- Перенастроить на компьютере фильтры пакетов для полного запрета доступа со стороны хакера.
Программа PortSentry может быть запущена в нескольких режимах для протоколов TCP и UDP:
- Режим TCP. PortSentry будет ждать установки соединения к перечисленным ТСР-портам и при подключении к ним блокировать удаленные хосты.
- Режим обнаружения скрытого (stealth) сканирования TCP. С помощью сокетов для доступа к протоколам нижнего уровня (raw socket) PortSentry проверяет все входящие пакеты на предмет сканирования. Если пакет предназначен для одного из контролируемых портов, запускается программа блокирования. Позволяет обнаружить практически все виды скрытого сканирования.
- Режим UDP. PortSentry контролирует установку соединения к перечисленным UDP-портам и при подключении к ним блокирует удаленные хосты.
- Режим обнаружения скрытого (stealth) сканирования UDP. PortSentry, используя сокеты для доступа к протоколам нижнего уровня, проверяет все входящие UDP-пакеты без установления соединения. Этот режим не намного полезнее обычного режима UDP, так как скрытое сканирование по UDP практически невозможно.
- Улучшенный режим обнаружения скрытого сканирования по TCP. PortSentry определяет все порты, использующиеся другими программами, и осуществляет мониторинг всех остальных портов.
- Улучшенный режим обнаружения скрытого сканирования по UDP. То же самое, но по отношению к протоколу UDP.
Улучшенные режимы обнаружения скрытого сканирования TCP/UDP наиболее оптимальны, так как позволяют обнаружить любой необычный трафик. Но при этом увеличивается вероятность ложного срабатывания. PortSentry может определить, когда соединение происходит к временно открытому порту, и игнорирует такие соединения. Данный метод соединений довольно распространен, например для FTP, когда открываются временные порты (номера больше 1024) для входящих пакетов в целях обмена данными. Если бы программа PortSentry не могла выполнять подобного определения, то она бы блокировала все эти вполне «мирные» пакеты.
В конфигурационном файле PortSentry можно перечислить все контролируемые этой программой порты, определить количество попыток несанкционированного соединения до вызова программой ответных действий, указать все игнорируемые порты (при соединении с ними удаленный компьютер не будет заблокирован) и выбрать порядок действий для блокирования хостов, с которых выполняется сканирование. Кроме того, можно назначить запуск любой программы до того, как машина хакера будет заблокирована.
LIDS
Средство LIDS (http://www.lids.org/ (см. www.lids.org)) (Linux Intrusion Detection System — система обнаружения и защиты от вторжений в операционную систему Linux), обладает встроенным детектором сканирования портов, подключаемым как параметр при компиляции. Информация обо всех действиях, которые совершаются против всех защищенных LIDS объектов, записывается в системный журнал или отправляется по электронной почте. Хотя в LIDS не предусмотрена возможность автоматического выполнения ответных действий, но с помощью программ мониторинга системного журнала или фильтров электронной почты можно организовать просмотр создаваемых LIDS отчетов и автоматического создания правил для программ ipchains/iptables.
Твитнуть
спасибо за отличную статью!
Очень интересно почитать, автор раскрыл тему детекторов, спасибо!
Прочел статью в надежде увидеть что-то, что умеет качественно опознавать stealth атаки. Но, прочитав, понял, что до сих пор так ничего и не изобрели. Грустно. stealth в nmap появился еще когда я курсе так на первом был, а щас уже 2010 год. Грустно и печально господа.
Как всегда война снаряда и брони. Победу не одержит никто. Чем лучшую защиту будут разрабатывать, тем все совершеннее будут становиться системы взлома.
nmap имеет целый ряд функций для уклонения от систем вторжения FIREWALL/IDS EVASION AND SPOOFING