В этой статье я
расскажу вам самые основы о фаерволлах(брандмауэрах).
Файрволлы/брандмауэры-это устройства(программные
или аппаратные), которые блокируют доступ к вашей сети извне. Это
можно считать одной из первых линий обороны
в любой системе. Для них устанавливаются
определенные правила, например блокировка
подключений с определенного IP, для
блокирования определенного протокола (например
ICMP - ping) и т.д. Многие брандмауэры используют
шифрование(например DES,IPSEC,IDEA) для
тотального обламывания снифферов и
спуферов:). Существует несколько видов
Фаерволлов/Брандмауэров:
ШЛЮЗЫ
Точнее шлюзы
приложений. Играют роль прокси. Плюсы его в
том, что он производит более детальный
контроль над службой, чем фильтры. Но если
посмотреть с другой стороны, админу
придется потратить уйму времени, чтобы все
правильно и точно сконфигурировать, в
соответствии в его нуждами. Плюс юзвери
должны использовать измененные(или
специальные) клиенты, которые знают о
существовании шлюза.
ФИЛЬТРЫ ПАКЕТОВ
Они просто фильтруют
входящие/исходящие пакеты, смотрят и
усиленно думают,
дать доступ или нет:).В случае успеха
пакеты направляются клиенту. Для
них нужно установить определенные
правила.
Типа блок агрессивных IP, определенного
порта, службы, протокола.
Я бы посоветовал использовать политику: "Все
что не разрешено, запрещено". В
качестве фильров ОБЫЧНО выступают
маршрутизаторы. Но они не очень
распространены, т.к. дорого стоят.
Но я считаю если есть финансовая
возможность, эти вложения оправданы.
КАКИЕ ОНИ ЕСТЬ?
WINDOWS
Для обычных юзверей подойдет какой-нибудь
ZoneAlarm, AtGuard, LOCKDOWN
и т.д. Т.к. они имеют приятный графический
интерфейс и легко
настраиваемые. Относительно "простых"
реализаций брандмауэров огромное
множество. Ну а профессиональных
продуктов брандмауэров
можно пересчитать по пальцам. Это конечно
FireWall-1 (он изначально был
доступен только под UNIX. На данный момент
FireWall-1
поддерживает HP-UX, AIX, Solaris, WinNT).
О его достоинствах можно рассказывать
очень долго.
Это и модуль AntiSpoofing, и дополнительный
пакет шифрования,
использующий алгоритмы RSA и DIFFIE-HELLMAN, и
SecureRemote для
мобильных пользователей, для создания
работы, как в локальной сети
(используется VPN), и создание общего модуля
правил для всех систем,
отдельные от всей системы логи. Он также
имеет модули IDS (на распространенные сигнатуры).
В общем на перечисление всех достоинств
потребуется не одна статья:).
UNIX
В большинстве
дистрибутивов UNIX'а есть
встроенные фаерволлы.
Например для Linux - ipchains, для BSD - ipwfadm.
По-моему, один из самых простых и юзаемых
фаерволов
для UNIX является TCP Wrappers. Он читает hosts.deny (запрет)
и hosts.allow (разрешение) при попытке доступа к
службам, указанным в inetd.conf (если пакет уже установлен,
в inetd.conf
появятся фишки in.,
например in.telnetd - значит телнет работает
под крышей TCP
Wrapper'а:)). TCP Wrapper поддерживает логи. Так же в
него входит несколько дополнительных утилит:
tcpdchk
-проверка config
файлов, tcpdmatch - проверка правил (типа, что
произойдет, если это
изменить...). Но это довольно обрезанный
firewall, который вряд ли потянет даже на полнофункциональный пакет фильтров.
Более весомыми утилитами являются ipchains и
ipwfadm.
IPWFADM представляет собой "обычный"
пакетный фильтр. Может
проглядывать как входящие, так и
исходящие пакеты.
Конечно, в ОСНОВНОМ, хорошие брандмауэры
стоят денег.
Но бывает и наоборот, когда новые и
баговитский фаерволл
проталкивают на рынок за немереные
бабки. Так что будьте бдительны. Доверяйте только тем продуктам,
которые
долго и успешно держатся на
рынке.
А КАКЖЕ ТАК?
Наверное, после всего этого вам будет
стремно пробиваться в
систему, защищенную брандмауэром. Конечно
все не так плохо.
Во-первых, не всем админам охота
ставить брандмауэр, некоторые на них
просто плюют:) (а некоторые просто не умеют:)).
Некоторые
его ужасно конфигурируют, оставляют дефолтовые
пароли. Некоторые ставят отстойные
брандмауэры,
о которых несколько десятков лет назад
промежуточно упоминалось в
багтраке, типа еще один удаленный рут для
этого фаервола:))).
Допустим, кто будет фильтровать пакеты
для доступа к тому же
whitehous'у? Ведь его сайт общедоступен:)!
Многие широко известные брандмауэры
имели (имеют и будут иметь:))
проблемы с защитой. Приведу лишь
несколько примеров:
1) Уязвимость в WatchGuard SOHO: DoS (13-12-2000 - Epsilon)
2) Уязвимость в Nokia Firewall: переполнение
буфера (05-12-2000 - Epsilon)
3) Дырка в BrowseGate: Хакер с локальным
доступом может поиметь файл с
паролями (21-11-2000 - Epsilon)
4) Дырка в Cisco PIX Firewall (21-09-2000 - Epsilon)
5) DoS атака на IBM AS/400 Firewall (14-09-2000 - Epsilon)
Как ты уже понял, список можно продолжить...:).
В общем как эксплоиты для
фаерволлов
появлялись, так и будут появляться:).
Очень многие фаерволлы уязвимы для
спуфинга (особенно самопальные:)). В общем
фаерволлы редко когда нам могут
помешать. Например залезем на WWW
страничку, фаерволл тут не приказ (доступ к
WWW имеют все, если конечно
это не приватная зона, типа stat.provider.ru:)). Единственное,
можно фаерволлом закрыть определенные
порты, доступ к которым
имеют только авторизированные хосты (типа
доступ к telnet, ssh и т.д.). В
этом случае поможет SPOOFING.
Нужно узнать, есть фаерволл или нет? Например
если просканить
nmap'ом у фильтруемых портов будет надпись
filtered. Давайте
проанализируем, что
если мы подключимся к фильтруемому порту?
Фаерволл при запросе сверяет базу данных (например
hosts.allow[deny]), при
нахождении его в hosts.allow пропускает пакеты, при
нахождении его в
hosts.deny посылает его... Вот
хакеры и придумали spoofing:).
ОБЗОР БРАНДМАУЭРОВ И ФАЙРВОЛЛОВ(Unix/Windows)
Это поверхностный обзор брандмауэров для
Unix/Windows. В следующих статьях мы более подробно
углубимся в эти продукты.
UNIX
Установленная система - Linux RedHat 6.2
ЭКСПЕРИМЕНТАЛЬНЫЙ ПОРТ
Проведем эксперимент.
Откроем у себя порт и зафильтруем его, а
потом попробуем подключиться,
смотря записи в логах и т.д..
Я открыл у себя telnet.
НАЧНЕМ С TCP Wrapper.
Один из самых простых и удобных
брандмауэров. По умолчанию он уже стоит в
твоей системе (если в inetd.conf есть записи
типа in.imapd,
то пакет установлен и этот демон контролируется
им).
Вообще в TCP Wrapper'е существуют две функции. Это
логить подключения
и контролить доступ по IP.
Поэкспериментируем
с логами. Для начала
посмотри, где он у тебя находится. Открой
syslog.conf и найди записи после
authpriv.*.Это и есть его логи(по умолчанию это /var/log/secure).
Теперь пора проверить конфиги TCP Wrapper'а, запусти
утилиту
tcpdchk и если она не выдаст warning-сообщений,
то все гуд(в моем случае tcpdchk выдала
невозможность найти
in.identd, я его просто закомментировал:)). Теперь
коннектимся на свой
telnet, входим в шелл и смотрим записи в логах. Вот
как это выглядит(в
логах):
Feb 1 18:25:22 localhost in.telnetd[611]:connect from my_ip
Feb 1 18:26:02 localhost login:LOGIN ON 1 BY STALSEN FROM my_ip
Теперь коннектимся опять на telnet и
несколько раз
вводим неправильный login/password, отключаемся
и смотрим логи:
Feb 1 18:26:45 localhost in.telnetd[628]:connect from my_ip
М-да... Только логи соединений,
не больше...
Хотя /var/log/messages это и закомментировала, но
все-таки... Ну хватит о
логах. Давай похимичим с доступом. При
подключении
TCP Wrapper читает hosts.deny и hosts.allow. Файл hosts.allow
сообщает об авторизированных узлах (имеющих
доступ). Например пишем в него ALL: your_ip , в hosts.deny пишем
ALL:ALL.
В результате TCP Wrapper будет принимать
запросы только с твоего
компа, а остальных посылать. Потом запусти
tcpdchk для проверки
твоих новых конфигов.
Теперь проверим, как это работает. С localhost'а
коннектимся в telnet, все нормально. Входим
туда и смотрим логи:
Feb 1 20:51:45 localhost in.telnetd[644]:connect from my_ip
Feb 1 20:51:45 localhost login:LOGIN 1 BY STALSEN From my_ip
Теперь подключаемся к unix-shells.com и
подключаемся к нашему компу,
и смачно обламываемся:).А логи нас
фиксируют:
Feb 1 20:55:2 localhost in.telnetd[646]:refused connect from
unix_shells_ip
Вот пример обычного фильтра пакетов.
IPCHAINS
Давайте рассмотрим еще один фильтр
пакетов. IPCHAINS является
улучшенной версией ipfwadm(в BSD). Я, конечно, не
буду расписывать все
опции
ipchains, кому надо почитает man'ы и найдет доки
в сети.
Итак с помощью ipchains можно сделать очень
много:).
Можно запретить какой-нибудь протокол. Допустим
запретим
ping нашей машины (то есть входящие к нам
пакеты, input):
ipchains -A input -p ICMP -s 0/0 -j DENY
Это мы запретили протокол
ICMP(ping).
Но давай откроем telnet для всех:
ipchains -A input -s 0/0 23 -j ACCEPT
Вот и телнет открыт для любого хоста(0/0):).
Если ты хочешь закрыть telnet порт замени
ACCEPT на DENY, предварительно удалив из цепочки input
запись о ACCEPT(поставь -D вместо -A). В общем, ipchains представляет собой
достаточно развитый фильтр
пакетов, протоколов и портов. Все, что нужно:).
Логи пишет он по умолчанию в
/var/log/messages (смотрите syslog.conf).
Вот мы рассмотрели простые пакетные
фильтры. А что на счет шлюзов?
Свободно распространяемых шлюзов я найти
не смог.
Windows
Об этих фаерволлах особо распространяться
не буду. Уже все общедоступные объюзаны:). Как настраивать и куда смотреть,
рассказывать, думаю, не
буду:). Тут сложно выделить фильтры или
шлюзы приложений.
В основном, фаерволлы для Windows - гибриды.
То есть они умеют и фильтровать пакеты + простые
модули IDS (система обнаружения атак) и т.д.
Приведу лишь несколько моих исследований
фаерволов. Они проводились
по следующему плану:
1)Обычный скан портов
2)flooding
3)Retina scan
Установленная система - Windows 2000 Professional
ZONEALARM
1)При попытке скана портов ZoneAlarm немедленно предупредила меня о
скане (но замечу, что засекла только скан
на порты 135-139) + сразу
заблокировал программу, выполняющую
сканирование (сканирование обычным tcp connect без всяких SYN-FIN).
2)При попытки ping flood'а ZoneAlarm заблокил этот
пинг
и выдал IP нападающего.
3)Теперь нужно посмотреть на
систему IDS ZoneAlarm'а. Просканим Retino'й свой
комп с запущенным
ZoneAlarm'ом. При первый попытке ZoneAlarm запас проверку
шаров и подвесил мой
сканер (он же локальный, а не удаленный).Теперь
в Retin'е
отключаем проверку на шары (135:139 ports) и
ретина сканит мой комп
без проблем... Примерно через 2 минуты у
меня были все данные о
моей машине... тихо и незаметно для
фаерволла.
Совет разработчикам: пора немного
подумать о развитии базы данных IDS:).А то
скан NetBIOS'ых портов и
пинги
и мы засечь можем:).
ВЫВОД
Так что ZoneAlarm но моему мнению является
достаточно слабым фаерволлом. Система обнаружения атак у них
немного хромает(хотя, в принципе, это firewall, а
не IDS)!!!
LOCKDOWN
Несколько слов о проге. Тут я нашел модуль
IP Filtering,
предназначенных для тех IP, которые не
имеют/имеют доступ(а) (прямо TCP
Wrapper для Windows'а:)). Также защищает тебя от
различных нюков
и коннектов троянов. Так же довольно
развитая система логов,
может например логить подключения к IPC$:))(это
скрытые шары, типа
ADMIN$,C$,D$ и т.д.). Также ты можешь поговорить
наедине со своими
шарами:), а подключения на шары логить и, в
случае, чего кикать:). +Имеет
две утилиты:
TraceRoute и whois.
1) Сканим порты. При скане LOCKDOWN'у абсолютно
все по фигу.
Он только трясется по поводу троянов.
2) На флуд тоже внимание не обращает
3) Ну вот тут и произошло все самое
прикольное. LOCKDOWN
значит открывает на вашем компе
троянские порты (типа 31337,123456 и
т.д.), конечно там нет троянов, но фишка
продумана. Когда Retina начал сканировать на троянские порты,
он
довольно много
обнаружил (AOL Troyan, NetBus, BO2k, BackDoor-G), но на самом
деле троянов
конечно нет, только вот LOCKDOWN залогил уже
все обращения
с указанием IP нападавшего. Тот, кто
просканит вас на установленные
трояны будет рад, вначале, до звонка из
провайдера:)...
ВЫВОД
Конечно LOCKDOWN не имеет нормальных модулей
IDS, но это действительно
тотальный контроль за троянами и шарами (кикнуть
можно:)).
Tiny Personal Firewall
Единственное что хочется отметить, этот
фаерволл предлагает минимальные
возможности по настройке, ну что же, сейчас
его проверим:
1) Как обычно, сканим порты. На скан
отнеслась с пофигизмом...
2) Флудим... по фигу. Он только прореагировал
на попытку использовать нюк
FyRe(OOB атака).
3) Сканим Retino'й. Tiny Firewall не оставил не одной
записи в логах ни о каких действиях Retin'ы.
ВЫВОД
Интересно, а что он вообще умеет???
ОБЩИЕ ВЫВОДЫ
Unix
В общем я лично работаю с ipchains, это как раз
соответствует моим
нуждам, я же сервак не держу:).
Windows
По этому Win обзору можно сказать, что нет
хорошего firewall'a:).
Есть конечно. Тебе нужно отражать
удаленные атаки на твой комп? Этим не занимается firewall,
этим занимается IDS!
Лично я из Win прог оставил только LOCKDOWN и
пользуюсь
ею только в сотрудничестве с BlackICE.
Это самые основы о фаерволах.
В последующих статьях мы более детально
углубимся в эту тему.
P.S. ROCKMAN is MORON:).