@ Карта сайта News Автора!

Bog BOS: ipchains: фильтрация пакетов в Linux: принципы работы, установка и настройка

Последние изменения:
2024.03.28: sysadmin: Файловая система zfs под Linux для архива (обновление от 0.6 до 2.2)

Последнее изменение файла: 2007.02.08
Скопировано с www.bog.pp.ru: 2024.04.26

Bog BOS: ipchains: фильтрация пакетов в Linux: принципы работы, установка и настройка

ipchains предоставляет встроенные в ядро Linux 2.2 средства фильтрации пакетов и программы (ipchains, ipchains-save, ipchains-restore) управления ими. Может быть использован для организации сетевого экрана (брандмауэра, firewall) класса фильтрации пакетов или усиления защиты сервера.

Предварительные действия

Необходимо иметь ядро 2.1.102 или более новое, при генерации которого включены FIREWALL и IP_FIREWALL (появляются /proc/net/ip_fwchains и /proc/net/ip_fwnames). Настойчиво рекомендуется дефрагментировать все пакеты (/proc/sys/net/ipv4/ip_always_defrag или IP_ALWAYS_DEFRAG, в зависимости от версии ядра).

Понятие цепочки

Каждый проверяемый IP-пакет проходит по цепочке ("сквозь строй") правил, определяющих, что с ним делать. Правило состоит из шаблона и действия. Каждая цепочка имеет действие по умолчанию. Задействованы цепочки с именами:

Общая схема обработки пакетов (взята из NAG2):

Действия (действие в недопустимом месте эквивалентно DENY):

Управление цепочками

Управление цепочками производится с помощью программ ipchains, ipchains-save (сохранение текущей конфигурации на stdout), ipchains-restore (чтение сохраненной ранее конфигурации с stdin). После загрузки определены цепочки input (ACCEPT), output (ACCEPT), forward (ACCEPT). Основные опции ipchains:

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

Тщательно составленные и отлаженные цепочки сохранять по ipchains-save (ipchains.transparent_proxy_and_firewall) и восстанавливать при загрузке по ipchans-restore (/etc/rc.d).

Сервис в Red Hat

В RH 6.2 появился сервис ipchains (управляемый обычным chkconfig) в /etc/rc.d/init.d с функциями:

Пример использования для усиления защиты сервера

Пример с использованием /etc/sysconfig/ipchains (в RH6.2 допускаются комментарии):

:input ACCEPT
:forward ACCEPT
:output ACCEPT
# доступ к HTTP-серверу (если есть)
-A input -s 0.0.0.0/0.0.0.0 -d 127.0.0.1/255.255.255.255 80:80 -i lo -p 6 -j ACCEPT -l
-A input -s 0.0.0.0/0.0.0.0 -d 127.0.0.1/255.255.255.255 80:80 -p 6 -j DENY -l
-A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 80:80 -p 6 -j ACCEPT
# поддержка transparent proxy
-A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 80:80 -p 6 -j REDIRECT 3128
-A input -s сосед/255.255.255.255 -d наш-адрес/255.255.255.255 3130:3130 -p 17 -j ACCEPT
-A input -s клиенты-proxy -d наш-адрес/255.255.255.255 3128:3128 -p 6 -j ACCEPT
# NTP from LAN and dialup
-A input -s сервера-NTP 123:123 -d наш-адрес/255.255.255.255 123:123 -p 17 -j ACCEPT
# syslog from LAN
-A input -s откуда-беррем-syslog -d наш-адрес/255.255.255.255 514:514 -p 17 -j ACCEPT
# FTP from anywhere
-A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 21:21 -p 6 -j ACCEPT
-A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 20:20 -p 6 -j ACCEPT
# пропуск FTP passive mode (д.б. согласован с passive ports в ftpaccess)
-A input --syn -s 0.0.0.0/0.0.0.0 -d 195.161.72.12/255.255.255.255 начало:конец -p 6 -j ACCEPT
# DNS
# -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 53:53 -p 6 -j ACCEPT
# -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 53:53 -p 17 -j ACCEPT
# на адресах выше 32k только клиенты (кроме ftpd в пассивном режиме, ниже вообще ничего), заодно борьба с gnome
-A input --syn -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 32768:65535 -p 6 -j DENY
-A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 32768:65535 -p 17 -j ACCEPT
-A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 32768:65535 -p 6 -j ACCEPT
# ICMP
-A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 -p 1 -j ACCEPT
# все остальное - запретить (DENY or REJECT ?)
-A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 -j DENY -l
-A forward -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -l

Ссылки

@ Карта сайта News Автора!

Bog BOS: ipchains: фильтрация пакетов в Linux: принципы работы, установка и настройка

Последние изменения:
2024.03.28: sysadmin: Файловая система zfs под Linux для архива (обновление от 0.6 до 2.2)



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru