Смекни!
smekni.com

Firewall (стр. 3 из 6)

Допустим, что в сети находятся два 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) в Интернет.