GoGPT Best VPN GoSearch

Значок OnWorks

ferm - Интернет в облаке

Запустите ferm в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS

Это командный ферм, который можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


ferm - парсер правил межсетевого экрана для linux

СИНТАКСИС


ферма кредита входной_файл

ОПИСАНИЕ


ферма это интерфейс для Iptables. Считывает правила из структурированного файла конфигурации.
и звонки Iptables(8) вставить их в работающее ядро.

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

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

ферма, произносится как «фирма», означает «Для легкого создания правил».

ВНИМАНИЕ!


Эта страница руководства делает Я хочу научить вас, как работает брандмауэр и как правильно писать
правила. Документации по этой теме уже достаточно.

ВВЕДЕНИЕ


Начнем с простого примера:

цепочка INPUT {
протокол TCP ПРИНЯТЬ;
}

Это добавит правило к предопределенной входной цепочке, сопоставляя и принимая все tcp
пакеты. Хорошо, давайте усложним:

цепочка (ВХОД ВЫХОД) {
proto (udp tcp) ПРИНЯТЬ;
}

Это вставит 4 правила, а именно 2 в цепочку входных данных и 2 в цепочку выходных данных, сопоставление и
прием пакетов UDP и TCP. Обычно вы набираете это:

iptables -A ВВОД -p tcp -j ПРИНЯТЬ
iptables -A ВЫХОД -p tcp -j ПРИНЯТЬ
iptables -A ВВОД -p udp -j ПРИНЯТЬ
iptables -A ВЫВОД -p udp -j ПРИНЯТЬ

Обратите внимание, насколько меньше нужно печатать? :-)

По сути, это все, что нужно сделать, хотя вы можете сделать его более сложным.
На что посмотреть:

цепочка INPUT {
политика ПРИНЯТЬ;
daddr 10.0.0.0/8 proto tcp dport! ftp jump mychain sport: 1023 TOS 4 settos 8 mark 2;
даддр 10.0.0.0/8 proto tcp dport ftp ОТКЛОНЕНИЕ;
}

Я хочу сказать, что * вам * нужно создать хорошие правила, сделать их доступными для чтения и
другие, и не запутать.

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

Попробуйте использовать комментарии, чтобы показать, что вы делаете:

# эта строка включает прозрачное http-проксирование для внутренней сети:
proto tcp, если eth0 daddr! 192.168.0.0/255.255.255.0
dport http ПЕРЕНАПРАВЛЕНИЕ на порты 3128;

Вы будете за это благодарны позже!

цепочка INPUT {
политика ПРИНЯТЬ;
интерфейс (eth0 ppp0) {
# запретить доступ известным хакерам, вернуться сюда, если совпадений нет
Было обнаружено, что # возобновляет нормальную работу брандмауэра
прыгают злодеи;

протокол tcp jump fw_tcp;
протокол udp jump fw_udp;
}
}

Чем больше вы гнездитесь, тем лучше это выглядит. Убедитесь, что вы указали правильный порядок, вы
не хотел бы этого делать:

цепочка ВПЕРЕД {
прото! udp DROP;
протокол tcp dport ftp ПРИНЯТЬ;
}

потому что второе правило никогда не будет совпадать. Лучший способ - сначала указать все, что
разрешено, а потом все остальное запретить. Посмотрите примеры, чтобы получить больше хороших снимков.
Большинство людей делают что-то вроде этого:

протокол TCP {
порт (
SSH HTTP FTP
) ПРИНИМАТЬ;
dport 1024: 65535! syn ПРИНЯТЬ;
УРОНИТЬ;
}

СТРУКТУРА OF A FIREWALL ФАЙЛОВ


Структура правильного файла межсетевого экрана выглядит как упрощенный C-код. Только несколько
синтаксические символы используются в файлах конфигурации ferm. Помимо этих специальных
caracters, ferm использует «ключи» и «значения», думайте о них как о вариантах и ​​параметрах или как о
переменные и значения, что угодно.

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

Вы можете указать условия, которые действительны для используемой вами программы интерфейса ядра,
вероятно Iptables(8). Например, в iptables, когда вы пытаетесь сопоставить пакеты tcp,
вы бы сказали:

iptables - протокол TCP

В ferm это будет:

протокол tcp;

Просто набрав это в ferm, вы ничего не сделаете, вам нужно сказать Ferm (на самом деле вам нужно
сказать Iptables(8) и ядро) что делать с любым трафиком, который соответствует этому условию:

iptables --protocol tcp -j ПРИНЯТЬ

Или переведено на ферма:

протокол tcp ACCEPT;

The ; символ стоит в конце каждого правила Ферма. Ferm игнорирует разрывы строк, что означает
приведенный выше пример идентичен следующему:

протокол tcp
ПРИНИМАТЬ;

Вот список специальных символов:

; Этот персонаж завершает правило.

Через точку с запятой вы можете написать несколько правил в одной строке, хотя это
снижает читабельность:

протокол tcp ACCEPT; протокол UDP DROP;

{} Символ вложенности определяет «блок» правил.

Фигурные скобки содержат любое количество вложенных правил. Все матчи до
блок переносятся на них.

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

Пример:

цепочка INPUT proto icmp {
эхо-запрос типа icmp ПРИНЯТЬ;
УРОНИТЬ;
}

Этот блок показывает два правила внутри блока, которые будут объединены с чем угодно.
перед ним, так что вы получите два правила:

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -j DROP

Уровней вложенности может быть несколько:

цепочка INPUT {
прото icmp {
эхо-запрос типа icmp ПРИНЯТЬ;
УРОНИТЬ;
}
папдр 172.16.0.0/12 ОТКЛОНИТЬ;
}

Обратите внимание, что на правило REJECT не влияет протокол proto icmp, хотя нет
';' после закрывающей фигурной скобки. В переводе на iptables:

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -j DROP
iptables -A ВВОД -d 172.16.0.0/12 -j ОТКЛОНИТЬ

$ Расширение переменной. Заменяет "$ FOO" значением переменной. См. Раздел
ПЕРЕМЕННЫЕ для получения информации.

& Вызов функции. См. Раздел ФУНКЦИИ для получения информации.

() Символ массива. Используя круглые скобки, вы можете определить «список» значений, которые
следует приложить к ключу слева от него.

Пример:

протокол (tcp udp icmp)

это приведет к трем правилам:

... -p TCP ...
... -p удп ...
... -p ICMP ...

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

proto tcp (ПРИНЯТЬ ЖУРНАЛ);

