28 февраля 2009 г. 21:37 пользователь Alexey Boyko <ale...@boyko.km.ua> написал:
>>  AB> А я бы не придумал лучше. ferm дишь транслирует правила с некого
>>  AB> иерархического языка на язык таблиц iptables. по сути ferm то же
>>  AB> самое, что и iptables, но позволяет групировать правила по общим
>>  AB> полям. можно на шелле делать также, только язык ferm красивее шелла
>>
>> Эээ... А (поскольку мне, в общем, лениво читать доку на то, что мне
>> вроде как не необходимо) можно привести _реальный_ пример, где ferm, по
>> твоему мнению, выигрывает у прямого применения iptables?
>
> Пример из хелпа по ferm:
>
> текст
>           chain (INPUT OUTPUT) {
>               proto (udp tcp) ACCEPT;
>           }
>
> разворачивается им в:
>
>          iptables -A INPUT -p tcp -j ACCEPT
>          iptables -A OUTPUT -p tcp -j ACCEPT
>          iptables -A INPUT -p udp -j ACCEPT
>          iptables -A OUTPUT -p udp -j ACCEPT
>
> Мне первое читать проще. А вам?

А мне представляется, что это неправильное правило.

> Подобные сокращения он может делать и в других местах.
>
> table filter {
>    chain INPUT {
>        policy DROP;
>
>        mod state state INVALID DROP;
>        mod state state (ESTABLISHED RELATED) ACCEPT;
>
>        interface lo ACCEPT;
>
>        proto icmp ACCEPT;
>
>        proto tcp dport (ssh smtp ftp http) ACCEPT;
>    }
> }
>
> разворачивается в:
>
> iptables -A INPUT -P DROP
> iptables -A INPUT -m state --state INVALID -j DROP
> iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
> iptables -A INPUT -i lo -j ACCEPT
> iptables -A INPUT -p icmp -j ACCEPT
> iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
> iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
> iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
> iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
>
> Лично мне первый вариант читать проще.

Полезного тут только разворачивание списка портов в несколько
отдельных команд.  Но читать мне как раз удобнее вариант с прямыми
командами - в варианте ferm трудно разобрать, где что (где предикат,
где его параметры).

Ну и да, я бы предпочел генератор файла для iptables-restore.  Который
"все или ничего".

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

Угу.  Вывод: оно мне не полезно.

> Выразительных возможностей ferm нисколько не ослабляет, так как весь его язык
> однозначно транслируется в iptables.

"Не ослабляет" - это если есть обратная трансляция.  Если любое
выражение на iptables можно перевести в выражение на ferm. По крайней
мере - не усложняя восприятие при этом.

Ответить