[LinuxFocus-icon]
Домой  |  Карта  |  Индекс  |  Поиск

Новости | Архивы | Ссылки | Про LF
эта страница доступна на следующих языках: English  Castellano  Deutsch  Francais  Italiano  Nederlands  Portugues  Russian  Turkce  

[Photo of the Author]
автор Georges Tarbouriech

Об авторе:

Georges давно использует Unix. Он думает, что компьютерная безопасность будет основной темой этого века.


Содержание:

 

Psionic Portsentry 1.1 на защите вашего компьютера

[illustration]

Резюме:

Psionic portsentry - приложение, входящее в состав набора утилит от Abacus Project (кроме него в этот набор входят еще logcheck и hostsentry). Это приложение относится к IDS (Intrusion Detection System - система обнаружения вторжений) и основной задачей его является обнаружение сканирования портов, их активная защита и информирование системных администраторов. Приложение работает на многих Unix, а также на Mac OS X. Отличие этого приложения от многих подобных в том, что оно само может реагировать на попытки вторжения. Самая свежая версия доступна на http://www.psionic.com и кстати версию 1.0 стали включать в состав некоторых основных дистрибутивов Linux (Debian, RedHat...).



 

Почему надо использовать portsentry ?

В последние десять лет наблюдается рост применения сетевых решений. Одной из целей был поиск возможностей для взаимодействия компьютеров, работающих под разными ОС. В результате частные сетевые решения были заменены на TCP/IP. Интернет сделал все остальное! Сегодня большинство сетевых решений основаны на TCP/IP, который в свою очередь опирается на работу с портами. Короче говоря, каждый порт обеспечивает обслуживание какого-либо приложения (клиентского или серверного). Сервер ожидает клиентского запроса для установления соединения, и обслуживает свой порт. В Unix системах подробнее об этих схемах можно узнать из файла /etc/services. Следовательно все, кому это интересно, знают какой сервис связан с каким портом. И еще дальше - если знают все - злоумышленники знают тем более! Если абстрактно представить порт в виде двери, естественно когда он открыт (т.е. ожидает соединения) - то можно сравнить его с открытой дверью. А как вы обычно входите в дом - естественно через дверь (если конечно не предпочитаете через окно - выбор за вами!). Соответственно черные шляпы могут таким образом забраться в ваш компьютер...
Первое, что необходимо сделать для повышения безопасности системы - закрыть все ненужные порты или другими словами остановить работу не используемых вами сервисов. Но все порты не удастся закрыть на компьютере, подключенном к сети - он просто не сможет взаимодействовать тогда с другими.
Вопрос остановки ненужных сервисов или закрытия портов находится за пределами данной заметки. Огромное количество информации по данному вопросу находится на Linux Documentation Project или можно почитать заметки LinuxFocus (например Bastille Linux или Security tools).
Здесь мы вплотную подходим к предмету обсуждения данной заметки - приложение Portsentry наблюдает за портами системы и в случае необходимости блокирует их. Оно может работать в нескольких режимах, правда некоторые из них специфичны для определнных ОС. В нашем случае, говоря "определенная ОС" мы подразумеваем Linux.
Наилучших результатов при использовании этого приложения можно добиться применяя его в сочетании с ipfwadm, ipchains или iptables в зависимости от вашего ядра. То же самое мы можем сказать и о других Unix, использующими подобные инструменты (позже поговорим об этом). Можно сказать так - приложение Portsentry наиболее эффективно в "авто-блокировании".
Но как все это запустить и дальше управлять этим ? Начинаем !

 

Как установить portsentry ?

Приложение распространяется в очень маленьком архиве, после распаковки которого вы получаете исходники, конфигурационные и Readme файлы. Вне всякого сомнения все необходимо сначала внимательно прочитать. Так как предмет нашего разговора безопасность - не забудьте скачать PGP файлы (подписи и ключи).
Инсталляция приложения интуитивно понятна - make (ваша система) и make install. Но перед инсталляцией необходимы некоторые приготовления - чтение документации, корректировка portsentry.conf для своих нужд и проверка Makefile и portsentry_config.h файлов.
Для наиболее эффективной работы приложения ему необходимы TCPWrappers. Еще лучше использовать его в связке с фильтрами. Конечно если вы используете Linux - все необходимые инструменты у вас уже есть. А как обстоит дело с другими Unix?
Мы протестировали portsentry на разных платформах - поговорим о некоторых требованиях.
MAC OS X также как и Linux обладает всем необходимым - TCPWrappers, и ipfw (BSD версия). Поэтому для данной ОС набирайте "make osx" и все.
Для Solaris 2.6 (SPARC) нет TCPWrappers. Но вы можете загрузить их с ftp://ftp.porcupine.org/pub/security. Также можете взять IPFilter с ftp://coombs.anu.edu.au/pub/net/ip-filter/ip-fil3.4.9.tar.gz (но только в том случае если у вас есть компилятор Solaris !!!).
Для Irix 6.5 также нет TCPWrappers. Вы можете взять тут http://freeware.sgi.com/index-by-alpha.html Приложение фильтрации пакетов есть - ipfilterd, но не устанавливается по умолчанию.
И наконец, пока вы не найдете работающую vsnprintf(), у вас не получится инсталлировать portsentry на NeXTSTEP... я так и не нашел!
Напоминаю еще раз - прежде чем устанавливать это приложение - необходимо его сконфигурировать. Но, прежде всего, конечно желательно понять его философию - но это только пожелание - выбор за вами!

 

