Перейти к основному содержимому

Параметры брандмауэра

Ниже приведены сведения по настройке конфигурации брандмауэра.

Настройка брандмауэра по умолчанию

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

Табл. 1. Настройка брандмауэра по умолчанию
Синтаксис
  • sudo uci set firewall.@defaults[0].input=<input>
  • sudo uci set firewall.@defaults[0].output=<output>
  • sudo uci set firewall.@defaults[0].forward=<forward>
  • sudo uci set firewall.@defaults[0].syn_flood=<syn_flood>
  • sudo uci set firewall.@defaults[0].drop_invalid=<drop_invalid>
Табл. 2. Параметры
ИмяТипОбязательныйПо умолчаниюОписание

input

строка

нет

REJECT

Задание политики для цепочки INPUT таблицы фильтров.

output

строка

нет

REJECT

Задание политики для цепочки OUTPUT таблицы фильтров.

forward

строка

нет

REJECT

Задание политики для цепочки FORWARD таблицы фильтров.

syn_flood

логический

нет

0

Включение защиты от переполнения SYN (заменен более новым параметром synflood_protect).

drop_invalid

логический

нет

0

Отбрасывание недопустимых пакетов (например, не соответствующих ни одному активному подключению).

Пример команд:

Табл. 3. Пример команд
  • sudo uci set firewall.@defaults[0].input=ACCEPT
  • sudo uci set firewall.@defaults[0].output= ACCEPT
  • sudo uci set firewall.@defaults[0].forward= ACCEPT
  • sudo uci set firewall.@defaults[0].syn_flood=1
  • sudo uci set firewall.@defaults[0].drop_invalid=1
  • sudo uci commit firewall
  • sudo /etc/init.d/firewall restart

Добавление новой зоны

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

Табл. 4. Добавление новой зоны
Синтаксис
  • sudo uci add firewall zone
  • sudo uci set firewall.@zone[-1].name=<name>
  • sudo uci set firewall.@zone[-1].input=<input>
  • sudo uci set firewall.@zone[-1].output=<output>
  • sudo uci set firewall.@zone[-1].forward=<forward>
  • sudo uci set firewall.@zone[-1].masq=<masq>
  • sudo uci set firewall.@zone[-1].mtu_fix=<mtu_fix>
  • sudo uci set firewall.@zone[-1].network=<network>
  • sudo uci set firewall.@zone[-1].family=<family>
  • sudo uci set firewall.@zone[-1].masq_src=<masq_src>
  • sudo uci set firewall.@zone[-1].masq_dest=<masq_dest>
  • sudo uci set firewall.@zone[-1].conntrack=<conntrack>
  • sudo uci set firewall.@zone[-1].log=<log>
  • sudo uci set firewall.@zone[-1].log_limit=<log_limit>
  • udo uci commit firewall
Табл. 5. Параметры

Параметр

Тип

Обязательный

По умолчанию

Описание

name

zone name

да

нет

Уникальное имя зоны. 11 символов — максимальная рабочая длина имени зоны брандмауэра.

input

строка

нет

REJECT

Задание политики для цепочки INPUT таблицы фильтров.

output

строка

нет

REJECT

Задание политики для цепочки OUTPUT таблицы фильтров.

forward

строка

нет

REJECT

Задание политики для цепочки FORWARD таблицы фильтров.

masq

логический

нет

0

Указывает, должен ли маскироваться трафик, исходящий из зоны. Обычно этот параметр включен в зоне глобальной сети.

mtu_fix

логический

нет

0

Включение ограничения MSS для трафика, исходящего из зоны.

сеть

список

нет

нет

Список интерфейсов, прикрепленных к данной зоне. Если параметр опущен и не указаны дополнительные* параметры, подсети и устройства, по умолчанию используется значение name. Интерфейсы-псевдонимы, определенные в конфигурации сети, не могут использоваться как допустимые «отдельные» сети. Используйте синтаксис list, как описано в UCI.

family

строка

нет

0

Семейство протоколов (IPv4, IPv6 или любых), для которых необходимо сформировать правила iptables.

masq_src

список подсетей

нет

0.0.0.0/0

Выполнение маскировки только для указанных исходных подсетей. Возможна отмена действия этого параметра с помощью префикса ! в имени подсети; допускается нескольких подсетей.

masq_dest

список подсетей

нет

0.0.0.0/0

Выполнение маскировки только для указанных целевых подсетей. Возможна отмена действия этого параметра с помощью префикса ! в имени подсети; допускается нескольких подсетей.

conntrack

логический

нет

1, если используется маскировка, в противном случае — 0