но вы можете сделать это:

цепочка (ВХОД ВЫХОД ВПЕРЕД) proto (icmp udp tcp) DROP;

(что приведет к девяти правилам!)

Значения разделяются пробелами. Символ массива может быть как левым, так и правым.
ассоциативный, в отличие от блока вложенности, который является только левоассоциативным.

«#» Символ комментария. Все, что следует за этим символом до конца строки, считается
игнорируются.

"` команда` "
Выполните команду в оболочке и вставьте вывод процесса. См. Раздел
обратные кавычки для получения информации.

'нить'
Цитируйте строку, которая может содержать пробелы, знак доллара и т. Д.

LOG префикс журнала 'эй, это мой префикс журнала!';

«Строка»
Цитируйте строку (см. Выше), но ссылки на переменные со знаком доллара
оценено:

DNAT в "$ myhost: $ myport";

Ключевые слова
В предыдущем разделе мы уже ввели несколько основных ключевых слов, таких как "цепочка",
«протокол» и «ПРИНЯТЬ». Давайте исследуем их природу.

Есть три типа ключевых слов:

· Локация Ключевые слова определяют, где будет создано правило. Пример: «стол», «цепочка».

· совпадение Ключевые слова выполняют проверку всех проходящих пакетов. Текущее правило без
действует, если один (или несколько) матчей не пройден. Пример: «прото», «даддр».

За большинством совпадений следует параметр: «proto tcp», «daddr 172.16.0.0/12».

· цель Ключевые слова указывают, что делать с пакетом. Пример: «ПРИНЯТЬ», «ОТКАЗАТЬ»,
"Прыжок".

Некоторые цели определяют дополнительные ключевые слова для уточнения деталей: "REJECT reject-with icmp-
net-unreachable ".

Каждое правило состоит из Локация и еще один цель, плюс любое количество спички:

таблица filter # location
proto tcp dport (http https) # совпадение
ПРИНИМАТЬ; # цель

Строго говоря, существует четвертый вид: ферма ключевые слова (которые контролируют внутренние
поведение), но они будут объяснены позже.

Параметры
Многие ключевые слова принимают параметры. Они могут быть указаны как литералы, ссылки на переменные или
списки (массивы):

proto udp
saddr $ TRUSTED_HOSTS;
прото tcp dport (http https ssh);
LOG префикс журнала "funky wardriver alert:";

Некоторые из них можно отрицать (списки отрицать нельзя):

proto! esp;
proto udp dport! domain;

Ключевые слова, не принимающие параметров, заменяются префиксом '!':

proto tcp! syn;

Читать Iptables(8) чтобы увидеть, где ! может быть использован.

BASIC КЛЮЧЕВЫЕ СЛОВА


Локация ключевые слова
домен [ip | ip6]
Установите домен. "ip" по умолчанию и означает "IPv4" (iptables). «ip6» - для IPv6
поддержка, используя "ip6tables".

(см. таблицу ниже) [фильтр | нац | искажение]
Определяет, в какую таблицу netfilter будет вставлено это правило: "filter" (по умолчанию),
«нац» или «калечить».

цепь [название сети]
Определяет цепочку netfilter (в текущей таблице), это правило будет
вставлен в. Общие предопределенные имена цепочек: «ВХОД», «ВЫВОД», «ВПЕРЕД»,
«ПЕРЕДАЧА», «РАЗГРУЗКА», в зависимости от таблицы. Посмотреть сетевой фильтр
документация для деталей.

Если вы укажете здесь несуществующую цепочку, ferm добавит правило в пользовательскую цепочку.
с этим именем.

и политика [ПРИНЯТЬ | ОТКАЗАТЬ | ..]
Задает политику по умолчанию для текущей цепочки (только встроенная). Может быть одним из
встроенные цели (ACCEPT, DROP, REJECT, ...). Пакет, не соответствующий правилам
в цепочке будут обрабатываться в соответствии с политикой.

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

@подцепь ["НАЗВАНИЕ ЦЕПИ"] { ... }
Работает как обычные блочные операторы (т. Е. Без @подцепь ключевое слово), кроме
которая ферма перемещает правила в фигурных скобках в новую настраиваемую цепочку. Название
так как эта цепочка выбирается Ferm автоматически.

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

цепочка фильтров таблицы INPUT {
саддр (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) {
proto tcp dport (http https ssh) ПРИНЯТЬ;
прото udp dport домен ПРИНЯТЬ;
}
}

Это генерирует 20 правил. Когда приходит пакет, который не проходит Saddr
матч, тем не менее, он проверяет все 20 правил. С участием @подцепь, эта проверка сделана
один раз, что приведет к более быстрой фильтрации сети и меньшей загрузке процессора:

цепочка фильтров таблицы INPUT {
саддр (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) @subchain {
proto tcp dport (http https ssh) ПРИНЯТЬ;
прото udp dport домен ПРИНЯТЬ;
}
}

При желании вы можете определить имя субцепи:

saddr (1.2.3.4 2.3.4.5 3.4.5.6) @subchain "foobar" {
proto tcp dport (http https ssh) ПРИНЯТЬ;
прото udp dport домен ПРИНЯТЬ;
}

Имя может быть строковым литералом в кавычках или расширенным выражением ferm.
например @cat ("interface_", $ iface) или @substr ($ var, 0,20).

Вы можете добиться того же, явно объявив настраиваемую цепочку, но вы можете почувствовать
что с помощью @подцепь требует меньше набора текста.

Базовый Iptables совпадение ключевые слова
интерфейс [имя-интерфейса]
Определите имя интерфейса, вашу внешнюю сетевую карту, например eth0, или dialup, например
ppp1 или любое другое устройство, которое вы хотите сопоставить для передачи пакетов. Это эквивалентно
к переключателю "-i" Iptables(8).

внешняя поверхность [имя-интерфейса]
То же, что и интерфейс, только для сопоставления исходящего интерфейса для пакета, как в
Iptables(8).

протокол [имя-протокола | номер-протокола]
В настоящее время ядром поддерживаются протоколы tcp, udp и icmp или их соответствующие
номера.

saddr | daddr [спецификация адреса]
Соответствует пакетам, исходящим с указанного адреса (saddr) или нацеленным на
адрес (даддр).

Примеры:

saddr 192.168 / 8 ПРИНЯТЬ; # (идентично следующему :)
saddr 192.168.0.0/255.255.255.0 ПРИНЯТЬ;
daddr my.domain.com ПРИНЯТЬ;

