Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Адрес, Маршрутизатор.docx
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
60.53 Кб
Скачать

Сетевая фильтрация и трансляция адресов

Сетевая фильтрация (брандмауэр, файрвол) предназначена для фильтрации и обработки пакетов, проходящих через сетевые интерфейсы. В GNU/Linux файрвол является модулем ядра. Интерфейсом для модификации правил сетевой фильтрации служит команда iptables. Файрвол анализирует заголовки пакетов и принимает решение, “выбросить” пакет (DROP), принять пакет (ACCEPT) или сделать с ним что-то еще.

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

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

Входящий пакет начинает обрабатываться с цепочки PREROUTING в таблице mangle. Затем он обрабатывается правилами цепочки PREROUTING таблицы nat. На этом этапе проверяется, не требуется ли изменение (трансляция) адреса назначения пакета (DNAT).

После этого пакет передается в цепочку INPUT (если целью пакета является этот компьютер) или FORWARD (если целью пакета является другой компьютер сети).

Если целью пакета является другой компьютер, то пакет фильтруется правилами цепочки FORWARD из таблиц mangle и filter, а затем к нему применяются правила цепочки POSTROUTING. На данном этапе можно использовать SNAT/MASQUARADE (подмена адреса источника/маскировка). После этих действий пакет будет отправлен в сеть.

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

Когда приложение отвечает на запрос или отправляет собственный пакет, то он обрабатывается цепочкой OUTPUT из таблицы filter. Затем к нему применяются правила цепочки OUTPUT из таблицы nat, для определения, требуется ли использовать DNAT (модификация назначения), пакет фильтруется цепочкой OUTPUT из таблицы filter и передается цепочке POSTROUTING которая может использовать SNAT и QoS. В случае успешного прохождения POSTROUTING пакет выходит в сеть.

Соединение TCP/IP устанавливается в 3 этапа. Если компьютер А пытается установить соединение с компьютером Б, то они обмениваются специальными TCP пакетами (состояние соединения NEW):

  • компьютер A посылает SYN пакет

  • компьютер Б отвечает ACK пакетом и SYN пакетом

  • компьютер A отвечает ACK пакетом

После успешного обмена перечисленными пакетами соединение считается установленным (состояние ESTABLISHED).

C помощью опции --state можно задавать правила для соединений находящихся в заданном состоянии:

NEW

вновь устанавливаемое

ESTABLISH

установленное;

RELATED

создаваемое с уже установленным соединением;

INVALID

не установленной принадлежности.

Опции для ввода правил сетевой фильтрации и трансляции:

Опция

Описание

Пример

--protocol

Короткий вариант -p. Определяет протокол. Опции tcp, udp, icmp, или любой другой протокол определенный в /etc/protocols

iptables -A INPUT –protocol tcp

--source

Короткий вариант -s. IP-адрес источника пакета. Может быть определен как IP адрес (10.10.10.3) или подсеть (10.10.10.3/24 или 10.10.10.3/255.255.255.0)

iptables -A INPUT –source 10.10.10.3

--destination

Короткий вариант -d. IP-адрес назначения пакета. Может быть определен несколькими путями (см. –source)

iptables -A INPUT –destination 192.168.1.0/24

--source-port

Порт источник, возможен только для протоколов --protocol tcp или --protocol udp

iptables -A INPUT –protocol tcp –source-port 25

--destination-port

Порт назначения, возможен только для протоколов --protocol tcp или --protocol udp

iptables -A INPUT –protocol udp –destination-port 67

--state

Состояние соединения. Доступно, если модуль state загружен с помощью -m state. Доступные опции:

NEW - все пакеты устанавливающие новое соединение

ESTABLISHED - все пакеты принадлежащие установленному соединению

RELATED - пакеты, не принадлежащие установленному соединению, но связанные с ним. Например - FTP в активном режиме использует разные соединения для передачи данных. Эти соединения связанны.

INVALID - пакеты, которые не могут быть по тем или иным причинам идентифицированны. Например ICMP ошибки не принадлежащие существующим соединениям

iptables -A INPUT -m state –state NEW,ESTABLISHED

--in-interface

Короткий вариант -i. Определяет интерфейс, на который прибыл пакет. Полезно для NAT и машин с несколькими сетевыми интерфейсами

iptables -t nat -A PREROUTING –in-interface eth0

--out-interface

Короткий вариант -o. Определяет интерфейс, с которого уйдет пакет. Полезно для NAT и машин с несколькими сетевыми интерфейсами

iptables -t nat -A POSTROUTING –in-interface eth1

--tcp-flags

Определяет TCP флаги пакета. Содержит 2 параметра: Список флагов которые следует проверить и список флагов которые должны быть установлены

 

--syn

Сокращение для –tcp-flags SYN,RST,ACK SYN’ Поскольку проверяет TCP флаги, используется с –protocol tcp. В примере показан фильтр для пакетов с флагом NEW, но без флага SYN. Обычно такие пакеты должны быть выброшены (DROP).

iptables -A INPUT –protocol tcp ! –syn -m state –state NEW

Чтобы определить действие (цель), которое выполняется для пакета удовлетворяющего условию, используется ключ –jump (или просто -j). К пакету можно применить одно из следующих действий:

