Рейтинговые книги
Читем онлайн Linux - Алексей Стахнов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 103 104 105 106 107 108 109 110 111 ... 151

# Запретить пакеты, содержащие адреса класса D.

ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_D_MULTICAST -j DENY -l

ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_D_MULTICAST -j REJECT -l

Групповое вещание производится с использованием протокола UDP. В сетевых пакетах, передаваемых посредством группового вещания, адрес назначения отличается от пакетов, которые передаются в процессе обычного обмена между двумя узлами. Следующее правило запрещает передачу сетевых пакетов группового вещания с локального узла:

ipchains -A output -i $EXTERNAL_INTERFACE -d $CLASS_D_MULTICAST -j REJECT -l Фильтрация ICMP-сообщений

Сообщения ICMP передаются при возникновении различных ситуаций, в том числе ошибочных. Они генерируются программами, анализирующими состояние сети, например ping или traceroute. В табл. 29.3 приведены ICMP-сообщения, которые могут представлять интерес для администратора сети.

Таблица 29.3. Часто встречающиеся типы ICMP-сообщений

Сообщения об ошибках и управляющие сообщения

При настройке брандмауэра необходимо обеспечить прохождение четырех типов сообщений:

• Source Quench – подавление источника;

• Parameter Problem – некорректный параметр;

• Destination Unreachable (подтип Fragmentation Needed) – узел назначения недоступен (для входящих сообщений);

• Destination Unreachable (подтип Fragmentation Needed) – узел назначения недоступен (для исходящих сообщений).

Еще четыре типа ICMP-сообщений также могут быть разрешены для прохождения через брандмауэр. Это Echo Request (эхо-запрос), Echo Reply (эхо-ответ), различные подтипы исходящих сообщений Destination Unreachable, а также сообщение Time Exceeded (превышение времени). Остальные сообщения желательно игнорировать, чтобы они были удалены в соответствии с политикой по умолчанию.

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

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

Управляющее сообщение Source Quench

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

Следующие правила разрешают прохождение входящих и исходящих ICMP-сообщений Source Quench:

ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 4 -d $IPADDR -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 4 -d $IPADDR -j ACCEPT

Если компьютер, которому предназначены пакеты, возвращает сообщение Source Quench, передающий узел должен снизить скорость обмена. Со временем он начинает повышать скорость передачи данных и делает это до тех пор, пока не получает следующее сообщение Source Quench.

Сообщение Parameter Problem

ICMP-сообщение типа Parameter Problem (некорректный параметр) возвращается в том случае, когда в заголовке сетевого пакета содержится недопустимая запись, либо если контрольная сумма заголовка сетевого пакета не соответствует контрольной сумме, указанной передающим хостом.

Следующие правила разрешают прохождение входящих и исходящих ICMP-сообщений Parameter Problem:

ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 12 -d $IPADDR -j ACCEPT pchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 12 -d $IPADDR -j ACCEPT

Сообщение об ошибке Destination Unreachable

ICMP-сообщение типа Destination Unreachable (узел назначения недоступен) представляет собой сообщение об ошибке. В заголовке пакета данного типа содержится код, обозначающий ошибку, которая имела место.

Следующие правила разрешают прохождение входящих и исходящих ICMP-сообщений Destination Unreachable:

ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 3 -d $IPADDR -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 3 -d $IPADDR -j ACCEPT

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

Тем не менее, подтип Fragmentation Needed сообщения Destination Unreachable необходим для нормальной работы сетевых средств. С его помощью взаимодействующие узлы договариваются об особенностях разбиения передаваемых сетевых пакетов на фрагменты.

Так же, если требуется, чтобы компьютеры вашей локальной сети отвечали на входящие запросы программы traceroute, необходимо разрешить передачу исходящих пакетов, содержащих подтип Port Unreachable сообщения Destination Unreachable.

Сообщение Time Exceeded

ICMP-сообщение типа Time Exceeded (превышение времени) передает сведения о том, что число узлов, через которые проходил сетевой пакет по пути его следования, превысило максимально допустимое значение. В настоящее время сообщение Time Exceeded обычно передается в ответ на U DP-запрос программы traceroute.

ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 11 -d $IPADDR -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR 11 -d $MY_ISP -j ACCEPT

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

Программа ping: сообщения Echo Request и Echo Reply

Программа ping использует два типа ICMP-сообщений: Echo Request (эхо-запрос) и Echo Reply (эхо-ответ). Программа ping применяется для проверки связи с конкретными узлами сети.

Следующие два правила дают возможность передавать пакеты ping по любому адресу:

ipchains -A output -i $EXTERNAL_INTERFACE -р icmp -s $IPADDR 11 -d $MY_ISP -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 11-d $IPADDR -j ACCEPT

Приведенные ниже правила позволяют принимать пакеты ping только с определенных узлов, а конкретно – из сети вашего провайдера:

ipchains -A input -i $EXTERNAL_INTERFACE -р icmp -s $MY_ISP 8 -d $IPADDR -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR 0 -d $MY_ISP -j ACCEPT

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

При организации атаки типа sniuif пакеты ping, содержащие сообщения Echo Request, передаются в широковещательном режиме. Исходный IP-адрес в составе пакета подменяется IP-адресом «жертвы» – IP-адресом того узла, против которого направлена атака. В результате все узлы сети, получившие сообщения Echo Request, передают ответы по адресу «жертвы», загружая линии связи ICMP-пакетами. В результате, если у вас наружный канал не очень широкий – вы лишаетесь доступа в Интернет.

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

# Противодействие smurf-атаке

ipchains -A input -i $EXTERNAL_INTERFACE -р icmp -d $BROADCAST_DEST -j DENY -l

ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -d $BROADCAST_DEST -j REJECT -l

# Маска сети

ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -d $NETMASK -j DENY -l

ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -d $NETMASK -j REJECT -l

# Адрес сети

ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -d $NETWORK -j DENY -l

ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -d $NETWORK -j REJECT -l

Разрешение функционирования служб

Выше мы определили правила, позволяющие отклонять сетевые пакеты с сомнительными адресами, а также разрешили локальному компьютеру работать через интерфейс обратной петли. В результате мы получили нормально функционирующий локальный компьютер с полностью отсутствующим доступом в Интернет. Наша дальнейшая задача – обеспечить нормальное функционирование локального компьютера (сети) в Интернете. Для того чтобы ваш компьютер мог принимать и отправлять почту, работать по FTP, HTTP и т. п., необходимо разрешить прохождение сетевых пакетов с определенными портами. На первый взгляд – задача объемная, впрочем, необходимо обеспечить прохождение пакетов всего от десятка служб, что не так уж и много.

Служба DNS

Служба DNS использует в работе порт 53 и протоколы UDP и TCP. Соединение может устанавливаться как между клиентом и сервером, так и между двумя серверами. Для разрешения взаимодействия между клиентом и сервером необходимо добавить следующее правило:

ipchains -A input -i $EXTERNAL_INTERFACE -р udp -s $IPADDR $UNPRIVPORTS -d $NAMESERVER 53 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $NAMESERVER 53 -j ACCEPT

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

1 ... 103 104 105 106 107 108 109 110 111 ... 151
На этой странице вы можете бесплатно читать книгу Linux - Алексей Стахнов бесплатно.

Оставить комментарий