Firewall

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Содержание

Введение 3

2. Межсетевой экран 5

3. Политика организации брандмауэра 8

3.1. Брандмауэр с фильтрацией пакетов. 8

3.1.1. Фильтрация входящих пакетов 9

3.1.2. Параметры фильтрации 11

3.2. Протоколы 12

3.3. Фильтрация портов 13

3.4. Фильтрация адресов 14

3.4.1. Фильтрация неверных адресов 14

3.5. Фильтрация в Linux 15

4. Ipchains 17

4.1. Перенаправление 18

4.2. Сохранение фильтра 23

5. Iptables 25

5.1. Переадресация 27

6. Установка, настройка Firewall 28

6.1. Настройка с помощью команды: aptitude install arno-iptables-firewall 28

6.2. Ручное конфигурирование iptables 35

Заключение 38

Список использованной литературы 40 
 

Введение

       Популярность  Linux постоянно растет.  Эта система стала объектом пристального внимания не только администраторов сетей небольших организаций, но и пользователей, выбирающих программные средства для поддержки домашнего компьютера. В настоящее время у многих появилась возможность поддерживать постоянное Internet-соединение, что способствует дальнейшему распространению системы.

       Unix может выступать не только как платформа для установки различных серверов, в частности Web-сервера, но и как шлюз, обеспечивая взаимодействие локальной сети с интернет. Через этот шлюз компьютеры под управлением Unix, Windows NT, Macintosh и других систем, а так же сетевые принтеры могут обмениваться информацией с интернет. Имея под рукой такое разнообразие системных средств, администратор вынужден задуматься об обеспечении их безопасности.

       Вопросы защиты особенно важны для системы  Linux, установленной на компьютере, поддерживающем постоянное соединение с интернет. Подключить компьютер с установленной системой Unix к Интернет – это почти то же самое, что уехать на длительный отдых, оставив двери дома открытыми. Рано или поздно к вам явятся непрошенные гости.

      Для защиты компьютера от вторжения по сети используется сетевой экран. Сетевой  экран – Firewall является основой безопасности и первым кольцом защиты вторжения извне. Согласно документам гостехкомиссии «межсетевой экран – это локальное (однокомпонентное) или функционально- распределенное программное (программно-аппаратное) средство (комплекс), реализующее контроль за информацией,  поступающей в АС и/или выходящей из АС. Межсетевой экран обеспечивает защиту АС посредством фильтрации информации, т.е. ее анализа по совокупности критериев и принятия решения о ее распространении в (из) АС на основе заданных правил, проводя таким образом разграничение доступа субъектов из одной АС к объектам другой АС.  Каждое правило запрещает или разрешает передачу информации определенного вида между субъектами и объектами. Как следствие, субъекты из одной АС получают доступ только к разрешенным информационным объектам из другой АС. Интерпретация набора правил выполняется последовательностью фильтров, которые разрешают или запрещают передачу данных (пакетов) на следующий фильтр или уровень протокола»[5].

         Нежелательному гостю необходимо сначала получить доступ к компьютеру, и только если это удалось, он попытается двигаться дальше и будет пробираться до уровня файлов. Там уже действует второе кольцо обороны – права доступа к файлам и директориям. Firewall, что в переводе означает огненная стена, сам по себе защищает только от сетевых вторжений, но правильная регламентация доступа предохраняет  и от локальных злоумышленников. Оба уровня защиты очень важны.  
 
 
 
 
 
 
 
 
 
 
 
 