ACCEPT

пропустить, пакет покидает данную цепочку

DROP

отклонить, не сообщив об этом передавшему

REJECT

отклонить, сообщив об этом передавшему.

LOG

занести в протокол информацию о пакете. Полезно в комбинации с DROP и REJECT для отладки

RETURN

возвратить пакет в ту цепочку, из которой он прибыл

SNAT

подменить адрес источника на заданный (source NAT). Может использоваться только в цепочках POSTROUTING и OUTPUT.

DNAT

подменить адрес получателя на заданный (destination NAT). Может использоваться только в цепочке POSTROUTING.

MASQUERADE

подменить адрес источника на адрес интерфейса через который проходит пакет. Может применяться только в цепочке POSTROUTING. В отличии от SNAT адаптирован к соединению с динамическим IP.

Первоначальная настройка сетевой трансляции

Подсистема трансляции сетевых адресов подменяет IP-адреса компьютеров локальной сети на IP-адрес внешнего сетевого интерфейса (SNAT) или наоборот (DNAT). Ниже приведен пример замены адресов для IP пакетов приходящих на внутренний интерфейс eth0 на адреса внешнего интерфейса eth1:

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Это правило обеспечивает работу в интернет всех компьютеров локальной сети “от имени” IP-адреса сетевого интерфейса eth1.

Первоначальная настройка сетевой фильтрации

Настройка фильтрации начинается с установки политик запрещающих все соединения кроме разрешенных:

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT DROP

Далее, обычно идут следующие правила:

  • разрешаются входящие соединения на маршрутизатор с внутренней сети

iptables -A INPUT -i eth1 --source 192.168.1.0/24 --match state --state NEW,ESTABLISHED -j ACCEPT

  • разрешается соединение с компьютерами во внутренней сети

iptables -A OUTPUT -o eth1 --destination 192.168.1.0/24 --match state --state NEW,ESTABLISHED -j ACCEPT

  • разрешается перенаправление пакетов из внутренней сети во внешнюю для установленных и новых соединений:

iptables -A FORWARD -i eth1 --source 192.168.1.0/24 --destination 0.0.0.0/0 --match state --state NEW,ESTABLISHED -j ACCEPT

  • разрешается перенаправление пакетов из внешней сети во внутреннюю только для установленных соединений

iptables -A FORWARD -i eth0 --destination 192.168.1.0/24 --match state --state ESTABLISHED -j ACCEPT

Проверка настроек сетевой защиты

Для просмотра всех правил во всех цепочках используется команда:

iptables -L

Для вывода правил отдельной цепочки используется команда:

iptables -L INPUT

Для вывода параметров в числовом формате используется опция –n:

iptables –n -L

DNS, DHCP, BOOTP/PXE, TFTP

Кратко о назначении сервисов:

  • DNS является основной компонентой системы распознавания имен и предназначен для распознавания имен и IP-адресов компьютеров.

  • DHCP обеспечивает автоматическую настройку клиентской части компьютеров локальной сети.

  • BOOTP/PXE обеспечивает загрузку или установку операционных систем по локальной сети.

  • TFTP предназначен для пересылки файлов (обычно ядра ОС) при загрузке или установке операционной системы по локальной сети.

Перечисленные сервисы могут быть установлены из следующих пакетов программ:

Сервис

Пакеты программ

dnsmasq

bind

dhcp

tftp-server

DNS

+

+

-

-

DHCP

+

-

+

-

BOOTP/PXE

+

-

+

-

TFTP

+

-

-

+

Из таблицы следует, что функционирование всех базовых сервисов можно обеспечить установкой одного пакета программ - dnsmasq.

Установка и первичная настройка

Проверить установлен или нет сервис можно командой:

rpm -q dnsmasq

Установить и запустить сервис можно с помощью следующих команд:

yum install dnsmasq

chkconfig dnsmasq on

/etc/init.d/dnsmasq start

Настройки можно изменять двумя путями, либо передать их через командную строку, либо установить их в файле dnsmasq.conf. Наименование настроек (в не сокращенном варианте) передаваемых через командную строку и указываемых в файле dnsmasq.conf совпадают. Как правило выбирают второй вариант, поскольку он наиболее наглядный и позволяет добавлять комментарии к каждой настройке с помощью символа #.

Файлы настроек

Основной файл настроек:

/etc/dnsmasq.conf

Часть настроек можно вынести в отдельные файлы с помощью следующих опции.

Опция:

conf-file=<файла настроек>

добавляет содержимое файла <файла настроек> к содержимому основного файла настроек. Опций conf-file может быть несколько. Если указать вместо имени файла -, то для ввода настроек будет использоваться стандартный поток ввода stdin.

Опция:

conf-dir=<каталог>,<расширение файла>

добавляет содержимое всех всех файлов, находящихся в каталоге <каталог>, кроме файлов с расширением <расширение файла>. Файлы заканчивающиеся символом ~, либо начинающиеся с ., либо начинающиеся и заканчивающиеся символом # пропускаются всегда.

После установки основной файл настроек содержит только одну незакомментированную опцию:

conf-dir=/etc/dnsmasq.d