Реферат: Firewall

Название: 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.

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 интерфейс – сетевой интерфейс, к которому будет привязано правило. Если этот аргумент не указан, то правило будет относиться ко всем ин­терфейсам;

-j действие – операция, которая должна быть выполнена над пакетом.

В качестве аргумента можно указать ACCEPT, REJECT или DENY;

-s адрес порт – характеристики отправителя пакета. Первый аргумент задает IP-адрес источника, а второй (не обязательный) – порт. У протокола ICMP нет портов;

-d адрес порт – атрибуты получателя пакета. Первый аргумент задает IP-адрес назначения, а второй (не обязательный) — порт.

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

Сетевой экран, который защищает целую сеть, состоит, как минимум, из компьютера с двумя интерфейсами. Один из них (сетевая карта или модем) направлен в Интернет, а другой— в локальную сеть. Сетевой экран будет заниматься перенаправлением трафика с одного интерфейса в другой, т. е. с сетевой кар­ты на модем и обратно. Такой компьютер называют шлюзом. Пользователи не подключаются к самому шлюзу, а только используют его как средство пе­реадресации пакетов.

Можно установить какие-либо сервисы прямо на сетевой экран, но это делать не рекомендуется. Лучше, если они будут за пределами этого компь­ютера. Публичные сервисы лучше ставить со стороны Интернета, а закры­тые — должны быть на серверах внутри локальной сети.

Firewall

Рис. 2. Расположение серверов с публичными и закрытыми сервисами

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

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

Каждое лишнее разрешение в сетевом экране – это дополнительная дверь внутрь локальной сети. Например содержания Web-сервера.

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

Можно организовать сеть, как показано на рисунке 3. Только в этом случае придется использовать дополнительный сервер для организации второго Firewall.

Firewall

Рис. 3. Двойная защита сети

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

Второй сетевой экран защищает локальную сеть, поэтому должен иметь бо­лее жесткие правила, запрещающие любые соединения извне. Помимо этого, не должно быть никаких доверительных отношений между публичным сер­вером и локальной сетью. Если разрешить такому серверу свободное под­ключение к каким-либо портам внутренней сети, то смысл использования такой схемы теряется. Нужно не забывать, что благодаря ошибке в Web-сервере или сценарии злоумышленник сможет выполнять команды и устанавливать соединения от имени публичного сервера, и злоумышленнику даже не придется взла­мывать второй Firewall.

Есть еще один вариант – установить в компьютер три сетевые карты. Одна смотрит в Интернет, ко второй подключена приватная локальная сеть, а к третей – сеть с серверами, на которых работают открытые ресурсы (рис. 4). Получается защита в виде вилки. На один интерфейс можно перенаправлять любой трафик из Интернета, а другой интерфейс защищается всеми возможными способами.

Firewall

Рис. 4. Защита двух сетей одним сетевым экраном

С точки зрения безопасности схема, показанная на рис. 3, намного надеж­нее, потому что локальную сеть защищают сразу два сетевых экрана, и их легче конфигурировать. Второй вариант (рис. 4) проще и дешевле, т. к. не требует дополнительного компьютера для Firewall, но менее безопасен. Про­никнув на компьютер с сетевым экраном, злоумышленнику потребуется меньше усилий, чтобы взломать приватную сеть.

На рис. 2 изображена сеть на ос­нове витой пары с центральной точкой в виде коммутатора. Чтобы попасть в Интернет, любой пакет от компьютера проходит через коммутатор, входит через сетевую карту 1 (eth0) на машину с установленным Firewall и выходит через сетевую карту 2 (ethl) в Интернет.

На самом компьютере с Firewall должно быть разрешено перенаправление, которое позволит пакетам проходить из одной сетевой карты в другую. Чтобы включить эту возможность, нужно записать в файл /proc/sys/net/ipv4/ip_forward число 1 (по умолчанию там может быть 0) или выполнить команду:

echo I > /proc/sys/net/ipv4/ip_forward

Для обеспечения переадресации между сетевыми интерфейсами ядро опера­ционной системы должно быть скомпилировано с соответствующей под­держкой, потому что перенаправление происходит именно на этом уровне. Помимо этого, нужно изменить параметр net.ipv4.ip_forward в файле /etc/sysctl.conf на 1.

