Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Бизнес с высокой прибылью" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Системный администратор - секреты мастерства. Основы настройки брандмауэров.
Здравствуйте, уважаемые коллеги! С вами Павел Медников, и мы продолжаем рассматривать всевозможные вопросы, связанные с администрированием компьютерных сетей. Все предыдущие статьи, а также другие мои материалы можно найти на сайте www.mednikov.ru/blog Тема сегодняшней статьи – основные принципы настройки брандмауэров (их также называют словом firewall и термином «межсетевой экран»). Оговорюсь сразу, мы не будем рассматривать конкретные продукты конкретных производителей, а ограничимся общими принципами, зная которые можно справиться практически с любым продуктом – достаточно будет ознакомиться с его спецификой. Сегодня вас опять ждет много теории, так что запаситесь терпением! Основное предназначение брандмауэров – защищать отдельные хосты или целые подсети от несанкционированного доступа через сеть, пропуская лишь те IP-пакеты, которые не представляют угрозы защищаемым объектам. Второе их назначение – препятствовать хостам, находящимся за межсетевым экраном, устанавливать нежелательные соединения, которые могут повлечь за собой утечку информации или проникновение злоумышленников. В основе многих брандмауэров лежит так называемый
пакетный фильтр. Этот механизм позволяет в режиме реального времени анализировать
пакеты данных, проходящие через сетевой интерфейс (или интерфейсы) хоста, и
производить с ними некоторые действия: пропускать их, не внося изменений в
структуру данных, уничтожать входящие пакеты, сообщая или не сообщая
отправителю о том, что пакеты не могут быть доставлены, вносить изменения в
заголовки IP-пакетов с
тем, чтобы перенаправить данные другому получателю, модифицировать само
содержимое пакетов и др. Сегодня мы рассмотрим именно эту реализацию сетевого экрана. Существуют более продвинутые решения. Например, продукты PIX и ASA компании Cisco, способны анализировать трафик по указанным администратором протоколам на предмет передачи через них нежелательных или потенциально опасных данных. Так, например, существует возможность «глушить» отдельные команды, передаваемые по протоколу SMTP с тем, чтобы предотвращать рассылку спама, вырезать определенные java-скрипты из передаваемых по сети HTML-документов, чтобы не допустить распространения сетевых вирусов через уязвимости, имеющиеся в Интернет-браузерах, и др. THT Я намеренно не буду заострять внимание на таких продуктах как брандмауэр Windows, Outpost Firewall, Zone Alarm, Kaspersky Anti-Hacker и др., имеющих помимо пакетного фильтра еще и функции предотвращения тех или иных потенциально опасных действий, выполняемых программами, запущенными на компьютере. Это продукты немного иного рода, имеющие расширенную функциональность, хотя, строго говоря, я не рекомендую использовать их в корпоративных сетях, потому что они ориентированы больше на применение индивидуальным пользователем. В крупной сети эти продукты доставят скорее проблемы, чем принесут пользу. Прежде чем говорить о настройке брандмауэра, разберем сам процесс обмена данными между хостами. Передача данных от хоста к хосту происходит в рамках сессии связи, т.е. прежде чем хосты начнут обмениваться информацией, они должны «договориться» о сеансе. При установке сессии одна сторона всегда запрашивает соединение, а вторая постоянно находится в режиме ожидания и отвечает, как только ей приходит запрос. Сторона, ожидающая подключения считается сервером – она обслуживает входящие соединения и предоставляет запрошенные ресурсы, отсюда и название. Сторона, инициирующая подключение, считается клиентом, т.к. она запрашивает соединение и ресурсы у сервера. На каком бы мощном оборудовании не была организована компьютерная система, но если она делает первый шаг при установлении соединения, то считается клиентом, даже если запрос направляется дохленькой «персоналке». «Персоналка» будет в рамках данной сессии сервером, т.к. она предоставляет запрошенные у нее ресурсы. Для описания сессии связи в IP-сетях используют понятие IP-адреса и порта. Что такое IP-адрес – это уже понятно, а что же такое порт? Предлагаю рассматривать порты как виртуальные «двери» в систему. Всего хосту для организации сессии связи доступно 65535 портов. Пакеты данных, перемещающиеся между хостами в рамках текущей сессии, всегда используют для входа и выхода одни и те же «двери» (т.е. порты) о номерах которых хосты «договорились» в начале сессии. Это позволяет упорядочить сетевой обмен и отличать одну сессию связи от другой. Когда хост получает пакет данных, он анализирует его заголовок, находит в нем адрес отправителя и номер порта, с которого пришел пакет, выясняет номер порта, которому пакет адресован и определяет, какой из открытых в данный момент сессий принадлежат данные, и что с ними делать дальше. Сессия может осуществляться по протоколу tcp или udp. Протокол tcp используется всему службами, требующими гарантированной доставки данных: http, https, ftp, smtp, pop3, imap и другими службами, критичными к целостности данных. Он требует от получателя «докладывать» о том, что он получил данные в целости и сохранности. Поэтому обмен данными по tcp довольно медленный, а скорость обмена сильно зависит от качества канала связи. В противовес ему, протокол udp не требует подтверждения доставки, что делает сетевой обмен более быстрым. Udp используется там, где важна максимальная производительность и не критичны потери данных: передача голоса, звука, видео, трансляция логов и др. Порты с номерами 0-1023 называются привилегированными и используются для размещения стандартных сетевых служб. Например, большинство web-серверов ждет подключение к службе http на порту 80, служба https работает на порту 443, smtp использует 25 порт, pop3 – порт 110 итд. Если на сервере запущена служба, которая принимает подключения, например, на порту 80, то мы говорим, что порт 80 у сервера открыт («дверь» открыта, и у нее стоит некто, готовый обслужить вас). Если подключение на этом порту не принимается, то порт считается закрытым (за «дверью» вообще ничего нет, либо охранник смотрит в глазок и отказывается открывать вам, если вы не похожи на человека, которого ждет хозяин). Порты с номерами 1024-65535 используются для размещения нестандартных сервисов, а также организации исходящих соединений. При установке сессии связи клиент выбирает случайным образом любой из своих свободных портов из диапазона 1024-65535, и направляет с этого порта запрос серверу. Если в процессе работы потребуется установить еще одно соединение, оно будет инициировано с другого свободного порта, вне зависимости от того, к какому порту сервера нужно подключиться. Правило простое: новая сессия – новый клиентский порт. Сервер же может одновременно принимать на один порт множество подключений, а не запутаться, какой пакет данных принадлежит какой, сессии ему помогает ip-адрес клиента и номер клиентского порта. Собственно теперь мы знаем почти все, что нужно для того, чтобы начать настройку брандмауэра. Приступим. Для начала выберем стратегию фильтрации IP-пакетов. Их может быть две «разрешено все, что не запрещено» и «запрещено все, что не разрешено». Первая стратегия более либеральна к пользователям и проста в настройке, а вторая более безопасна. Лично я предпочитаю второй вариант и буду отталкиваться от него. Фильтровать будем IP-пакеты, поступающие как на интерфейс хоста, так исходящие с него. В качестве критериев фильтрации будут выступать:
На самом деле, существуют и другие критерии, но для эффективной настройки большинства брандмауэров достаточно перечисленного. С пакетами, проходящими через интерфейс, можно производить следующие действия:
Также пакеты можно определенным образом метить, менять содержимое заголовков IP-пакетов и др. Например, при помощи изменения заголовков можно публиковать отдельные серверные службы, расположенные за брандмауэром, не подвергая опасности остальное (действие DNAT в IPTABLES), или направлять пакеты на другой порт. В IPTABLES (интерфейс брандмауэра Linux-систем) существует, например, опция MIRROR, позволяющая перенаправить пришедший пакет обратно отправителю, таким образом хост «отзеркаливает» входящий трафик и злоумышленник принимается «ломать» свой собственный хост. Начнем с входящего трафика – т.е. с IP-пакетов, которые поступают на наш хост извне. Сперва запретим все входящие пакеты. Многие софтверные решения изначально предоставляют возможность использовать только вторую, параноидальную стратегию настройки брандмауэра, поэтому запрещающее правило – единственное, что существует по умолчанию, притом его нельзя удалить. Запрет всего входящего трафика «отрежет» наш хост от сети, поэтому для нормальной работы нужно будет немного ослабить защиту. Это можно сделать двояко. Вариант первый – пропускать все пакеты, относящиеся к установленным сессиям. Для этого нужно настроить брандмауэр на запрет хождения всех пакетов с установленным флагом SYN в заголовке и отсутствующим флагом ACK. Флаг SYN в заголовке IP-пакета присутствует только в первом пакете, приходящем от клиента в момент установления соединения, и в первом ответном пакете от сервера (вместе с флагом ACK). SYN сигнализирует о том, что удаленный хост предлагает открыть сессию связи. Флаг ACK присутствует в пакетах, относящихся к уже открытым сессиям, поэтому, если мы запретим хождение какие-либо пакетов, имеющих только флаг SYN, то тем самым не дадим нашему хосту отвечать на «предложения» установить соединение и будем принимать лишь данные, относящиеся к существующим сессиям. На самом деле, разрешить хосту принимать все пакеты с флагом ACK – не совсем надежное решение, т.к. это дает возможность злоумышленнику «закидать» нас специально сформированными пакетами с флагом ACK – зафлудить сетевой интерфейс и сделать продолжение работы невозможным. Чтобы этого не произошло, разумным шагом будет разрешить прохождение пакетов с флагом ACK только в том случае, если сессия уже установлена (брандмауэр должен уметь «запоминать» такие сессии – IPTABLES и продукты PIX и ASA это умеют). Ниже перечислены номера портов наиболее популярных служб, которыми мы можем пользоваться: а) Протокол
tcp: б) Протокол udp: Итак, основные шаги настройки входящих соединений:
Если на защищаемых брандмауэром хостах работают какие-либо серверные службы, которые должны быть доступны извне, то нужно разрешить прием пакетов, приходящих на порты этих служб. Разрешающие правила должны стоять в списке правил ВЫШЕ запрещающих, т.к. при прохождении IP-пакета к нему применяется первое из правил, которому он удовлетворяет. Таким образом, пакеты, предназначенные для опубликованных служб пройдут, а все остальные будут отброшены. Если ваши службы работают внутри частной сети (о публичных и частных сетях см. статью на соответствующую тему http://www.mednikov.ru/blog/post_1185397873.html), то правила, разрешающие пакеты, адресованные на порты этих служб, должны не просто пропускать трафик, а модифицировать заголовки IP-пакетов, изменяя адрес получателя с адреса брандмауэра на частный адрес, по которому находится ваша служба в частной сети. Если же брандмауэр разделяет две публичные сети и между ними есть маршрутизация, то достаточно просто разрешить прохождение пакета, не изменяя его заголовков. После того, как правила для входящих пакетов настроены, нужно убедиться, что весь нужный нам трафик пропускается, а остальной – отсеивается, и скорректировать настройки, в случае необходимости. Для проверки служб, работающих по протоколу tcp, можно использовать сканеры портов и утилиту telnet, пытаясь подключиться с ее помощью к интересующему вас порту: telnet <ip-адрес> <номер проверяемого порта>. Если все настроено корректно, переходим к настройке правил для исходящего трафика. Если вы настраиваете брандмауэр для вашей собственной машины, вам вряд ли захочется как-то ограничивать себя в действиях. Однако в корпоративных сетях не следует давать пользователям больше возможностей, чем им требуется по работе, а потому исходящий трафик также следует фильтровать. Фильтрацию можно осуществлять как на интерфейсе брандмауэра, «смотрящем» в локальную сеть (внутренний интерфейс), так и на интерфейсе, соединенном с «публичной сетью» (внешний интерфейс). Первым правилом запретим хождение наружу всех пакетов, отправленных хостами локальной сети. Для этого запретим весь входящий трафик на внутреннем интерфейсе. Далее разрешим прохождение пакетов, приходящих извне от портов служб, необходимых пользователям сети. В первую очередь разрешим хождение пакетов, отправленных за пределы сети на 53 порт по протоколу udp, чтобы обеспечить нормальную работу DNS (работоспособность службы dns можно проверить при помощи утилиты nslookup.). Затем будем открывать порты для остальных служб. Помним о том, что разрешающие правила должны стоять в списке правил выше запрещающих. Хочу отдельно обратить внимание на то, что помимо портов в параметрах фильтров можно указывать также IP-адреса отправителей и получателей пакетов. Это дает дополнительные возможности для фильтрации трафика и повышает гибкость настройки брандмауэра. Например, мы можем запретить пользователям подключаться к какому-либо smtp-серверу, кроме явно заданного администратором, для того, чтобы компьютеры локальной сети в случае заражения спам-ботом не могли рассылать спам. Или, например, мы можем разрешить одному из компьютеров сети (например, администраторскому) работать без ограничения, в то время, как остальные останутся в указанных вами рамках. Вот, собственно, и вся премудрость. Чтобы лучше понять материал, предлагаю решить небольшую задачку: спланировать правила для брандмауэра локальной сети. Дано: локальная сеть 192.168.0.0 / 24. Брандмауэр имеет два интерфейса: внешний адрес 217.210.21.124, внутренний 192.168.0.1 – он же является основным шлюзом для локальной сети (выполняет функции маршрутизатора). Внешний интерфейс называется eth0, внутренний eth1. Внутри сети работает хост, имеющий адрес 192.168.0.2, которым необходимо управлять по протоколу ssh (порт 22), причем доступ к нему должен быть с любого IP- адреса из сети 89.169.0.0 / 16. Требуется: разрешить пользователям работать со службами http, https и icq, отправлять электронную почту только через smtp-сервер с адресом 82.204.216.116, но разрешить получать ее по pop3 или imap с любого сервера из Интернет. Остальной трафик запрещен. Компьютер администратора с адресом 192.168.0.254 должен иметь неограниченный доступ, компьютер с адресом 192.168.0.100 не должен иметь доступа в Интернет вообще. Вот как может выглядеть план правил брандмауэра для решения этой задачи. Напоминаю, правила будут применяться последовательно, сверху вниз; как только встретится правило, которому IP-пакет удовлетворяет, оно применяется, после чего остальные правила не рассматриваются:
Вот и все. Конечно, предложенное решение не самое
оптимальное, однако оно может быть реализовано при помощи оборудования и ПО
большинства производителей и обладает достаточной наглядностью. По мере
освоения данной темы на практике вы освоите приемы, характерные для вашего
любимого брандмауэра, и сможете решать похожие задачи более изящно. На этом закончим. Спасибо всем, кто нашел в себе силы одолеть столь объемный материал. Если вы чувствуете, что застряли, отложите статью на некоторое время и вернитесь к ней через 2-3 дня со свежей головой. Статью можно найти на моем сайте по адресу. Оставайтесь с нами, в следующей статье мы продолжим обсуждать вопросы безопасности компьютерных сетей и поговорим об антивирусах и альтернативных способах защиты ПК от вредоносного программного обеспечения. Предыдущие статьи данного цикла и некоторые другие материалы на ИТ-тематику вы по-прежнему можете найти на www.mednikov.ru/blog С уважением, |
В избранное | ||