2. Межсетевой экран

       В операционных системах Linux в качестве сетевого экрана выступает программа, которая фильтрует информацию на основе определенных правил, в которых должно быть четко прописано, какие пакеты могут обрабатываться или отправляться в сеть, а какие нет. Благодаря этому большинство атак могут захлебнуться уже на входе в компьютер, потому что сетевой экран не позволит сервисам даже увидеть потенциально опасные пакеты. Сетевой экран может быть установлен на каждом компьютере в отдельности или на входе в сеть. Во втором случае Firewall реализует общие настройки безопасности для всех компьютеров в сети.

       Если  в сети очень много компьютеров, то управлять ими и обновлять политику безопасности становится затруднительным. Установка единого сервера с Firewall позволяет упростить эти процедуры. Лучше всего, если компьютер с сетевым экраном выступает как шлюз или как анонимный прокси-сервер для доступа в Интернет остальных участников сети. В этом случае злоумышленник будет изначально видеть только этот компьютер, а остальные как бы прячутся за занавеской. Чтобы проникнуть на любую машину в сети, злоумышленник должен будет сначала получить доступ к компьютеру с Firewall.

       Рис. 1. Firewall для защиты сети

       Основными компонентами брандмауэра (сетевого экрана) являются:

       1. Политика безопасности сети

       2. Механизм аутентификации

       3. Механизм фильтрации пакетов

       При построении брандмауэра обычно используется, непосредственно подключенный к Интернету и содержащий базовый набор средств, реализующих брандмауэр. Такой компьютер иногда называют бастионом.

       Термин  «брандмауэр» может приобретать  различные значения в зависимости  от принципа, положенного в основу работы средств защиты, сетевой архитектуры и схемы маршрутизации. Брандмауэры обычно подразделяют три типа:

       1. Брандмауэр с фильтрацией пакетов;

       2. Прикладной шлюз;

       3. Универсальный Proxy-сервер.

       Брандмауэр  с фильтрацией пакетов, как правило, действует на сетевом, транспортном уровнях и реализуется в составе операционной системы. Источником информаций для фильтрации является содержимое заголовка IP-пакетов, на основе которого брандмауэр принимает решение, по какому маршруту следует направить пакет.

       Прикладной шлюз реализуется посредством выбора сетевой архитектуры и конфигурации системы. Сетевой трафик никогда не проходит через компьютер, на котором выполняется прикладной шлюз. Чтобы получить доступ в Интернет, локальный пользователь должен зарегистрироваться на прикладной шлюз. Компьютер, содержащий прикладной шлюз, может быть защищен брандмауэрами с фильтрацией пакетов как извне, так и из локальной сети.

       Proxy-сервер обычно реализуется в виде независимого приложения, управляющего доступом к различным типам сетевых служб. Для клиентов Proxy-сервер выполняет роль сервера, предоставляющего информацию. Вместо того чтобы непосредственно обращаться к удаленным серверам, клиентские программы обращаются к Proxy-серверу. Получив обращение клиента, Proxy-сервер  устанавливает связь с удаленным узлом от своего имени, при этом заменяется в пакете адрес клиента своим адресом. Подобный сервер может контролировать целостность данных, осуществлять проверку на наличие вирусов и обеспечивать выполнения правил системной политики, определяющий обмен высокоуровневыми данными.

       Помимо  этого, брандмауэры можно разделить  по типу построения защиты:

       1. Пороговый и его разновидность – бастионного типа;

       2. Организующий так называемую демилитаризованную зону.

       Брандмауэр порогового типа призван защитить локальную сеть от атак извне, а при соответствующей настройке и от атак изнутри. Такого типа брандмауэры обычно используются для защиты небольшой сети или даже одного компьютера. Как правило, сетевые службы, предоставляющие услуги вне локальной сети (HTTP, FTP и т. п.), размещаются на том же компьютере, что и брандмауэр.

       Организация демилитаризованной зоны оправдана  тогда, когда в сети выделено несколько  специальных компьютеров для  интернет - сервисов, предоставляемых большому миру, а так же при отсутствии уверенности в благонадежности собственных сотрудников. Для организации демилитаризованной зоны используются, по меньшей мере, два брандмауэра – один для защиты демилитаризованной зоны от проникновения извне, а второй – от проникновения из собственной локальной сети. Организация демилитаризованной зоны сложнее, чем организация брандмауэра бастионного типа, но взамен можно получть большую защиту данных.