Сетевой экран может не только проверять пакеты на соответствие опреде­ленным фильтрам, но и прятать IP-адреса компьютеров сети. Это происходит следующим образом:

1. Клиент направляет пакет в сеть, и до сетевого экрана он будет идти со своим IP-адресом.

2. Сетевой экран меняет IP-адрес отправителя на свой и направляет пакет дальше от своего имени.

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

Пример, который разрешает переадресацию на внешний интер­фейс из локальной сети:

ipchains -A forward -i eth1 -s 192.168.1.0/24 -j MASQ

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

Далее идет ссылка на интерфейс eth1 (сетевая карта, которая смотрит в Ин­тернет). Диапазон адресов соответствует всей сети 192.168.1.x. В качестве разрешения используется значение MASQ, что соответствует маски­рованию адреса, т. е. адрес клиента будет заменен на адрес компьютера, на котором работает Firewall.

Данное разрешение позволяет только передавать пакеты с адресов 192.168.1.x на сетевой интерфейс eth1. Но это еще не значит, что трафик поступит и сможет выйти в Интернет. Чтобы пакеты пользователей были приняты сете­вым экраном, должно быть разрешение ACCEPT примерно следующего вида:

ipchains -A input -i eth0 -s 192.168.1.0/24 -j ACCEPT

В этом фильтре открыт доступ на сетевой интерфейс eth0 любым паке­там с адресов 192.168.1.x. Разрешение дано на порты, поэтому адрес отправи­теля пакета может быть любым из сети 192.168.1.x.

Осталось только разрешить таким же образом пакетам выходить из eth1, и можно считать, что все компьютеры сети уже полу­чили доступ в Интернет. Только на всех клиентских машинах необходимо указать в качестве шлюза по умолчанию IP-адрес компьютера с сетевым ин­терфейсом, и все пакеты найдут своего адресата.

Если структура сети напоминает рис 3, то переадресация должна быть включена на обоих сетевых экранах. А вот маскировку адреса лучше всего сделать на двух Firewall. В этом случае второй сетевой экран будет скрывать ло­кальную сеть даже от публичного сервера.

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

ipchains -A forward -i ppp0 -s 192.168.1.0/24 -j MASQ

Здесь перенаправление идет на интерфейс одного из модемов, имена которых имеют вид рррх.

Чаще всего необходимо, чтобы клиенты имели доступ к ресурсам Ин­тернета, а обратное подсоединение было невозможно. Когда по протоколу TCP запрашивается подключение к удаленному компьютеру, то посылается пакет с установленным битом syn. В простых пакетах такого бита не должно быть. Таким образом, достаточно запретить ТСР-пакеты с этим флагом, и удаленный компьютер не сможет подключиться ни к одному ресурсу компьютера или сети. Это можно реализовать следующим образом:

ipchains -I input 1 -i ppp0 -p tcp – syn -j DENY

В данной строке вставляется новое правило в цепочку проверки входящих пакетов. Контролируются пакеты TCP, у которых установлен флаг syn (об этом говорит ключ – syn). Если такой пакет получен, то он удаляется. Для использования маскировки IP-адреса ядро операционной системы долж­но быть скомпилировано с соответствующей поддержкой, потому что подме­на адреса происходит на уровне ядра.

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

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

ipchain-save > файл

Сохранение цепочек можно сделать автоматическим, но лучше сделать все вручную, так будет надежнее.

Восстановить цепочки тоже можно из файла. Для этого необходимо выпол­нить команду:

ipchain-restore < файл

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

5. Iptables

Iptables – это логическое развитие ipchains. Взяли все лучшее модифицировали, развили в сторону гибкости, надежности и производительности. В современных дистрибутивах iptables является неотъемлемой частью системы и ядро скомпилировано с учетом требований iptables.

Программа iptables является новой разработкой по управлению фильтрами и обеспечению безопасности. С помощью iptables пользователь также может редактировать цепочки правил input, output и forward.

Сходство между ipchains и iptables прослеживается уже при взгляде на пара­метры:

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

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

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

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

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

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

-p протокол – определяет протокол, на который воздействует правило;

