Смекни!
smekni.com

Организация безопасности сети предприятия с использованием операционной системы Linux (стр. 6 из 13)

deny

Блокировать все пакеты для приема, передачи или транзитные (forward)

reject

Блокировать все пакеты для приема, передачи или транзитные (forward) и послать компьютеру, что послав пакет ICMP-сообщения об ошибке

Использование ipchains

Есть два способа использования ipchains

использовать скрипт ipfwadm-wrapper, что является заменой ipfwadm. Имеет такой же синтаксис, как и ipfwadm.

использовать ipchains и использовать новый синтаксис.

Синтаксис команды ipchains

Синтаксис команды ipchains простой. В общем виде он выглядит так:

ipchains command rule-specification options

Команды

С помощью команд можно управлять правилами и наборами правил для ipchains. Рассмотрим их обстоятельно:

-A chain

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

-I chain rulenum

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

-D chain

Удаляет одно или несколько правил из определенной цепочки, которая отвечает заданной спецификации правил.

-D chain rulenum

Удаляет правило, которое находится в позиции rulenum определенной цепочки. Первое правило в цепочке занимает первую позицию (не нулевую!).

-R chain rulenum

Замещает правило, которое находится в позиции rulenum определенной цепочки.

-C chain

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

-L [chain]

Перечисляет правила определенной цепочки или всех цепочек, если никакая конкретная цепочка не заданий.

-F [chain]

Удаляет правила определенной цепочки или всех цепочек, если никакая конкретная цепочка не заданий.

-Z [chain]

Обнуляет пакеты и счетчики для определенной цепочки или всех цепочек, если никакая конкретная цепочка не заданий.

-N chain

Создает новую цепочку с заданным именем. Таким способом создаются задают пользователем цепочки.

-X [chain]

Удаляет определенную користувальницький цепочку или все цепочки, если никакая конкретная цепочка не заданий. На удаляет цепочку, что, не повинное быть ссылок из других цепочек, иначе она не будет изъята.

-P chain policy

Задает стратегию за умалчиванием для отмеченной цепочки. Допустимые стратегии: ACCEPT, DENY, REJECT, REDIR или RETURN. ACCEPT, DENY и REJECT имеют те же значения, как для традиционной реализации IP firewall. REDIR определяет, что пакет виноват быть переназначенный к порту на машине из firewall. RETURN вынуждает IP firewall вернуться к цепочке, правило которой вызывало эту ситуацию, и предлагает продлить ее обработку из следующего правила.

Параметры определения правил

Параметры ipchains создают правила, определяя, какие типы пакетов отвечают критериям. Если каждой йз этих параметров опущений из спецификации правила, он предусматривается за умалчиванием.

-p [!]protocol

Указывает протокол, который отвечает правилу. Допустимо имена протоколов tcp, udp, icmp или all. Можно задать номер протокола для протоколов, которые здесь не определены. Например, 4 для протокола ipip. Если задан префикс!, правило превращается в негативное, и принимаются все пакеты, которые не отвечают этому протоколу. Значение за умалчиванием: all.

-s [!]address[/mask] [!] [port] Указывает исходная адреса и порт, из которого пришел пакет. Адреса может задавать имя машины, имя сети или IP-адреса. Опция mask задает сетевую маску. Она может быть задана в обычной форме (например, /255.255.255.0) или в новой (например, /24). Опция port задает порт TCP или UDP, или тип пакетов ICMP. Вы можете задать спецификацию порта только, если задали параметр -p с одним из протоколов tcp, udp или icmp. Порты могут быть определены как диапазон, определяя верхние и нижние границі йз двоеточием как разделитель. Например, 20:25 определяет порты с 20 по 25 включительно. Символ! превращает правило в полную его противоположность.

-d [!]address[/mask] [!] [port]

Задает адреса и порт назначения. Во всем другому аналогичный параметру -s.

-j target Указывает, что делать при срабатывании правила. Допустимые действия: ACCEPT, DENY, REJECT, REDIR и RETURN. Раньше я уже описав значение каждого действия. Вы можете также задать имя обусловленной пользователем цепочки, в которой продлится обработка. Если этот параметр опущений, будут только изменены данные пакетов и счетчиков, но ничего йз этим пакетом сделано не будет.

-и [!]interface-name

Задает интерфейс, из которого пришел пакет, или через какой пакет будет передан. Символ! переворачивает результат сравнения. Если имя интерфейса кончается на +, ему будут отвечать все интерфейсы, имена которых начинаются на заданий строка. Например, -ые ppp+ совпадает со всеми PPP-интерфейсами, а -ые! eth+ отвечает всем интерфейсам, кроме Ethernet.

[!] –f Указывает, что это правило применяется к первому фрагменту фрагментированного пакета.

Опции

Опции ipchains имеет больше широкое значение. они предоставляют доступ к тайным свойствам этой программы.

-b Генерирует сразу два правила. Первое точно отвечает заданным параметрам, вторую делает теми же именно, но прямо противоположными параметрами.

-v Предлагает ipchains выдавать подробную информацию.