Как работает portsentry?

Прекрасно работает, спасибо !
А если серьезно - вся работа этого приложения основана на конфигурационных файлах - самый важный из которых portsentry.conf - где вы сообщаете приложению как следует реагировать на некоторые события.
Прежде чем вы начнете работать с этим файлом - необходимо познакомиться с режимами работы и что каждый из них представляет из себя.
Portsentry может работать в шести разных режимах в зависимости от указанной опции при старте.
- Первый "-tcp". В данном режиме portsentry привяжется к портам TCP, найденным в конфигурационном файле в разделе "port configuration". Число портов ограничено цифрой 64.
- Второй "-udp". Все то же самое, что и для первого случая, только для UDP портов.
- Третий "-stcp", где "s" значит тайный. Этот и последующий режимы работы доступны только для Linux. В данном случае portsentry использует сокет для наблюдения за входящими пакетами.
- Четвертый "-sudp". Все то же самое, что и для предыдущего случая, только для UDP портов.
- Пятый и шестой - "-atcp" и "-audp" - наиболее эффективные режимы ("a" значит - advanced). В этих режимах portsentry создает список прослушиваемых портов и блокирует хосты обращающиеся к ним если они указаны в файле portsentry.ignore.
Обо всем этом прекрасно написано в README файлах. Соответственно мы не будем изобретать колесо, переписывая документацию. Еще раз повторяю - README файлы обязательны для прочтения.

Как реагирует portsentry ?

Вне всякого сомнения portsentry может записывать всю собранную информацию в лог файлы. Если вы, являясь системным администратором, не заглядываете в них (как вам не стыдно!) - можете использовать logcheck в связке с portsentry. В этом случае portsentry будет вам посылать электронные сообщения.
Также может внести нежелательный хост в файл /etc/hosts.deny, для взаимодействия с TCPWrappers.
Локальный хост способен перенаправить траффик на несуществующий хост.
И наконец, локальный хост может пропускать все через приложение фильтрации.
Теперь, немного познакомившись с философией, portsentry - можно приступать к написанию своего собственного portsentry.conf.
- Первый раздел этого файла посвящен портам - здесь можно выбрать интересующие вас. Не забывайте, что при использовании режима "advanced" под Linux - этот раздел игорируется. Будьте внимательны с привязкой портов - например если используете X - не трогайте порт 6000.
- Следующий раздел для "advanced" режима. По умолчанию наблюдение ведется за всеми портами номера которых ниже 1024 - и для TCP и для UDP. Естественно можно исключить те, которые хотите игнорировать. Это очень важно в случае использования Windows компьютеров в сети - для предотвращения ложных сигналов и т.д. For instance, mind the port 111 if portmap is used and the hosts are not present in the portsentry.ignore file. Sure, it would be crazy, since portmap means NFS, but you've been warned. That is, NFS is not that secure on Unix machines so don't we talk about Windos machines.
Немного отвлечемся здесь - обычные размышления не по теме - когда я пишу "Windos" - это не ошибка - это просто напоминание, что ОС Windows это надстройка над DOS (D случайно не dirty ?)... и вдобавок ко всему - набирать одной буквой меньше (какой я все таки ленивый !). Извините за отступление от темы.
- Раздел конфигурационных файлов содержит файлы, которые использует portsentry для определения игнорируемых хостов. Если вы используете инсталляцию по умолчанию - ничего не трогайте здесь.
- Раздел "разное" определяет включены или выключены DNS lookups.
- Раздел "ответов" - главный в настройках. В нем вы определяете как приложение будет реагировать.
Во-первых - опции игнорирования - вы можете игнорировать сканеры, не игнорировать их или выполнить внешнюю команду.
Далее секция остановки маршрутизации - сообщите приложению как прекратить маршрутизацию или как использовать в связке с инструментами фильтрации пакетов. Приводится множество примеров для разных платформ - выберите один (и только один!) подходящий вам.
- Раздел "TCPWrappers" - для обозначения использования записи в файл /etc/hosts.deny.
- Раздел "external commands" - для определения команды, используемой при подсоединении хоста.
- Раздел "scan trigger value" - для определения времени реакции. По умолчанию - "0" - наиболее быстрая реакция - сигнал посылается при первой попытке вторжения.
- Последний раздел для демонстрации баннера при попытке вторжения - не работает в режиме stealth.
Ну вот вроде и все. Еще раз просмотрите файл portsentry.ignore для исключения ложных сигналов. Можете добавить здесь свой локальный сетевой адрес или IP адреса других компьютеров.
Теперь можно сделать "make yoursystem" и "make install" - все остальное за вас сделает инсталляционный скрипт и дальше набираем portsentry и нужные вам опции. Просмотрите логи - если все нормально там - значит portsentry запущен и встал на защиту вашего компьютера.

 