Принудительная трассировка подключения для этой зоны (см. примечание о трассировке подключения).

журнал

логический

нет

0

Создание правил журнала для отклоненного и выделенного трафика в этой зоне.

log_limit

строка

нет

10 в минуту

Ограничение количества сообщений в журнале за интервал.

Пример команд:

Табл. 6. Пример команд
  • sudo uci add firewall zone
  • sudo uci set firewall.@zone[-1].name=test
  • sudo uci set firewall.@zone[-1].input=ACCEPT
  • sudo uci set firewall.@zone[-1].output= ACCEPT
  • sudo uci set firewall.@zone[-1].forward= ACCEPT
  • sudo uci set firewall.@zone[-1].masq=<masq>
  • sudo uci set firewall.@zone[-1].mtu_fix=<mtu_fix>
  • sudo uci set firewall.@zone[-1].network=<network>
  • sudo uci set firewall.@zone[-1].family=<family>
  • sudo uci set firewall.@zone[-1].masq_src=<masq_src>
  • sudo uci set firewall.@zone[-1].masq_dest=<masq_dest>
  • sudo uci set firewall.@zone[-1].conntrack=<conntrack>
  • sudo uci set firewall.@zone[-1].log=<log>
  • sudo uci set firewall.@zone[-1].log_limit=<log_limit>
  • sudo uci commit firewall
  • sudo /etc/init.d/firewall restart

Добавление нового перенаправления

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

Табл. 7. Добавление нового перенаправления
Синтаксис
  • sudo uci set firewall.@zone[-1].src=<src>
  • sudo uci set firewall.@zone[-1].dest=<dest>
  • sudo uci commit firewall
Табл. 8. Параметры
ПараметрТипОбязательныйПо умолчаниюОписание

src

zone name

да

нет

Задает исходную зону трафика. Это должно быть одно из определенных имен зон.

dest

zone name

да

нет

Задает целевую зону трафика. Это должно быть одно из определенных имен зон.

Пример команд:

Табл. 9. Пример команд
  • sudo uci set firewall.@zone[-1].src=test
  • sudo uci set firewall.@zone[-1].dest=lan
  • sudo uci commit firewall
  • sudo /etc/init.d/firewall restart

Добавление нового перенаправления портов

Перенаправления портов (DNAT) определяются разделами перенаправления. Весь входящий трафик в указанной исходной зоне, соответствующий заданным правилам, будет перенаправлен на указанный внутренний хост. Перенаправления также называются «перенаправлениями портов» и «виртуальными серверами». Диапазоны портов указываются в формате начало:конец, например 6666:6670. Это сходно с синтаксисом iptables.

Табл. 10. Добавление нового перенаправления портов
Синтаксис
  • sudo uci add firewall redirect
  • sudo uci set firewall.@redirect[-1].enabled=<enabled>
  • sudo uci set firewall.@redirect[-1].name=<name>
  • sudo uci set firewall.@redirect[-1].proto=<proto>
  • sudo uci set firewall.@redirect[-1].src=<src>
  • sudo uci set firewall.@redirect[-1].src_mac=<src_mac>
  • sudo uci set firewall.@redirect[-1].src_ip=<src_ip>
  • sudo uci set firewall.@redirect[-1].src_port=<src_port>
  • sudo uci set firewall.@redirect[-1].src_dip=<src_dip>
  • sudo uci set firewall.@redirect[-1].src_dport=<src_dport>
  • sudo uci set firewall.@redirect[-1].dest=<dest>
  • sudo uci set firewall.@redirect[-1].dest_ip=<dest_ip>
  • sudo uci set firewall.@redirect[-1].dest_port=<dest_port>
  • sudo uci set firewall.@redirect[-1].reflection=<reflection>
  • sudo uci commit firewall
Табл. 11. Параметры
ПараметрТипОбязательныйПо умолчаниюОписание

enabled

строка

нет

1 или да

Включено ли правило перенаправления.

name

строка

нет

нет

Уникальное имя перенаправления.

proto

имя или номер протокола

да

tcp udp

Сопоставление входящего трафика с использованием указанного протокола.

src

zone name

нет

да для целевого объекта DNAT

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

src_mac

MAC-адрес

нет

нет

Сопоставление входящего трафика с указанного MAC-адреса.

src_ip

IP-адрес

нет

нет

Сопоставление входящего трафика с указанного исходного IP-адреса.

src_port

порт или диапазон

нет

нет

Сопоставление входящего трафика с указанного исходного порта или диапазона портов (например, «5000–5100») на клиентском хосте.

src_dip

IP-адрес

да для целевого объекта SNAT

нет