фрагмент
Укажите, что нужно сопоставлять только фрагментированные IP-пакеты. Когда пакеты
больше, чем максимальный размер пакета, который может обработать ваша система (так называемый Максимальный
Transmission Unit или MTU) они будут разделены на биты и отправлены один за другим как
одиночные пакеты. Видеть Ifconfig(8) если вы хотите найти MTU для своей системы (
по умолчанию обычно 1500 байт).

Фрагменты часто используются в DOS-атаках, потому что нет возможности найти
из источника пакета фрагмента.

спорт | dport [спецификация порта]
Соответствует пакетам на указанном порту TCP или UDP. "спорт" соответствует источнику
порт, а dport соответствует порту назначения.

Это совпадение может быть использовано только после того, как вы укажете "протокол tcp" или "протокол udp",
потому что только у этих двух протоколов есть порты.

И несколько примеров допустимых портов / диапазонов:

dport 80 ПРИНЯТЬ;
порт HTTP ПРИНЯТЬ;
dport ssh: http ПРИНЯТЬ;
dport 0: 1023 ПРИНЯТЬ; # эквивалент: 1023
dport 1023: 65535 ПРИНЯТЬ;

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

модуль [название-модуля]
Загрузите модуль iptables. Большинство модулей предоставляют более подходящие ключевые слова. Мы доберемся до
это позже.

Базовый цель ключевые слова
Прыгать [имя пользовательской цепочки]
Переход к пользовательской цепочке. Если ни одно правило в пользовательской цепочке не найдено, netfilter возвращает
к следующему правилу в предыдущей цепочке.

Realgoto [имя пользовательской цепочки]
Перейти к пользовательской цепочке. в отличие от Прыгать вариант, ВЕРНУТЬ не будет продолжать обработку
в этой цепочке, но вместо этого в цепочке, которая вызвала нас через Прыгать.

Ключевое слово Realgoto был выбран в переходный период, потому что На
(уже не рекомендуется) раньше было псевдонимом для Прыгать.

ПРИНЯТЬ Принимает совпадающие пакеты.

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

БРАК Отклоняет совпадающие пакеты, т.е. отправляет пакет ICMP отправителю, который является портом.
по умолчанию недоступен. Вы можете указать другой тип ICMP.

ОТКЛОНЯТЬ; # по умолчанию icmp-port-unreachable
REJECT reject-with-icmp-net-unreachable;

Для получения подробной информации введите "iptables -j REJECT -h".