-i интерфейс – определяет сетевой интерфейс, с которого данные были получены. Здесь можно использовать INPUT, FORVARD или PREROUTING;

-о интерфейс – задает интерфейс, на который направляется пакет. Здесь можно указывать OUTPUT, FORVARD или PREROUTING;

-j действие – операция, которая должна быть выполнена над пакетом. В качестве аргументов можно указать следующие значения:

• LOG – поместить в журнал запись о получении пакета;

• REGECT – отправителю будет направлено сообщение об ошибке;

• DROP – удалить пакет;

• BLOCK – блокировать пакеты;

-s адрес – IP-адрес отправителя пакета. Как и в случае с iptables, после адреса можно задать маску в виде /mask и знак отрицания "!", что будет соответствовать любым адресам, кроме указанных;

-d адрес – адрес назначения пакета.

Большинство параметров абсолютно идентичны программе ipchains. Но есть важные и очень мощные отли­чия. Например, с помощью ключей -о и -i очень просто указывать, с какого на какой интерфейс направляется пакет.

В данном обзоре ключей затронуты только основы, но если посмотреть файл документации, то можно увидеть еще много вариантов работы с ключом -j, т. е. существуют большие возможности по управлению пакетом, если он со­ответствует правилам.

Настройка цепочек iptables не сильно отличается от ipchains. Начать фор­мирование цепочки нужно с очистки всего содержимого. Двигаться необхо­димо от полного запрета и разрешать только то, что не нанесет вреда серверу. Сервисы, которые могут оказаться опасными, должны быть доступны только тем, кому это необходимо, или тем, кому можно доверять.

Для сохранения изменений в iptables также надо выполнить специализиро­ванную команду:

service iptables save

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

Для разрешения переадресации с помощью iptables нужно выполнить сле­дующую команду:

iptables -A FORWARD -о ррр0 -j MASQUERADE

В данной строке позволяется переадресация на интерфейс ррр0. С помощью параметра -j таким образом пользователь требует прятать IP-адрес отправителя, т. е. включает маскарадинг.

Если он использует трансляцию сетевых адресов (NAT, Network Address Translation), то команда может выглядеть следующим образом:

iptables -t nat -A FORWARD -о ррр0 -j MASQUERADE

Ключ -t nat указывает на необходимость загрузить модуль iptablenat. Если он не загружен, то это легко сделать вручную с помощью следующей команды:

modprobe iptable_nat

iptabie_nat — это модуль ядра, который позволяет сетевому экрану работать с NAT.

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

Пользователю для начала нужно выбрать дистрибутив на котором он будет работать. Debian GNU/Linux 5.0 неплохо подходит для этого. Этот дистрибутив достаточно распространенный. У Debian GNU/Linux одно из самых больших сообществ, так же периодически выходят все более новые версии пакетов, которые легко загрузить через интернет.

Для организации Firewall в GNU/Linux используется программа iptables, которая, как правило, сразу инсталлируется при установке большинства дистрибутивов. В Debian GNU/Linux проверить это можно, запустив с правами администратора aptitude. При необходимости – нужно установить iptables.

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

Ручное конфигурирование iptables является нетривиальной задачей и под силу только специалистам в области системного администрирования. Поэтому для настройки правил, по которым будет действовать брандмауэр, лучше воспользоваться специальным конфигуратором. В Debian GNU/Linux это - программа arno-iptables-firewall. Будучи запущенной, она задает ряд вопросов, на основании которых генерирует правила для функционирования брандмауэра iptables.

Нужно набрать в консоли с правами суперпользователя:

aptitude install arno-iptables-firewall

В начале инсталляции программа спросит, действительно ли пользователь желает с ее помощью настроить Firewall iptables:

Firewall

Рис. 5. Настройка Firewall

Надо указать внешний интерфейс - "смотрящий" в интернет, т.е. подключенный к модему. Настройки интерфейсов определяются в конфигурационном файле /etc/network/interfaces.

Это интерфейс eth0, который подключен к интернету. Его особенностью является то, что IP-адрес ему назначается провайдером динамически, поэтому выставлена опция dhcp.

auto eth0

iface eth0 inet dhcp