3. Политика организации брандмауэра

       3.1. Брандмауэр с фильтрацией пакетов.

       Брандмауэр  с фильтрацией пакетов представляет собой «сито» для проходящих через  него входящих и исходящих пакетов. В операционной системе Linux реализован брандмауэр, позволяющий контролировать ICMP-, UDP- и TCP-пакеты. Брандмауэр с фильтрацией пакетов организован как механизм, реализующий набор разрешающих и запрещающих правил для входящих и исходящих пакетов. Этот набор правил определяет, какие пакеты могут проходить через конкретный сетевой интерфейс.

       Брандмауэр  с фильтрацией пакетов может  производить с проходящим пакетом всего три действия:

       1. Переслать пакет в узел назначения

       2. Удалить пакет без уведомления посылающей пакет стороны

       3. Вернуть передающему компьютеру сообщение об ошибке

       Несмотря  на простоту таких действий, в большинстве  случаев их достаточно для организации эффективной защиты. Как правило, брандмауэр устанавливается для того, чтобы контролировать данные, которыми компьютеры обмениваются с Интернетом. В результате работы фильтрующего брандмауэра отсеиваются недопустимые обращения к узлам внутренней сети и запрещается  передача из внутренней сети в Интернет для пакетов, определенных правилами фильтрации.

       В целях получения более гибкой системы правила фильтрации пакетов  составляются для каждого сетевого интерфейса, в них учитываются  IP-адреса источника и получателя, номера портов TCP и UDP, флаги TCP-соединений и ICM-сообщений. Причем правила для входящих и исходящих пакетов различаются. Это значит, что при настройке фильтрующего брандмауэра правила для конкретного сетевого интерфейса представляются как отдельные правила для входящей и исходящей информации, поскольку входящие и исходящие пакеты обрабатываются брандмауэром независимо друг от друга. Списки правил, которые управляют фильтрацией сетевых пакетов поступающих извне в локальную сеть и отправляемых из локальной сети в Интернет, принято называть цепочками (chains). Термин "цепочка" используется потому, что при проверке пакета правила применяются последовательно одно за другим, пока не обнаружится подходящее правило для сетевого пакета или список правил не будет исчерпан.

       Описанный механизм фильтрующего брандмауэра  достаточно эффективен, однако он не обеспечивает полной безопасности локальной сети. Анализ заголовков сетевых пакетов — операция слишком низкого уровня, для того чтобы реально выполнять аутентификацию и контролировать доступ. В процессе фильтрации пакетов практически невозможно распознать отправителя сообщения и проанализировать смысл передаваемой информации. Из всего набора данных, пригодных для аутентификации, на рассматриваемом уровне доступен только IP-адрес отправителя, однако этот адрес очень легко подделать, на чем и базируется множество способов сетевых атак. Несмотря на то, что средства фильтрации пакетов позволяют эффективно контролировать обращение к портам, использование протоколов обмена и содержимое пакетов, проверку данных необходимо продолжить на более высоком уровне.

       3.1.1. Фильтрация входящих пакетов

       Рассмотрение  построения брандмауэра логично  начать со входящих пакетов. Поскольку именно извне обычно происходит проникновение в сеть.

       Итак, основной, но не единственной задачей  сетевого экрана является фильтрация пакетов. В Linux уже встроен Firewall, и его не надо устанавливать отдельно. Это iptables и ipchains. Iptables и ipchains позволяют контролировать трафик, который проходит сквозь компьютер по протоколам TCP, UDP  и ICMP. Так как TCP является транспортом для всех основных протоколов Интернета: FTP, HTTP, РОРЗ и др., то фильтрация TCP позволяет защищать все эти сервисы.

       Все запросы, которые поступают из Интернета проходят через сетевой экран, который проверяет их по внутренним правилам. И, если соответствие установлено, то пакет пропускается. Если какой-либо параметр нарушает хотя бы одно правило, то пакет может быть удален:

  • без предупреждения;
  • с посылкой на компьютер отправителя, сообщая об ошибке.

       Последний вариант не приветствуется среди пользователей, потому что незачем направлять злоумышленнику лишние пакеты. Лучше оставить действие без внимания, и злоумышленник будет думать, что сервис просто недоступен. Но в этом случае легальные пользователи могут ощутить неудобства при наличии просчета в конфигурировании сетевого экрана. Допустим, что заблокирован доступ к 80 порту. Если пользователь обратится к Web-серверу, то программа, не получив ответа о запрете, будет находиться в состоянии ожидания до истечения Timeout. Для некоторых программ это значение может быть бесконечным, и они зависнут.

       К тому же, отправка сообщений с ошибками идет по протоколу ICMP. Недобросовестный пользователь может использовать эти особенности для реализации атаки "Отказ от обслуживания" и переполнить канал ненужными ответами. Атака DoS может быть направлена не только на трафик. Достаточно в цикле запускать запросы на установку соединения с запрещенным портом, а компьютер будет тратить ресурсы на проверку пакетов и отправку ICMP-ответов. Если пакеты будут идти слишком часто, то сервер может не справиться с нагрузкой и перестанет отвечать на запросы авторизованных пользователей.

       При настройке правил можно использовать два варианта фильтра:

       1.  Разрешено все, что не запрещено.

       2.  Запрещено все, что не разрешено.

       Наиболее  безопасным методом является второй, потому что всегда следует отталкиваться  от запрета. Изначально необходимо запретить  абсолютно все, а потом по мере надобности открывать доступ определенным пользователям и к обусловленным сервисам. Именно этой политики придерживаются, когда настраивают правила для входящих пакетов.

       Если  двигаться от разрешения, то по умолчанию  все позволено. Администратор может забыть или просто не закрыть некий доступ и увидеть свою ошибку только после того, как злоумышленник проникнет в систему.

       3.1.2. Параметры фильтрации

       Основными параметрами пакета, по которым производится фильтрация, являются номер порта  источника или приемника, адрес отправителя или назначения и протокол.

       Фильтровать можно пакеты, идущие в обе стороны. Проверка пакетов, приходящих извне, позволяет на самом раннем этапе отсеять любые попытки взломать систему или вывести ее из строя.

       Можно задаться вопросом, зачем же фильтровать то, что уходит из сети? На первый взгляд бессмысленно, но смысл есть и достаточно большой. У исходящего трафика могут быть враги, такие как:

  • троянские программы, которые могут отправлять в сеть конфиденциальную информацию или соединяться со злоумышленником или с его сервером, чтобы брать команды с какого-нибудь файла;
  • cпециализированные программы для обхода правил. Допустим, что доступ к определенному порту извне запрещен. Злоумышленник может поместить на сервере программу, которая будет перенаправлять трафик с разрешенного порта на запрещенный, наподобие туннелирования OpenSSL.

       Возможных лазеек для проникновения очень  много, задача закрыть максимальное их количество. Для этого под контролем  должен быть трафик в обоих направлениях.

       3.2. Протоколы

       TCP используется как базовый для передачи данных таких протоколов, как HTTP, FTP и др. Запрещать его не имеет смысла, потому что это основа, без которой пользователь лишится всех удобств, предоставляемых всемирной сетью. Для передачи данных сначала TCP устанавливает соединение с удаленным хостом, и только потом происходит обмен информацией. Благодаря этому подделка IP-адреса любого участника соединения усложняется, а иногда становится и невозможной.

       Протокол  UDP находится на одном уровне с TCP, но передает данные без установки соединения. Это значит, что пакет просто посылается в сеть на определенный адрес, и нет гарантии, что он дошел до адресата. Здесь нет никакой защиты от подделки IP-адреса, поэтому в качестве отправителя злоумышленник может указать что угодно, и сервер не увидит подвоха. Если нет особой надобности, то обычно запрещают прохождение таких пакетов в обе стороны.

       Протокол  ICMP используется для обмена управляющими сообщениями. Через него команда ping проверяет соединение с компьютером, а оборудование или программы сообщают друг другу об ошибках. Если этот протокол использовать только по назначению, то он очень удобен. Но в жизни все далеко от идеала, и ICMP уже не раз становился объектом для DoS-атак. Если обмен управляющими сообщениями необходим в работе, нужно попробовать найти другую программу, но избавится от использования ICMP.

       3.3. Фильтрация портов

       Первое, на что надо обратить внимание — это, конечно же, порты. Допустим, что есть Web-сервер, к которому имеют доступ все пользователи. Предположим, что на нем работают абсолютно безопасные сценарии, или статичные документы HTML. Помимо этого, все программы содержат самые последние обновления и не имеют уязвимостей. Получается, что сервер безопасен! Но до поры до времени. Для обновления содержимого необходим какой-то доступ для закачки файлов, ведь бегать с дисками к Web-серверу никто не будет. Чаще всего для работы с файлами открывают FTP-сервис, а вот это уже дыра.

       Для доступа по FTP можно установить наиболее защищенные программы и самые сложные пароли, но злоумышленник рано или поздно сумеет взломать этот сервис. Пароль можно подобрать, украсть с компьютера пользователя или заставить самого сказать через социальную инженерию, существуют и другие методы. Любой канал, через который можно проникнуть в систему, становится уязвимым, потому что именно его будет взламывать злоумышленник, и как раз на это будут потрачены все усилия. У одного не получится, у второго, а сотый случайно войдет с первого раза и уничтожит все, что попадется под руку.

       Таким образом, можно установить на сервер такую политику, при которой на 80 порт будут приниматься все подключения, а FTP-сервис (21 порт) будет запрещен для всех, кроме определенного IP-адреса. После этого злоумышленник может хоть годами подбирать пароль, любой его трафик будет обрезаться, если он не знает IP-адреса и не сможет его подделать.

       Нужно запретить все порты и после этого открыть только то, что необходимо. На сервере, который охраняет целую сеть, это сделать сложно, потому что разные компьютеры требуют различные сервисы. Открыть их все — значит разрешить работать со всеми портами на любой машине. Конечно же, можно помимо портов использовать в правилах IP-адреса, но дополнительным вариантом защиты будет использование сетевого экрана на каждом компьютере внутри сети. В этом случае каждый из них будет охраняться в зависимости от выполняемых задач. Если это Web-сервер, то из Интернета будет виден только 80 порт, для FTP — 21-й порт.

       3.4. Фильтрация адресов

       Исходя  из предыдущих соображений видно, что для фильтрации можно использовать и IP-адрес, хотя максимальный эффект достигается именно в сочетании параметров (порт и адрес).

       Допустим, что в сети находятся два Web-сервера. Такое бывает очень часто. Один сервер делают доступным для всех посетителей из Интернета, а второй – только для своих пользователей. Вполне логичным будет разделение информации, тогда на закрытый сервер можно пускать трафик только локальной сети вне зависимости от порта.

       3.4.1. Фильтрация неверных адресов

       Был случай, когда один сервис неправильно  обрабатывал адрес получателя. Если серверу приходил неверный пакет, то он отвечал отправителю сообщением о некорректности данных. Проблема заключалась в том, что злоумышленник мог послать на сервер такой пакет, в котором в качестве отправителя стоял адрес получателя, т. е. и в том и в другом случае использовался IP-адрес сервера. Конечно же, сервис пытался отослать сообщение об ошибке, и отправлял его сам себе, и снова видел ошибочный пакет. Таким образом информация зацикливалась. Если злоумышленник направит тысячи таких пакетов, то сервер только и будет посылать сообщения об ошибках.

       О подобных погрешностях уже давно  ничего не слышат, но нет гарантии, что они не появятся снова. Существует множество адресов, которые надо фильтровать и не пропускать в сеть.

       Помимо  этого, советуют не пропускать пакеты с адресами, которые зарезервированы или не могут использоваться в Интернете. Рассмотрим диапазоны этих адресов:

  • в качестве отправителя стоит адрес 127.0.0.1. Из Интернета пакет с таким адресом прийти не может, потому что он всегда используется для указания на локальную машину (localhost);
  • от 224.0.0.0 до 239.255.255.255 – используется для широковещательных адресов, которые не назначаются компьютерам, поэтому с них не могут приходить пакеты;
  • от 240.0.0.0 до 247.255.255.255 – зарезервирован для будущего использования в Интернете.

       Все эти адреса нереальны для Интернета, и никакие пакеты с такими параметрами не должны проходить через сетевой экран.

       3.5. Фильтрация в Linux

       Для фильтрации пакетов по определенным пользователем правилам в ядро Linux уже встроены все необходимые функции. Но это только основа, а нужен еще инструмент, который в удобной форме позволит управлять этими правилами.

       В операционной системе Linux можно воспользоваться двумя программами: iptables и ipchain.

       В ядре Linux находятся три основные цепочки (chain) правил:

       1. Input – для входящих пакетов;

       2. Output – для исходящих пакетов;

       3. Forward – для пакетов, предназначенных другой системе.

       ОС  Linux проверяет все правила из цепочки, которая выбирается в зависимости от направления передачи. Пакет последовательно обследуется на соответствие каждому правилу из цепочки. Если найдено хотя бы одно совпадение с описанием, то выполняются действия, указанные в данном правиле: DENY, REJECT или ACCEPT, т. е. система решает, пропускать пакет дальше или нет.

       Цепочки несут в себе одну очень неприятную для новичков особенность. Допустим, что на сервере нужно открыть 21 порт только для самого себя. Для этого можно создать два правила:

       1. Запретить все входящие пакеты на 21 порт сервера.

       2. Разрешить пакеты на 21 порт с компьютера с адресом 192.168.1.1.

       На  первый взгляд все верно, доступ запрещен для всех, а открыт только для  одного IP-адреса. Проблема кроется в том, что если посылка будет с адреса 192.168.1.1, то сравнение первого правила с параметрами пакета даст положительный результат, т. е. выполнится запрет и пакет удалится, и второе правило не сработает никогда.

       Чтобы политика действовала верно, строки надо поменять местами. В этом случае сначала проверится запись "Разрешить пакеты на 21 порт с компьютера с адресом 192.168.1.1", контроль пройдет успешно и пакет будет пропущен. Для остальных IP-адресов это правило не выполнится, и проверка продолжится. И вот тогда сработает запрет доступа на 21 порт для всех пакетов.

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

4. Ipchains

       Наиболее  распространенной программой для создания правил сетевого экрана является ipchains. В команде вызова можно указывать следующие параметры:

       -A цепочка правило – добавить правило в конец цепочки. В качестве аргумента указывается имя цепочки input, output или forward;

       -D цепочка номер – удалить правило с указанным номером из заданной цепочки;

       -R цепочка номер правило – заменить правило с указанным номером в заданной цепочке;

       -I цепочка номер правило – вставить правило в указанную первым аргументом цепочку под номером, заданным во втором параметре. Если номер равен 1, то правило станет первым в цепочке;

       -L цепочка – просмотреть содержимое указанной цепочки;

       -F цепочка – удалить все правила из указанной цепочки;

       -N имя – создать новую цепочку с заданным именем;

       -X имя – удалить цепочку с указанным именем;

       -P цепочка правило – позволяет изменить политику по умолчанию;

       -p протокол – определяет протокол, к которому относится правило. Значений аргумента протокол может быть четыре: tcp, udp, iemp или all (указывается, если правило действует для всех протоколов);

       -i интерфейс – сетевой интерфейс, к которому будет привязано правило. Если этот аргумент не указан, то правило будет относиться ко всем интерфейсам;

Firewall