ВЕРНУТЬ Завершите текущую цепочку и вернитесь к вызывающей цепочке (если "прыжок
[custom-chain-name] ").

NOP Никаких действий.

ДОПОЛНИТЕЛЬНЫЕ КЛЮЧЕВЫЕ СЛОВА


Netfilter имеет модульную структуру. Модули могут предоставлять дополнительные цели и подходящие ключевые слова. Список
модулей netfilter постоянно растет, и Ferm старается не отставать от их поддержки
все. В этой главе описаны модули, которые в настоящее время поддерживаются.

Iptables совпадение модули
аккаунт Учет трафика для всех хостов в определенной сети / сетевой маске. Это один из
сопоставить модули, которые ведут себя как цель, т.е. вам в основном придется использовать NOP
цель.

мод учетной записи aname mynetwork aaddr 192.168.1.0/24 ashort NOP;

тип адреса
Проверить тип адреса; либо исходный адрес, либо адрес назначения.

мод addrtype src-type BROADCAST;
мод addrtype dst-type LOCAL;

Для получения подробной информации введите «iptables -m addrtype -h».

ah Проверяет заголовок SPI в пакете AH.

мод ах ахспи 0x101;
мод ах ахспи! 0x200: 0x2ff;

Дополнительные аргументы в пользу IPv6:

mod ah ahlen 32 ПРИНЯТЬ;
mod ah ahlen! 32 ПРИНЯТЬ;
мод ах ахрес ПРИНЯТЬ;

комментарий Добавляет к правилу комментарий длиной до 256 символов без эффекта. Обратите внимание, что
в отличие от комментариев ferm ('#'), этот будет отображаться в "iptables -L".

комментарий мода комментарий «Это мой комментарий». ПРИНИМАТЬ;

состояние
Соответствует, если значение в / proc / net / ipt_condition / NAME равно 1 (путь равен
/ proc / net / ip6t_condition / NAME для домена ip6).

мод условие условие (abc def) ПРИНЯТЬ;
mod condition condition! foo ACCEPT;

Connbytes
Сопоставить по количеству байтов или пакетов соединение (или один из двух потоков
составляющих соединение) до сих пор были переданы, или в среднем байтах на
пакет.

mod connbytes connbytes 65536: connbytes-dir оба байта connbytes-mode ACCEPT;
mod connbytes connbytes! 1024: 2048 connbytes-dir ответы на пакеты connbytes-mode ACCEPT;

Допустимые значения для Connbytes-Dir: оригинал, Ответить, и; для connbytes-режим:
пакеты, байт, средний пакет.

коннлимит
Позволяет ограничить количество параллельных TCP-соединений с сервером на
IP-адрес клиента (или блок адресов).

мод connlimit connlimit-выше 4 REJECT;
мод connlimit connlimit-выше! 4 ПРИНЯТЬ;
мод connlimit connlimit-выше 4 connlimit-mask 24 REJECT;

Connmark
Отметьте поле отметки, связанное с подключением, установленное целью CONNMARK.

мод connmark mark 64;
мод connmark mark 6/7;

трассировщика
Проверьте информацию об отслеживании соединения.

mod conntrack ctstate (УСТАНОВЛЕННЫЙ СВЯЗАННЫЙ);
мод conntrack ctproto tcp;
мод conntrack ctorigsrc 192.168.0.2;
мод conntrack ctorigdst 1.2.3.0/24;
мод conntrack ctorigsrcport 67;
мод conntrack ctorigdstport 22;
мод conntrack ctreplsrc 2.3.4.5;
мод conntrack ctrepldst! 3.4.5.6;
мод conntrack ctstatus ASSURED;
мод conntrack ctexpire 60;
мод conntrack ctexpire 180: 240;

Для получения подробной информации введите "iptables -m conntrack -h".

DCCP Проверьте специфические атрибуты DCCP (протокол управления перегрузкой дейтаграмм). Этот
модуль автоматически загружается при использовании "протокола dccp".

прото dccp sport 1234 dport 2345 ПРИНЯТЬ;
proto dccp типы dccp (SYNCACK ACK) ПРИНЯТЬ;
proto dccp dccp-types! REQUEST DROP;
proto dccp dccp-option 2 ПРИНЯТЬ;

dscp Сопоставьте 6-битное поле DSCP в поле TOS.

мод dscp dscp 11;
мод dscp dscp-class AF41;

ECN Сопоставьте биты ECN заголовка TCP IPv4.

мод ecn ecn-tcp-cwr;
мод ecn ecn-tcp-ece;
мод ecn ecn-ip-ect 2;

Для получения подробной информации введите "iptables -m ecn -h".

ESP Проверяет заголовок SPI в пакете ESP.

мод esp espspi 0x101;
мод esp espspi! 0x200: 0x2ff;

eui64 "Этот модуль соответствует части EUI-64 автоматически настроенного IPv6-адреса без сохранения состояния.
Он сравнивает EUI-64, полученный из исходного MAC-адреса в кадре Ehternet, с
младшие 64 бита исходного адреса IPv6. Но бит "Универсальный / Локальный" не
в сравнении. Этот модуль не соответствует другому кадру канального уровня и действителен только в
цепочки PREROUTING, INPUT и FORWARD ».

мод eui64 ПРИНЯТЬ;

нечеткий «Этот модуль соответствует пределу скорости, основанному на контроллере нечеткой логики [FLC]».

мод нечеткий нижний предел 10 верхний предел 20 ПРИНЯТЬ;

HBH Соответствует заголовку параметров перехода (ip6).

mod hbh hbh-len 8 ПРИНЯТЬ;
mod hbh hbh-len! 8 ПРИНЯТЬ;
mod hbh hbh-opts (1: 4 2: 8) ПРИНЯТЬ;

hl Соответствует полю Hop Limit (ip6).

mod hl hl-eq (8 10) ПРИНЯТЬ;
mod hl hl-eq! 5 ПРИНЯТЬ;
мод hl hl-gt 15 ПРИНЯТЬ;
mod hl hl-lt ​​2 ПРИНЯТЬ;

помощник Проверяет, какой модуль conntrack helper отслеживает это соединение. Порт может быть
указывается с помощью "-portnr".

мод-помощник, помощник irc ACCEPT;
мод-помощник-помощник ftp-21 ACCEPT;

ICMP Проверьте специфические атрибуты ICMP. Этот модуль автоматически загружается, когда вы используете
"протокол icmp".

протокол icmp icmp-type эхо-запрос ACCEPT;

Эту опцию также можно использовать в ip6 домен, хотя это называется ICMPV6 in
ip6tables.

Используйте "iptables -p icmp" -h "", чтобы получить список допустимых типов ICMP.

iprange Соответствует диапазону IPv4-адресов.

мод iprange src-range 192.168.2.0-192.168.3.255;
мод iprange dst-range! 192.168.6.0-192.168.6.255;

ipv4options
Сопоставьте параметры заголовка IPv4, такие как исходная маршрутизация, маршрут записи, отметка времени и
роутер-оповещение.

мод ipv4options ssrr ACCEPT;
мод ipv4options lsrr ACCEPT;
мод ipv4options no-srr ACCEPT;
мод ipv4options! rr ACCEPT;
мод ipv4options! ts ПРИНЯТЬ;
мод ipv4options! ra ACCEPT;
мод ipv4options! any-opt ПРИНЯТЬ;

ipv6header
Соответствует заголовку расширения IPv6 (ip6).

модифицируйте заголовок ipv6header! (фрагмент перехода) ПРИНЯТЬ;
изменить заголовок ipv6header (auth dst) ПРИНЯТЬ;

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

мод hashlimit hashlimit 10 / minute hashlimit-burst 30 / min
режим хеш-лимита dstip хэш-имя-лимита foobar ПРИНЯТЬ;

Возможные значения для hashlimit-mode: dstip dstport srcip srcport (или список с
более одного из них).

Есть другие возможные настройки, введите "iptables -m hashlimit -h" для
документация.

Проверьте длину упаковки.

длина мода 128; # ровно 128 байт
длина мода 512: 768; # диапазон
длина мода длина! 256; # отрицается

предел Ограничивает скорость передачи пакетов.

ограничение мода 1 / секунда;
мод лимит лимит 15 / минута лимит-всплеск 10;

Для получения подробной информации введите "iptables -m limit -h".

макинтош Сопоставьте исходный MAC-адрес.

мод mac mac-source 01: 23: 45: 67: 89;

отметка Соответствует пакетам на основе их поля метки netfilter. Это может быть 32-битное целое число.
между 0 и 4294967295.

марка мода 42;

mh Соответствует заголовку мобильности (домен ip6).

прото mh mh-type обновление привязки ACCEPT;

многопортовый
Сопоставьте набор портов источника или назначения (только UDP и TCP).

модифицировать многопортовые исходные порты (https ftp);
модификация многопортовых портов назначения (домен mysql);

Это правило имеет большое преимущество перед «dport» и «sport»: оно генерирует только одно правило.
до 15 портов вместо одного правила для каждого порта.

энный Соответствует каждому n-му пакету.

мод n-ый каждые 3;
мод n -й счетчик 5 каждые 2;
мод n-й старт 2 каждые 3;
mod nth start 5, пакет 2 каждые 6;

Для получения подробной информации введите "iptables -m nth -h".

OSF Сопоставляйте пакеты в зависимости от операционной системы отправителя.

мод osf жанра Linux;
мод osf! жанр FreeBSD ttl 1 log 1;

Для получения подробной информации введите "iptables -m osf -h".

владелец Проверьте информацию о создателе пакета, а именно идентификатор пользователя, идентификатор группы, идентификатор процесса,
идентификатор сеанса и имя команды.

владелец мода uid-owner 0;
владелец мода gid-owner 1000;
владелец мода pid-owner 5432;
владелец мода sid-owner 6543;
владелец мода cmd-owner "sendmail";

("cmd-owner", "pid-owner" и "sid-owner" требуют специальных исправлений ядра, а не
включен в ванильное ядро ​​Linux)

Physdev Соответствует физическому устройству, на которое пакет вошел или собирается покинуть
машина. Это полезно для мостовых интерфейсов.

мод Physdev Physdev-in ppp1;
мод Physdev Physdev-out eth2;
мод физдев физдев-есть-в;
мод Physdev Physdev-is-out;
мод PhysDev Physdev-is-Bridged;

pkttype Проверьте тип пакета канального уровня.

мод pkttype pkt-type unicast;
мод pkttype pkt-type Broadcase;
mod pkttype многоадресная рассылка типа pkt;

и политика Соответствует политике IPsec, применяемой к этому пакету.

mod policy dir out poli ipsec ACCEPT;
строгая политика модов reqid 23 spi 0x10 proto ah ПРИНЯТЬ;
мод режим политики туннель туннель-src 192.168.1.2 ПРИНЯТЬ;
мод режим политики туннель туннель-dst 192.168.2.1 ПРИНЯТЬ;
строгая политика модов next reqid 24 spi 0x11 ACCEPT;

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

PSD Обнаружение сканирования портов TCP / UDP.

мод psd psd-weight-threshold 21 psd-delay-threshold 300
psd-lo-ports-weight 3 psd-hi-ports-weight 1 DROP;

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

мод квота квота 65536 ПРИНЯТЬ;

случайный Соответствует случайному проценту всех пакетов.

мод случайное среднее 70;

область Сопоставьте область маршрутизации. Полезно в средах, использующих BGP.

мод царство царства 3;

последний Временно отметьте исходные IP-адреса.

мод недавний набор;
мод недавний rcheck секунд 60;
мод недавнего набора rsource name "badguy";
мод недавний набор rdest;
мод недавний rcheck rsource name "badguy" секунд 60;
мод недавнее обновление секунд 120 hitcount 3 rttl;

Этот модуль netfilter имеет конструктивный недостаток: хотя он реализован как соответствие
модуль, он имеет целевое поведение при использовании ключевого слова "set".

<http://snowman.net/projects/ipt_recent/>

rt Сопоставьте заголовок маршрутизации IPv6 (только ip6).

мод рт рт-тип 2 рт-лен 20 ПРИНЯТЬ;
mod rt rt-type! 2 rt-len! 20 ПРИНЯТЬ;
mod rt rt-segsleft 2: 3 ПРИНЯТЬ;
mod rt rt-segsleft! 4: 5 ПРИНЯТЬ;
mod rt rt-0-res rt-0-addrs (:: 1 :: 2) rt-0-not-strict ПРИНЯТЬ;

SCTP Проверьте специфические атрибуты SCTP (Stream Control Transmission Protocol). Этот
модуль автоматически загружается, когда вы используете "протокол sctp".

proto sctp sport 1234 dport 2345 ПРИНЯТЬ;
proto sctp chunk-types только DATA: Be ACCEPT;
тип фрагмента proto sctp любой (INIT INIT_ACK) ACCEPT;
типы блоков proto sctp! all (HEARTBEAT) ACCEPT;

Используйте "iptables -p sctp" -h "", чтобы получить список допустимых типов блоков.

набор Проверяет исходный или целевой IP / порт / MAC по набору.

набор модов set badguys src DROP;

Видетьhttp://ipset.netfilter.org/> для получения дополнительной информации.

состояние Проверяет состояние отслеживания соединения.

состояние мода состояние INVALID DROP;
состояние мода состояние (УСТАНОВЛЕНО СВЯЗАННО) ПРИНЯТЬ;

Для получения подробной информации введите "iptables -m state -h".

статистика
Преемник энный и случайный, в настоящее время не зарегистрировано в Iptables(8) справочная страница.

мод статистический режим случайная вероятность 0.8 ПРИНЯТЬ;
mod statistic mode n-ый каждые 5 пакетов 0 DROP;

string Соответствует строке.

мод строка строка "foo bar" ПРИНЯТЬ;
мод строка алгоритм kmp от 64 до 128 шестнадцатеричная строка "deadbeef" ACCEPT;

TCP Проверяет специфические атрибуты TCP. Этот модуль автоматически загружается, когда вы используете
"протокол tcp".

прото tcp sport 1234;
прото TCP-порт 2345;
прото TCP TCP-флаги (SYN ACK) SYN;
proto tcp tcp-flags! (SYN ACK) SYN;
proto tcp tcp-flags ВСЕ (RST ACK);
прото tcp син;
прото TCP TCP-опция 2;
протокол TCP MSS 512;

Для получения подробной информации введите "iptables -p tcp -h".

tcpmss Проверьте поле TCP MSS пакета SYN или SYN / ACK.

mod tcpmss mss 123 ПРИНЯТЬ;
mod tcpmss mss 234: 567 ПРИНЯТЬ;

время Проверьте, находится ли время прибытия пакета в заданном диапазоне.

мод время timestart 12:00;
mod timestop 13:30;
мод временные дни (пн ср пт);
мод время datestart 2005: 01: 01;
мод время datestart 2005: 01: 01: 23: 59: 59;
mod time datestop 2005: 04: 01;
мод время месяца, дня (30 31);
мод время будни (ср чт);
мод время timestart 12:00 utc;
мод время timestart 12:00 по местному времени;

Для получения подробной информации введите "iptables -m time -h".

кашлять Соответствует пакету с указанным значением TOS.

мод tos tos Минимизация затрат ПРИНЯТЬ;
mod tos tos! Normal-Service ПРИНЯТЬ;

Для получения подробной информации введите "iptables -m tos -h".

время_жизни Соответствует полю ttl (время жизни) в IP-заголовке.

mod ttl ttl-eq 12; # ttl равно
мод ttl ttl-gt 10; # ttl больше чем
мод ttl ttl-lt 16; # ttl меньше чем

u32 Сравнивает необработанные данные из пакета. Вы можете указать более одного фильтра в ферме.
список; они не раскрываются в нескольких правилах.

mod u32 u32 '6 & 0xFF = 1' ПРИНЯТЬ;
mod u32 u32 ('27 & 0x8f = 7 ''31 = 0x527c4833') DROP;

нечистый Соответствует пакетам, которые кажутся искаженными или необычными. Этот матч больше не имеет
параметры.

Iptables цель модули
Следующие дополнительные цели доступны в Ferm при условии, что вы включили их в
ваше ядро:

КЛАССИФИКАЦИЯ
Установите класс CBQ.

КЛАССИФИКАЦИЯ сет-класс 3:50;

КЛАСТЕРИП
Сконфигурируйте простой кластер узлов, которые совместно используют определенный IP и MAC-адрес.
Подключения статически распределяются между узлами.

CLUSTERIP новый исходный код hashmode clustermac 00: 12: 34: 45: 67: 89
общее количество узлов 4 локальный узел 2 хэш-инициализация 12345;

КОННМАРК
Устанавливает значение отметки netfilter, связанной с подключением.

Марка CONNMARK 42;
Отметка сохранения CONNMARK;
CONNMARK восстановить отметку;
CONNMARK маска отметки сохранения 0x7fff;
CONNMARK маска восстановления метки 0x8000;

КОННСЕКМАРК
Этот модуль копирует маркировку безопасности из пакетов в соединения (если не помечен),
и от соединений обратно к пакетам (также только если без метки). Обычно используется в
вместе с SECMARK, он действителен только в таблице mangle.

CONNSECMARK сохранить;
CONNSECMARK восстановить;

ДТА в [IP-адрес | диапазон IP-адресов | диапазон IP-портов]
Измените адрес назначения пакета.

DNAT до 10.0.0.4;
DNAT до 10.0.0.4:80;
DNAT до 10.0.0.4:1024-2048;
DNAT до 10.0.1.1-10.0.1.20;

ECN Эта цель позволяет выборочно обходить известные черные дыры ECN. Это может только
использоваться в таблице катушки.

ECN ecn-tcp-удалить;

HL Измените поле IPv6 Hop Limit (только ip6 / mangle).

HL гл-набор 5;
HL гл-уб 2;
HL гл-вкл 1;

IPV4OPTSSTRIP
Удалите из пакета все параметры IP. Этот модуль не принимает никаких опций.

IPV4OPTSSTRIP;

ВХОД Регистрируйте все пакеты, соответствующие этому правилу, в журнале ядра. Будьте осторожны с журналом
затопление. Обратите внимание, что это «цель без завершения», т. Е. Обход правила.
продолжается в следующем правиле.

LOG предупреждение на уровне журнала префикс журнала "Посмотрите на это:";
ЖУРНАЛ log-tcp-sequence log-tcp-options;
LOG log-ip-параметры;

МАРК Устанавливает поле метки netfilter для пакета (32-битное целое число от 0 до
4294967295):

МАРК set-mark 42;
МАРК set-xmark 7/3;
ОТМЕТКА и марка 31;
ОТМЕТКА или отметка 1;
MARK xor-метка 12;

MASQUERADE
Маскирует совпадающие пакеты. Необязательно, за которым следует порт или диапазон портов для
iptables. Укажите как «123», «123-456» или «123: 456». Параметр диапазона портов
определяет, с каких локальных портов должны исходить замаскированные соединения.

МАСКАРАД;
MASQUERADE к портам 1234: 2345;
MASQUERADE к портам 1234: 2345 случайным образом;

ЗЕРКАЛО Экспериментальная демонстрационная цель, которая инвертирует поля источника и назначения
в заголовке IP.

ЗЕРКАЛО;

СЕТЕВАЯ КАРТА Сопоставьте целую сеть с другой сетью в натуральный таблице.

NETMAP на 192.168.2.0/24;

НЕТРЕК Отключите отслеживание соединений для всех пакетов, соответствующих этому правилу.

proto tcp dport (135: 139 445) NOTRACK;

НФЛОГ Регистрировать пакеты через netlink; это преемник УЛОГ.

NFLOG nflog-group 5 nflog-prefix «Посмотрите на это:»;
NFLOG nflog-диапазон 256;
NFLOG nflog-порог 10;

НФОЧЕРЕДЬ Очередь в пользовательском пространстве, требуется поддержка ядра nfnetlink_queue.

proto tcp dport ftp NFQUEUE номер очереди 20;

ОЧЕРЕДЬ Очереди в пользовательском пространстве, предшественник НФОЧЕРЕДЬ. Все пакеты попадают в очередь 0.

proto tcp dport ftp очередь;

REDIRECT к портам [порты]
Прозрачное проксирование: измените IP-адрес назначения пакета на машину
себя.

proto tcp dport http ПЕРЕНАПРАВЛЕНИЕ на порты 3128;
proto tcp dport http ПЕРЕНАПРАВИТЬ на порты 3128 случайно;

SAME Подобно SNAT, но клиент отображается на один и тот же исходный IP-адрес для всех своих
соединений.

ЖЕ к 1.2.3.4-1.2.3.7;
ЖЕ к 1.2.3.8-1.2.3.15 нодст;
ЖЕ к 1.2.3.16-1.2.3.31 случайный;

СЕКМАРК Это используется для установки значения метки защиты, связанной с пакетом, для использования его
подсистемы безопасности, такие как SELinux. Действует только в таблице mangle.

SECMARK selctx "system_u: object_r: httpd_packet_t: s0";

УСТАНОВКА [add-set | del-set] [Имя набора] [флаг (ы)]
Добавьте IP в указанный набор. Видетьhttp://ipset.netfilter.org/>

proto icmp эхо-запрос типа icmp SET add-set badguys src;

SNAT в [IP-адрес | диапазон IP-адресов | диапазон IP-портов]
Измените адрес источника пакета.

SNAT до 1.2.3.4;
SNAT к 1.2.3.4:20000-30000;
SNAT до 1.2.3.4 случайный;

TCPMSS Измените значение MSS пакетов TCP SYN.

TCPMSS set-mss 1400;
TCPMSS зажим-mss-to-pmtu;

КАШЕЛЬ набор [ценить]
Установите это значение для бита типа обслуживания пакета tcp. Это будет использоваться
какой бы планировщик трафика ни захотел, в основном ваша собственная Linux-машина, но, возможно,
более. Исходные tos-биты очищаются и перезаписываются этим значением.

TOS устанавливает максимальную пропускную способность;
ТОС и-тос 7;
ТОС или-тос 1;
ТОС xor-tos 4;

Для получения подробной информации введите "iptables -j TOS -h".

TTL Измените поле заголовка TTL.

TTL ttl-набор 16;
TTL ttl-dec 1; # уменьшить на 1
TTL ttl-inc 4; # увеличить на 4

УЛОГ Записывать пакеты в программу пользовательского пространства.

ULOG ulog-nlgroup 5 префикс ulog "Посмотрите на это:";
ULOG ulog-cprange 256;
ULOG ulog-qпорог 10;

ДРУГИЕ ДОМЕНЫ


Начиная с версии 2.0, ферма поддерживает не только ip и ip6, Но и ARP (Таблицы ARP) и eb
(таблицы мостов Ethernet). Концепции похожи на Iptables.

Арптабли ключевые слова
исходный IP, IP-адрес назначения
Соответствует исходному или целевому IPv4-адресу. Такой же как Saddr и папа в ip
домена.

исходный Mac, пункт назначения-Mac
Соответствует исходному или целевому MAC-адресу.

интерфейс, внешняя поверхность
Интерфейс ввода и вывода.

длина h
Аппаратная длина пакета.

цепочка INPUT h-длиной 64 ACCEPT;

опкод Код операции, подробности см. Iptables(8).

код операции 9 ПРИНЯТЬ;

h-образный Тип оборудования.

h-тип 1 ПРИНЯТЬ;

прототип
Тип протокола.

прототип 0x800 ПРИНЯТЬ;

Искажение
Ключевые слова Mangle-ip-s, Mangle-ip-d, Mangle-Mac-S, Mangle-Mac-D, калечить мишень
может использоваться для изменения ARP. Видеть Iptables(8) для подробностей.

блюда ключевые слова
прото Соответствует протоколу, создавшему фрейм, например IPv4 or PPP. Список см.
/ etc / ethertypes.

интерфейс, внешняя поверхность
Физический интерфейс ввода и вывода.

логический вход, логический выход
Интерфейс логического моста.

Saddr, папа
Соответствует MAC-адресу источника или назначения.

Совпадение модули
Поддерживаются следующие модули соответствия: 802.3, arp, ip, mark_m, pkttype, stp,
влан, лог.

цель расширения
Поддерживаются следующие целевые расширения: arpreply, dnat, mark, redirect,
снат.

Обратите внимание, что существует конфликт между --отметка из mark_m модуль соответствия
и -j отметка. Поскольку оба варианта будут реализованы с помощью ключевого слова ferm отметка, Мы
решил решить эту проблему, написав имя цели в верхнем регистре, как в другом
домены. В следующем примере метка 1 заменяется на 2:

отметка 1 МАРКА 2;

ADVANCED ФУНКЦИИ И ОСОБЕННОСТИ


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

Чтобы установить переменные, напишите:

@def $ DEV_INTERNET = eth0;
@def $ PORTS = (http ftp);
@def $ MORE_PORTS = ($ PORTS 8080);

В реальном коде Ferm переменные используются так же, как и любой другой параметр ключевого слова:

цепочка INPUT interface $ DEV_INTERNET proto tcp dport $ MORE_PORTS ACCEPT;

Обратите внимание, что переменные могут использоваться только в параметрах ключевых слов («192.168.1.1», «http»); Oни
не может содержать ключевые слова Ferm, такие как "proto" или "interface".

Переменные действительны только в текущем блоке:

@def $ DEV_INTERNET = eth1;
цепочка INPUT {
протокол TCP {
@def $ DEV_INTERNET = ppp0;
интерфейс $ DEV_INTERNET dport http ACCEPT;
}
интерфейс $ DEV_INTERNET DROP;
}

будет расширен до:

цепочка INPUT {
протокол TCP {
интерфейс ppp0 dport http ACCEPT;
}
интерфейс eth1 DROP;
}

«Def $ DEV_INTERNET = ppp0» допустимо только в блоке «proto tcp»; родительский блок
еще знает "установить $ DEV_INTERNET = eth1".

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

Автоматический переменные
Некоторые переменные устанавливаются внутри ferm. Скрипты Ferm могут использовать их, как и любые другие
Переменная.

$ FILENAME
Имя файла конфигурации относительно каталога, в котором был запущен ferm.

$ FILEBNAME
Базовое имя файла конфигурации.

$ DIRNAME
Каталог файла конфигурации.

$ ДОМЕН Текущий домен. Один из ip, ip6, ARP, eb.

ТАБЛИЦА $ Текущая таблица netfilter.

$ ЦЕПЬ Текущая цепочка netfilter.

$ LINE Строка текущего скрипта. Его можно использовать так:

@def & log ($ msg) = {
LOG префикс журнала "rule = $ msg: $ LINE";
}
.
.
.
& log ("сообщение журнала");

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

@def & FOO () = proto (tcp udp) домен dport;
& FOO () ПРИНЯТЬ;

@def & TCP_TUNNEL ($ port, $ dest) = {
цепочка фильтров таблицы FORWARD интерфейс ppp0 proto tcp dport $ port daddr $ dest внешний eth0 ACCEPT;
таблица nat chain PREROUTING interface ppp0 proto tcp dport $ port daddr 1.2.3.4 DNAT to $ dest;
}

& TCP_TUNNEL (http, 192.168.1.33);
& TCP_TUNNEL (ftp, 192.168.1.30);
& TCP_TUNNEL ((ssh smtp), 192.168.1.2);

Вызов функции, которая содержит блок (например, '{...}'), должен быть последней командой в ферме.
правило, то есть после него должен стоять ';'. '&FOO ()'пример не содержит блока, поэтому
после звонка вы можете написать «ПРИНЯТЬ». Чтобы обойти это, вы можете изменить порядок ключевых слов:

@def & IPSEC () = {прото (особенно ах); proto udp dport 500; }
цепочка INPUT ACCEPT & IPSEC ();

Обратные кавычки
С обратными кавычками вы можете использовать вывод внешней команды:

@def $ DNSSERVERS = `сервер имен grep / Etc / resolv.conf | awk '{print $ 2}' `;
цепочка INPUT proto tcp saddr $ DNSSERVERS ACCEPT;

Команда выполняется с оболочкой (/ Бен / ш), как и обратные кавычки в perl. Ферм делает
не делайте здесь никаких расширений переменных.

Затем вывод токенизируется и сохраняется как список (массив) ferm. Строки, начинающиеся с '#'
игнорируются; другие строки могут содержать любое количество значений, разделенных пробелом.

Тур включает:
The @включать ключевое слово позволяет включать внешние файлы:

@include 'vars.ferm';

Имя файла относится к вызывающему файлу, например, при включении from
/etc/ferm/ferm.conf, приведенное выше утверждение включает /etc/ферм/vars.ферм. Переменные и
функции, объявленные во включенном файле, по-прежнему доступны в вызывающем файле.

включают работает внутри блока:

цепочка INPUT {
@include 'input.ferm';
}

Если вы укажете каталог (с завершающим '/'), все файлы в этом каталоге будут
включены, отсортированы по алфавиту:

@include 'ferm.d /';

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

@include '/root/generate_ferm_rules.sh $ HOSTNAME |'

Conditionals
Ключевое слово @если вводит условное выражение:

@if $ condition DROP;

Значение оценивается как истина, как в Perl: ноль, пустой список, пустая строка - ложь,
все остальное правда. Примеры истинных значений:

(ab); 1; 'фу'; (0 0)

Примеры ложных значений:

(); 0; '0'; ''

Рядом со школой находится @еще:

@if $ condition DROP; @else REJECT;

Обратите внимание на точку с запятой перед @еще.

Фигурные скобки можно использовать после @если or @еще:

@if $ condition {
МАРК set-mark 2;
RETURN;
} @еще {
МАРК set-mark 3;
}

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

Здесь нет @элсиф, Используйте @еще @если .

Пример:

@def $ have_ipv6 = `test -f / proc / net / ip6_tables_names && echo 1 || эхо`;
@if $ have_ipv6 {
домен ip6 {
# ....
}
}

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

@hook pre "echo 0>/ proc / sys / net / ipv4 / conf / eth0 / пересылка";
@hook post "echo 1>"/ proc / sys / net / ipv4 / conf / eth0 / пересылка";
@hook flush "echo 0>/ proc / sys / net / ipv4 / conf / eth0 / пересылка";

Указанная команда выполняется с использованием оболочки. "pre" означает запуск команды до
применение правил брандмауэра, а «отправить» означает выполнить команду после этого. "промывочные" крючки
запускаются после того, как ferm сбросил правила брандмауэра (опция --flush). Вы можете установить любой
количество крючков.

ВСТРАИВАЕМАЯ ФУНКЦИИ


Есть несколько встроенных функций, которые могут вам пригодиться.

@eq (а, б)
Проверяет два значения на равенство. Пример:

@if @eq ($ DOMAIN, ip6) DROP;

@ne (а, б)
Подобно @eq, это проверка на неравенство.

@not (x)
Отменяет логическое значение.

@resolve ((имя_хоста1 имя хоста2 ...), [тип])
Обычно имена хостов разрешаются iptables. Чтобы позволить ferm разрешать имена хостов, используйте
функция @resolve:

saddr @resolve (my.host.foo) proto tcp dport ssh ACCEPT;
saddr @resolve ((another.host.foo third.host.foo)) proto tcp dport openvpn ACCEPT;
daddr @resolve (ipv6.google.com, AAAA) proto tcp dport http ACCEPT;

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

Второй параметр является необязательным и указывает тип записи DNS. По умолчанию - «А».

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

@cat (а, b, ...)
Объедините все параметры в одну строку.

@substr (выражение, компенсировать, длина)
Извлекает из выражения подстроку и возвращает ее. Первый символ находится со смещением 0. Если
СМЕЩЕНИЕ отрицательно, начинается так далеко от конца строки.

@length (выражение)
Возвращает длину в символах значения EXPR.

@basename (путь)
Вернуть базовое имя файла по заданному пути (File :: Spec :: splitpath).

@dirname (путь)
Возвращает имя последнего каталога для заданного пути, предполагая, что последний компонент является
имя файла (File :: Spec :: splitpath).

@ipfilter (список)
Отфильтровывает IP-адреса, которые явно не соответствуют текущему домену. Это
полезно для создания общих переменных и правил для IPv4 и IPv6:

@def $ TRUSTED_HOSTS = (192.168.0.40 2001: abcd: ef :: 40);

цепочка домена (ip ip6) INPUT {
saddr @ipfilter ($ TRUSTED_HOSTS) proto tcp dport ssh ACCEPT;
}

РЕЦЕПТЫ


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

Легко порт пересылка
Функция Ferm упрощает и ускоряет выполнение рутинных задач:

@def & FORWARD_TCP ($ proto, $ port, $ dest) = {
цепочка фильтров таблиц FORWARD интерфейс $ DEV_WORLD externalface $ DEV_DMZ daddr $ dest proto $ proto dport $ port ACCEPT;
table nat chain PREROUTING interface $ DEV_WORLD daddr $ HOST_STATIC proto $ proto dport $ port DNAT to $ dest;
}

& FORWARD_TCP (TCP, http, 192.168.1.2);
& FORWARD_TCP (TCP, SMTP, 192.168.1.3);
& FORWARD_TCP ((tcp udp), домен, 192.168.1.4);

Удаленный ферма
Если целевая машина не может работать ферма по какой-то причине (может быть, встроенное устройство
без Perl), вы можете редактировать ферма файл конфигурации на другом компьютере и пусть ферма
сгенерируйте там сценарий оболочки.

Пример для OpenWRT:

ferm --remote --shell mywrt / ferm.conf> mywrt / firewall.user
chmod + x mywrt / firewall.user
scp mywrt / firewall.user mywrt.local.net: / Etc /
ssh mywrt.local.net /etc/firewall.user

ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ


--noexec Не выполняйте Iptables(8) команды, но вместо этого пропустите. Таким образом вы можете
проанализировать ваши данные, использовать --линии для просмотра вывода.

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

--линии Покажите строки брандмауэра, которые были созданы на основе правил. Они будут показаны
непосредственно перед их выполнением, поэтому, если вы получите сообщения об ошибках от Iptables(8)
и т.д., вы можете увидеть, какое правило вызвало ошибку.

- интерактивный
Примените правила брандмауэра и попросите пользователя подтвердить. Возврат к
предыдущий набор правил, если в течение 30 секунд нет действительного ответа пользователя (см.
- тайм-аут). Это полезно для удаленного администрирования межсетевого экрана: вы можете протестировать
правила, не боясь заблокировать себя.

- тайм-аут S If - интерактивный используется, затем откатиться, если нет действительного ответа пользователя
после этого количества секунд. По умолчанию 30.

--Помогите Показать краткий список доступных параметров командной строки.

--версия Показывает номер версии программы.

--быстро Включить быстрый режим: ferm генерирует iptables-сохранить(8) файл и устанавливает его
iptables-восстановление(8). Это намного быстрее, потому что Ferm вызывает Iptables(8)
по умолчанию один раз для каждого правила.

Быстрый режим включен по умолчанию, так как ферма 2.0, отказавшись от этой опции.

--медленный Отключить быстрый режим, т.е. запустить Iptables(8) для каждого правила и не используйте
iptables-восстановление(8).

--оболочка Создайте сценарий оболочки, который вызывает iptables-восстановление(8) и распечатывает его.
Подразумевает --fast --lines.

--дистанционный пульт Сгенерируйте правила для удаленной машины. Подразумевает --noexec и --линии. Может быть
в сочетании с --оболочка.

--домен {ip | ip6}
Обрабатывать только указанный домен. ферма вывод может быть пустым, если домен
не настроен во входном файле.

--def '$ имя = значение'
Заменить переменную, определенную в файле конфигурации.

Используйте ferm онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

Команды Linux

Ad




×
Реклама
❤️Совершайте покупки, бронируйте или заказывайте здесь — никаких затрат, что помогает поддерживать бесплатность услуг.