Это интерфейс, который обращен в локальную сеть. В целях безопасности в локальной сети шлюз имеет статический IP-адрес - 192.168.2.1, поэтому выставлена опция static. Маска сети - 255.255.255.0. Широковещательный адрес сети в таком случае будет 192.168.2.255.

auto eth1

iface eth1 inet static

address 192.168.2.1

netmask 255.255.255.0

broadcast 192.168.2.255

Далее нужно указать конфигуратору Firewall, что внешним является интерфейс eth0:

Firewall

Рис. 6. Внешний интерфейс

На вопрос, выдается ли от провайдера IP-адрес динамически (с помощью протокола DHCP), нужно ответить утвердительно:

Firewall

Рис. 7. Провайдера IP-адреса

Cледует вопрос, какие службы будут предоставлены с этого компьютера внешним пользователям интернета. Здесь не обязательно что-либо указывать.

Firewall

Рис. 8. Службы предоставляемые с компьютера внешним пользователям интернета

Затем идет вопрос, будет ли пользователь предоставлять какие-либо службы по протоколу UDP. Тоже нет - и тоже нужно оставить строку пустой.

Firewall

Рис. 9. Службы по протоколу UDP

Нужно ли, чтобы пользователя проверяли, имеется ли связь с компьютером, на котором установлен Firewall. Это вполне допустимо:

Firewall

Рис. 10. Пинг

На этом настройка для отдельного компьютера, не являющегося шлюзом локальной сети, будет закончена. Если же предполагается использовать компьютер как шлюз, нужно ответить еще на несколько вопросов. Следует указать интерфейс, которым шлюз обращен в локальную сеть - в данном случае это eth1.

Firewall

Рис. 11. Интерфейс обращенный в локальную сеть

Далее, на основании данных из /etc/network/interfaces, нужно указать спецификацию локальной сети, к которой подключен компьютер: в данном примере это 192.168.2.0/24.

Firewall

Рис. 12. Спецификация локальной сети

На вопрос позволить ли NAT-трансляцию, т.е. переадресацию трафика из интернета через шлюз в локальную сеть и обратно, следует ответить "да" - это является одной из основных задач в данном случае:

Firewall

Рис. 13. NAT-трансляция

Тогда встает вопрос: а какой сегмент локальной сети может быть допущен через переадресацию к внешним сетям? Следует указать значение 192.168.2.0/24

Firewall

Рис. 14. Сегмент локальной сети

Наконец, подтверждение запуска iptables без дополнительной проверки с автоматически сформированных конфигуратором правил для Firewall:

Firewall

Рис. 15. Подтверждение запуска iptables

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

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

Запрет любых обращений будет выглядеть следующим образом:

iptables -P INPUT DROP

Теперь все входящие пакеты будут удаляться. Как и в случае с программой ipchains, именно с этой команды нужно начинать конфигурирование iptables. В правиле используется ключ -р, позволяющий за­дать значение по умолчанию для данной цепочки. Если фильтр добавить с помощью ключа -А, то можно запретить абсолютно любые подключения.

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

iptables -A INPUT -j LOG

Но это делать не рекомендуется. У публичных серверов за день происходит несколько сотен, а то и тысяч сканирований портов. Если обращать внимание на каждую такую попытку, то придется устанавливать на сервер слишком большие жесткие диски для хранения журналов. А ведь если диск будет за­полнен, то система выйдет из строя. Таким образом, злоумышленник может просто на­править бесконечные обращения на запрещенный порт и через некоторое время добиться удачно завершенной DoS-атаки.

Следующая команда создает фильтр, по которому запрещается принимать эхо-запросы от любых компьютеров:

iptables -A INPUT -s 0/0 -d localhost -p icmp --icmp-type echo-request -j DROP

Создание фильтра с помощью iptables нe сильно отличается от аналогичной процедуры в ipchains.

Следующая команда запрещает доступ к FTP-порту:

iptables -A INPUT -s 0/0 -d localhost -p tcp --dport 21 -j DROP

Чтобы запретить доступ с определенного интерфейса, нужно добавить ключ -i и указать интерфейс eth0:

iptables -A INPUT -i eth0 -s 0/0 -d localhost -p tcp --dport 21 -j DROP

Теперь нужно запретить исходящие пакеты с 21 порта. Для этого используется команда:

iptables -A OUTPUT -i eth0 -s localhost -d 0/0 -p tcp --dport 21 -j DROP

Очень мощной особенностью iptables является возможность проверки содер­жимого пакетов. Это очень удобно, например, для фильтрации Web-запросов.

Можно разрешить доступ к 80 порту, но контролировать, чтобы пакеты со­держали только допустимые параметры.

Если нужно разрешить доступ к FTP-серверу, но при этом быть уверенными, что тот кто хочет взломать вашу защиту не сможет обратиться к файлам / etc/passwd и / etc/shadow. Для этого нужно запретить пакеты, в которых есть этот текст. Если злоумышленник попытается послать запрос, содержащий ссылки на эти файлы, то такой пакет будет отклонен. Следующие команды запрещают доступ к этим файлам по протоколам FTP и WWW:

iptables -A INPUT -m string --string "/etc/passwd" -s 0/0 -d localhost -p tcp --dport 21 -j DROP

iptables -A INPUT -m string --string "/etc/shadow" -s 0/0 -d localhost -p tcp --dport 21 -j DROP

iptables -A INPUT -m string --string "/etc/passwd" -s 0/0 -d localhost -p tcp --dport 80 -j DROP

iptables -A INPUT -m string --string "/etc/shadow" -s 0/0 -d localhost -p tcp --dport 80 -j DROP

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

Даже если stunnel передает расшифрованный трафик на другой порт внутри одного компьютера, можно включить контроль любых пакетов на всех интерфейсах, чтобы они проверялись после расшифровки.

Заключение

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

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

Может сложиться впечатление, что Firewall – это пустое развлечение и трата денег. Это не так. Если он хорошо настроен, постоянно контролируется, а в системе используются защищенные пароли, то сетевой экран может предот­вратить большинство проблем.

Хороший экран имеет множество уровней проверки прав доступа, и нельзя использовать только один из них. Если ограничить доступ к Интернету исключительно по IP-адресу, то нужно будет оплачивать большой трафик. Но если при проверке прав доступа используется IP-адрес в сочетании с МАС-адресом и паролем, то такую систему взломать уже намного сложнее. Да, и MAC и IP-адрес легко подделать, но можно для полной надежности подключить к системе защиты и порты на коммутаторе. В этом случае, даже если злоумышленник будет знать пароль, то для его использования нужно сидеть имен­но за тем компьютером, за которым он закреплен. А это уже не просто.

Защита может и должна быть многоуровневой. Если имеются данные, кото­рые нужно оградить от посторонних, то лучше использовать максимальное количест­во уровней. В Linux уже имеется Firewall – это ipchains и iptables, которые при правильной настройке будут отлично защищать сервер от вторжения. Поэтому устанавливать Firewall отдельно не обязательно.

Умение правильно настраивать Firewall на системе Linux позволяет защитить сервер данных, не прибегая к дорогостоящим коммерческим продуктам.

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

1. Стаханов, А.А. Сетевое администрирование Linux /А.А. Стаханов. –М.: БХВ-Петрбург, 2004. – 480 с.

2. Немеет, Эви, Снайдер, Гарт, Хейн, Трент. Руководство администратора Linux / Немеет [и др.]. - М.: ООО «И.Д. Вильямс», 2007. – 1072с.

3. Зиглер, Роберт. Брагдмауэры в Linux / Зиглер, Роберт - М.: Издательский дом «Вильямс», 2001. – 384с.

4. Фленов М. Е. Linux глазами хакера / М.Е. Фленов. – М.: БХВ-Петербург, 2005. – 544 с.

5. Межсетевые экраны: сб. основных нормативно – техн. док. – М.: Гостехкоммисия России, 1997.-13с.

6. Простой способ настройки шлюза на Linux [Электронный ресурс] / Режим доступа: http/www.Voler.ru

7. Настройка IPTables в Linux [Электронный ресурс] / Режим доступа: http/www.OpenNET.ru

8. Firewall [Электронный ресурс] / Режим доступа: http/ru.wikipedia.org/wiki/Firewall

9. Firewall в Linux [Электронный ресурс] / Режим доступа: http/www.libermedia.ru/html/firewall_linux.html