Что дальше ?

Теперь можно сэмулировать попытку сканирования портов вашего компьютера например nmap'ом (подробнее об этом приложении смотрите здесь). Вот какой ответ вы получите :

portsentry is
running on the scanned host

Видно, что злоумышленникам не удалось получить интересующую их информацию !
Обычно в результате такого сканирования можно получить информацию об установленной ОС на компьютере и открытых портах, что и нужно злоумышленникам - теперь они знают в каком направлении вести дальнейшую работу. Если вы запустили portsentry в "advanced" режиме со значением "scan trigger" установленным в 0 - произойдет моментальная блокировка, а в режиме "normal" со значением 1 - возможно будет получена информация об ОС и открытых портах, но все последующие попытки атак будут неудачными - portsentry заблокирует порт после первой попытки. Просто и эффективно!
Итак, при использовании TCPWrappers IP адрес злоумышленника помещается в файл /etc/hosts.deny. Если вы собираетесь прервать маршрутизацию, перенаправив на несуществующий хост - в этом случае portsentry также является эффективным решением, но не предохраняющим полностью от UDP атак.
При использовании фильтрации пакетов - все пакеты атакующего компьютера проходят через него.
Еще раз повторю - режим "advanced", существующий только для Linux - идеальное решение. Но это не значит, что portsentry не так эффективен для других ОС - просто менее "совершенен"...
Для наглядности - сравните логи разных ОС, использующие portsentry, которые были подвержены атакам. Вам все сразу станет ясно!
В зависимости от используемого режима - в логах могут находиться ложные предупреждения. Для улучшения качества предоставляемой информации - вам необходимо поработать над конфигурационными файлами. После недолгих экспериментов - уверен вы получите то, что хотели.

 

Можете ли вы обойтись без portsentry ?

Конечно НЕТ! На самом деле приложений такого типа достаточно много - и бесплатных и платных и причем многие достаточно хорошего качества. Вспомним хотя бы широко известное приложение snort - смотрите подробнее на http://www.snort.org.
Но обычно такие приложения пассивны в своей работе - они лишь информируют о попытках вторжения. Но вообщем то они и создаются с подобной целью. Snort - более продвинутое приложение - его работа основывается на скриптах, описывающих правила работы - следовательно вы можете создавать собственные правила. На домашней странице этого приложения представлена целая база данных правил. И, кстати, если вас не пугают огромные логи - можно использовать одновременно и portsentry и snort.
Преимущество portsentry в том, что это активно реагирующее приложение. Реакция этого приложения на нежелательные события действительно эффективна. А в сочетании с приложением фильтрации пакетов результаты превосходят все ожидания. Здесь возникает резонный вопрос - какое приложение в данной связке является дополнительным:portsentry или packet filter.
Как обычно можно продолжать рассказывать еще и еще. Например надо быть очень внимательным при использовании режима "advanced" для обнаружения UDP сканирования. Читайте внимательно документацию чтобы понять проблемы, относящиеся к UDP. Данная заметка является лишь обзором для приложений подобного типа.
Компьютерная безопасность касается не только системных администраторов. Развитие интернет повлекло некоторые проблемы - вероятность атак повысилась. Сообщество свободно распространяемого программного обеспечения представляет очень хорошие приложения для решения подобных проблем - portsentry одно из них. Обращайте на них свое внимание! Но не забывайте - приложения лишь уменьшают риск, но не предоставляют 100% гарантии безопасности. Это еще одна из причин для повышения внимания к приложениям, работа которых направлена на улучшение безопасности.
И наконец, люди работающие в компании Psionic разрабатывают коммерческий продукт и говорят, что мы не будем разочарованы. Ну что ж - давайте подождем и посмотрим!
Между тем, познакомившись с текущей версией portsentry (1.1) - вы также не будете разочарованы. Компания Psionic делает очень хорошую работу.
Мы живем в великие времена, не так ли ?

 

Ссылки

Перечисленные ниже сайты предоставляют массу информации по вопросам безопасности. Кроме того - многие из них имеют ссылки на другие сайты, посвященные безопасности, те в свою очередь на другие и т.д. Вы знакомы с русскими матрешками? Единственная проблема в том, что для изучения их всех понадобиться слишком много времени!!!
http://www.linuxsecurity.com
http://www.sans.org
http://www.infosyssec.org
http://www.securityfocus.com is
http://www.cs.purdue.edu/coast/hotlist/

 

Страница отзывов

У каждой заметки есть страница отзывов. На этой странице вы можете оставить свой комментарий или просмотреть комментарии других читателей.
 talkback page 

Webpages maintained by the LinuxFocus Editor team
© Georges Tarbouriech, FDL
LinuxFocus.org

Click here to report a fault or send a comment to LinuxFocus
Translation information:
en -> -- Georges Tarbouriech
en -> ru Kirill Poukhliakov

2001-08-30, generated by lfparser version 2.17