Для DNAT: сопоставление входящего трафика, направленного на указанный IP-адрес назначения. Для SNAT: перезапись исходного адреса указанным.

src_dport

порт или диапазон

нет

нет

Для DNAT: сопоставление входящего трафика, направленного на указанный порт или диапазон портов назначения (например, «5000–5100») на данном хосте. Для SNAT: замена исходных портов на указанное значение.

dest

zone name

да для целевого объекта SNAT

нет

Задает целевую зону трафика. Это должно быть одно из определенных имен зон. Для целевого объекта DNAT с версией Attitude Adjustment отражение NAT работает, только если это значение равняется LAN.

dest_ip

IP-адрес

да для целевого объекта DNAT

нет

Для DNAT: перенаправление сопоставленного входящего трафика на указанный внутренний хост. Для SNAT: сопоставление трафика, направленного на указанный адрес. Если для DNAT значение dest_ip соответствует локальным IP-адресам маршрутизатора, как показано в ifconfig, правило переводится в правило DNAT + input «accept». В противном случае это правило DNAT + forward.

dest_port

порт или диапазон

нет

нет

Для DNAT: перенаправление сопоставленного входящего трафика на данный порт внутреннего хоста. Для SNAT: сопоставление трафика, направленного на указанные порты. Можно указать только один порт или диапазон (например, «5000–5100»), а не отдельные порты, как с правилами (ниже).

reflection

логический

нет

1

Включение отражения NAT для данного перенаправления — применимо к целевым объектам DNAT.

Пример команд:

Табл. 12. Перенаправляет HTTP-трафик (но не HTTPS) на веб-сервер с адресом 192.168.1.10:
  • sudo uci add firewall redirect
  • sudo uci set firewall.@redirect[-1].enabled=1
  • sudo uci set firewall.@redirect[-1].proto=tcp
  • sudo uci set firewall.@redirect[-1].src=wan
  • sudo uci set firewall.@redirect[-1].src_dport=80
  • sudo uci set firewall.@redirect[-1].dest=lan
  • sudo uci set firewall.@redirect[-1].dest_ip=192.168.1.10
  • sudo uci commit firewall
  • sudo /etc/init.d/firewall restart

Добавление нового правила трафика

Перенаправления портов (DNAT) определяются разделами перенаправления. Весь входящий трафик в указанной исходной зоне, соответствующий заданным правилам, будет перенаправлен на указанный внутренний хост. Перенаправления также называются перенаправлениями портов и виртуальными серверами. Диапазоны портов указываются в формате начало:конец, например 6666:6670. Это сходно с синтаксисом iptables.

Табл. 13. Добавление нового правила трафика
Синтаксис
  • sudo uci add firewall rule
  • sudo uci set firewall.@rule[-1].enabled=<enabled>
  • sudo uci set firewall.@rule[-1].name=<name>
  • sudo uci set firewall.@rule[-1].family=<family>
  • sudo uci set firewall.@rule[-1].proto=<proto>
  • sudo uci set firewall.@rule[-1].src=<src>
  • sudo uci set firewall.@rule[-1].src_mac=<src_mac>
  • sudo uci set firewall.@rule[-1].src_ip=<src_ip>
  • sudo uci set firewall.@rule[-1].src_port=<src_port>
  • sudo uci set firewall.@rule[-1].dest=<dest>
  • sudo uci set firewall.@rule[-1].dest_ip=<dest_ip>
  • sudo uci set firewall.@rule[-1].dest_port=<dest_port>
  • sudo uci set firewall.@rule[-1].target=<target>
  • sudo uci set firewall.@rule[-1].weekdays=<weekdays>
  • sudo uci set firewall.@rule[-1].monthdays=<monthdays>
  • sudo uci set firewall.@rule[-1].start_time=<start_time>
  • sudo uci set firewall.@rule[-1].stop_time=<stop_time>
  • sudo uci set firewall.@rule[-1].start_date=<start_date>
  • sudo uci set firewall.@rule[-1].stop_date=<stop_date>
  • sudo uci set firewall.@rule[-1].utc_time=<utc_time>
  • uci commit firewall
Табл. 14. Параметры
ПараметрТипОбязательноПо умолчаниюОписание

enabled

логический

нет

да

Включение и выключение правила.

name

строка

нет

нет

Уникальное имя правила.

family

строка

нет

любое

Семейство протоколов (IPv4, IPv6 или любых), для которых необходимо сформировать правила iptables.

proto

имя или номер протокола

нет

tcp udp

