Категории
Самые читаемые

Linux - Алексей Стахнов

Читать онлайн Linux - Алексей Стахнов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 102 103 104 105 106 107 108 109 110 ... 151
Перейти на страницу:

Программе ipchains параметры передаются при вызове в командной строке. Формат командной строки приведен ниже:

ipchains -А|I [цепочка] [-i интерфейс] [-р протокол] [[!] -y]

[-s адрес [порт [: порт]]]

[-d адрес [порт [: порт]]] -j действие [1]

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

Программа ipchains позволяет задавать после IP-адреса дескриптор маски. Дескриптор маски — это целое число, которое может принимать значения от О до 32, и определяет число битов в маске. Дескриптор маски указывает, сколько старших битов адреса узла должны в точности совпадать с адресом, заданным в составе правила. Дескриптор маски, равный 32, означает, что адрес узла должен полностью совпадать с адресом, указанным в правиле. Если дескриптор маски отсутствует, считается, что он равен 32. Так, адрес 192.168.0.45 означает то же самое, что и выражение 192.168.0.45/32.

Опции ipchains

В табл. 29.1 приведены наиболее часто применяемые опции программы ipchains.

Таблица 29.1. Опции программы ipchains

Символьные константы

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

Таблица 29.2. Символьные константы, используемые при описании правил фильтрации

Создание правил фильтрации

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

Удаление существующих правил

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

Удаление правил фильтрации называется сбросом цепочки. Для сброса встроенных цепочек необязательно обращаться к ним явно. Все три цепочки – input, output и forward – можно сбросить с помощью одной команды, приведенной ниже:

ipchains -F Определение политики по умолчанию

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

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

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

ipchains -Р input DENY

ipchains -Р output REJECT

ipchains -P forward REJECT

После ввода в действие вышеприведенных правил весь сетевой трафик оказывается блокированным, в том числе и весь трафик, проходящий через интерфейс обратной петли. Разрешение прохождения пакетов через интерфейс обратной петли

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

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

ipchains -A input -i $LOOPBACK_INTERFACE -j ACCEPT ipchains -A output -i $LOOPBACK_INTERFACE -j ACCEPT

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

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

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

ipchains -A input -i $EXTERNAL_INTERFACE -s $LOOPBACK -j DENY ipchains -A output -i $EXTERNAL_INTERFACE -s $LOOPBACK -j DENY -l

Далее необходимо отсечь сетевые пакеты, исходящие адреса которых попадают в диапазон IP-адресов, выделенных для использования во внутренних сетях. Маршрутизаторы не должны обрабатывать пакеты с исходящими адресами, принадлежащими внутренним сетям.

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

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

# Запретить прохождение сетевых пакетов,

# которые содержат адрес источника,

# принадлежащий диапазону адресов класса А,

# предназначенных для внутреннего использования.

ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_A -j DENY

ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_A -j DENY

ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_A -j DENY -l

ipchains -A output -i $EXTERNAL INTERFACE -d $CLASS A -j DENY -l

# Запретить прохождение сетевых пакетов,

# которые содержат адрес источника,

# принадлежащий диапазону адресов класса В,

# предназначенных для внутреннего использования.

ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_B -j DENY

ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_B -j DENY

ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_B -j DENY -l

ipchains -A output -i $EXTERNAL_INTERFACE -d $CLASS_B -j DENY -l

# Запретить прохождение сетевых пакетов,

# которые содержат адрес источника,

# принадлежащий диапазону адресов класса С,

# предназначенных для внутреннего использования.

ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_C -j DENY

ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_C -j DENY

ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_C -j DENY -l

ipchains -A output -i $EXTERNAL INTERFACE -d $CLASS С -j DENY -l

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

ipchains -A input -i $EXTERNAL_INTERFACE -s $BROADCAST_DEST -j DENY -l ipchains -A input -i $EXTERNAL_INTERFACE -d $BROADCAST_SRC -j DENY -l

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

# Запретить пакеты, содержащие адреса класса 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
1 ... 102 103 104 105 106 107 108 109 110 ... 151
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Linux - Алексей Стахнов.
Комментарии