-n Предлагает ipchains использовать IP-адреса и порты, не пытаясь превратить их в имена.-l

Включает протокол ядра о соответствии пакетов. Любой пакет, который отвечает правилу, будет запротоколирован ядром, используя его функцию printk(), что обрабатывается программой sysklogd. Это удобно для выявления необычных пакетов.

-о[maxsize] Вынуждает IP chains копировать все подходящим правилам пакеты в устройство “netlink”. Параметр maxsize ограничивает число байтов из кожного пакета, которые будут переданы на устройство netlink. Эта опция имеет большое значение для розроблювачів, но может эксплуатироваться пакетами користувальницьких программ в будущем.

-m markvalue

Все пакеты, которые удовлетворяют правилам, повинны быть обозначенные. Метка есть 32-бітним чмслом без знака. Пока эта опция ничего не делает, но в будущем она может определять, как пакет будет обработан другим программным обеспечением типа кода маршрутизации. Если метка начинается из + или -, ее значение буедт прибавлено или відняте из существующие.

-t andmask xormask

Позволяет управление битами TOS (“type of service”) в заглавии IP любого пакета, который удовлетворяет правилам. Биты типа сервиса используются интеллектуальными маршрутизаторами для расположения пакетов перед отправлением в соответствии с их приоритетом. andmask и xormask задают разрядные маски, которые будут использованы в логических операциях AND и OR с битами типа сервиса. Это продвинуто свойство, которое более обстоятельно описано в IPCHAINS-HOWTO.

-x Любые числа у вывода ipchains будут точными (округление не используется).

-в Задает правило, которое будет отвечать любому пакету TCP с установленным битому SYN и неустановленными битами ACK и FIN. Это используется, чтобы фильтровать TCP-запросы.

Пример: Опять допустим, что ми имеем сеть в нашей организации, и используем Linux firewall для предоставления доступу к нашим серверам WWW из Internet, но при этом хотим блокировать любой другой трафик.

ipchains:

# ipchains -F forward

# ipchains -P forward DENY

# ipchains -A forward -s 0/0 80 -d 172.16.1.0/24 -p tcp -у -j DENY

# ipchains -A forward -s 172.16.1.0/24 -d 0/0 80 -p tcp -b -j ACCEPT

Если ми теперь хотим прибавить правила, какие предоставят только пассивный режим доступа к FTP-серверу снаружи сети, ми прибавим правила:

# ipchains -A forward -s 0/0 20 -d 172.16.1.0/24 -p tcp -у -j DENY

# ipchains -A forward -s 172.16.1.0/24 -d 0/0 20 -p tcp -b -j ACCEPT

# ipchains -A forward -s 0/0 21 -d 172.16.1.0/24 -p tcp -у -j DENY

# ipchains -A forward -s 172.16.1.0/24 -d 0/0 21 -p tcp -b -j ACCEPT

Чтобы перечислить наши правила в команде ipchains, используется параметр -L argument. Точно как из ipfwadm, там могут быть заданы аргументы, которые позволять детализировать вывод. В самом простом случае ipchains выведет что-то вроде бы:

# ipchains -L -n

Chain input (policy ACCEPT):

Chain forward (policy DENY):

target prot opt source destination ports
DENY TCP -y---- 0.0. 0.0/0 172.16. 1.0/24 80 -> *
ACCEPT TCP ------ 0.0. 0.0/0 172.16. 1.0/24 80 -> *
ACCEPT TCP ------ 172.16. 1.0/24 0.0. 0.0/0 * -> 20
ACCEPT TCP ------ 0.0. 0.0/0 172.16. 1.0/24 20 -> *
ACCEPT TCP ------ 172.16. 1.0/24 0.0. 0.0/0 * -> 21
ACCEPT TCP ------ 0.0. 0.0/0 172.16. 1.0/24 21 -> *

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

Netfilter Обратная совместимость из ipfwadm и ipchains

Прекрасная гибкость Linux netfilter иллюстрируется способностью наследовать интерфейсов ipfwadm и ipchains. Эмуляция делает переход к новому поколению программного обеспечения firewall немного проще.

Два модуля ядра из netfilter с именами ipfwadm.o и ipchains.o обеспечивают обратную совместимость из ipfwadm и ipchains. Можно загрузить одновременно только один из этих модулей и использовать его только при условии, что модуль ip_tables.o не загруженный. Когда соответствующий модуль загружен, netfilter работает аналогично заданной реализации firewall.

Чтобы netfilter копировал интерфейс ipchains скомандуйте:

# rmmod ip_tables

# modprobe ipchains

# ipchains

Использование iptables

Утилита iptables используется для настройки правил netfilter. Синтаксис заимствован в ipchains, но имеет важное отличие: он расширился. Значат, что функциональные возможности могут быть расширены без перекомпиляции пакета. Для этого используются поділювані библиотеки. Есть стандартные расширения, ряд которых ми в настоящий момент выучим.

Перед использованием команды iptables Вы должны загрузить модуль ядра netfilter, что позволяет ей работать. Проще всего сделать это командой modprobe: # modprobe ip_tables