Сопоставление входящего трафика с использованием указанного протокола. Может быть одним из следующих значений: tcp, udp, tcpudp, udplite, icmp, esp, ah, sctp, all или числовое значение, представляющее один из этих протоколов или другой протокол. Также разрешено имя протокола из /etc/protocols. Число 0 эквивалентно значению all.

src

zone name

да (необязательно с брандмауэра v2, версия 58 и выше)

нет

Задает исходную зону трафика. Это должно быть одно из определенных имен зон.

src_mac

MAC-адрес

нет

нет

Сопоставление входящего трафика с указанного MAC-адреса.

src_ip

IP-адрес

нет

нет

Сопоставление входящего трафика с указанного исходного IP-адреса.

src_port

порт или диапазон

нет

нет

Сопоставление входящего трафика с указанного исходного порта или диапазона портов (например, «5000:5100», диапазон портов не применяется ко всем протоколам), если указано соответствующее значение proto. Можно указать несколько портов, например «80 443 465» 1.

dest

zone name

нет

нет

Задает целевую зону трафика. Это должно быть одно из определенных имен зон или * для любой зоны. Если указано, правило применяется к перенаправленному трафику; в противном случае оно рассматривается как входное правило.

dest_ip

IP-адрес

нет

нет

Сопоставление входящего трафика, направленного на указанный IP-адрес назначения. Если зона назначения не указана, это правило считается входным правилом!

dest_port

порт или диапазон

нет

нет

Сопоставление входящего трафика, направленного на указанный порт или диапазон портов назначения (например, «5000:5100», диапазон портов не применяется ко всем протоколам), если указано соответствующее значение proto. Можно указать несколько портов, например «80 443 465» 1.

target

строка

да

DROP

Включение отражения NAT для данного перенаправления — применимо к целевым объектам DNAT.

weekdays

список дней недели

нет

(всегда)

Если задано, трафик сопоставляется только в течение указанных дней недели. Например, «sun mon thu fri» соответствует сопоставлению трафика только по воскресеньям, понедельникам, четвергам и пятницам. Список можно инвертировать, дополнив префиксом — восклицательным знаком. Например, «! sat sun» означает сопоставление всегда, кроме суббот и воскресений.

monthdays

список дат

нет

(всегда)

Если задано, трафик сопоставляется только в течение указанных дней месяца. Например, «2 5 30» соответствует сопоставлению трафика только во 2, 5 и 30 дни месяца. Список можно инвертировать, дополнив префиксом — восклицательным знаком. Например «! 31» означает сопоставление всегда, кроме 31го дня месяца.

start_time

время (чч:мм:сс)

нет

(всегда)

Если задано, трафик сопоставляется только после заданного времени суток (включительно).

stop_time

время (чч:мм:сс)

нет

(всегда)

Если задано, трафик сопоставляется только до заданного времени суток (включительно).

start_date

дата (гггг-мм-дд)

нет

(всегда)

Если задано, трафик сопоставляется только после заданной даты (включительно).

stop_date

дата (гггг-мм-дд)

нет

(всегда)

Если задано, трафик сопоставляется только до заданной даты (включительно).

utc_time

логический

нет

0

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

Пример команд:

Табл. 15. Блокировка всех попыток подключения к указанному адресу хоста.
  • sudo uci add firewall rule
  • sudo uci set firewall.@rule[-1].enabled=1
  • sudo uci set firewall.@rule[-1].src=lan
  • sudo uci set firewall.@rule[-1].dest=wan
  • sudo uci set firewall.@rule[-1].dest_ip=123.45.67.89
  • sudo uci set firewall.@rule[-1].target=REJECT
  • sudo uci commit firewall
  • sudo /etc/init.d/firewall restart

Добавление новой трансляции исходящих пакетов NAT

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

Пример команд:
Табл. 16. Определение трансляции исходящих пакетов NAT для трафика UDP и TCP

Определение трансляции исходящих пакетов NAT для трафика UDP и TCP, направленного на порт 123, исходящего с хоста с IP-адресом 10.55.34.85.

Исходный адрес переписывается на 63.240.161.99:

  • sudo uci add firewall redirect
  • sudo uci set firewall.@redirect[-1].enabled=1
  • sudo uci set firewall.@redirect[-1].src=lan
  • sudo uci set firewall.@redirect[-1].src_ip=10.55.34.85
  • sudo uci set firewall.@redirect[-1].src_dip=63.240.161.99
  • sudo uci set firewall.@redirect[-1].dest=wan
  • sudo uci set firewall.@redirect[-1].dest_port=123
  • sudo uci set firewall.@redirect[-1].target=SNAT
  • sudo uci commit firewall
  • sudo /etc/init.d/firewall restart