Главная > Debian/Ubuntu > Препроцессор для iptables

Препроцессор для iptables

Я вполне хорошо знаю и умею пользоваться iptables, но не могу сказать, что написание сложных правил доставляет мне удовольствие, в отличие от того же pf. GUI для iptables меня обычно либо вводят в шок (например, fwbuilder просто вынес мне мозг, предоставив писать правила для iptables, как обычно, только мышкой), либо не дают всех нужных возможностей, которые есть в iptables.

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

Чтобы вы сразу прониклись, красотой этой программы, кидаю свой конфиг /etc/ferm/ferm.conf с моего десктопного компа:

# -*- shell-script -*-
#
#  Configuration file for ferm(1).
#

table filter {
    chain INPUT {
        policy DROP;
        # connection tracking
        mod state state INVALID DROP;
        mod state state (ESTABLISHED RELATED) ACCEPT;
        # allow local packages
        interface lo ACCEPT;
        # respond to ping
        proto icmp ACCEPT;
        interface eth1 {
            mod state state NEW {
                # pdns-recursor
                proto (tcp udp) dport domain ACCEPT;
                proto tcp {
                    # ssh
                    dport ssh ACCEPT;
                    # pulseaudio
                    dport 4713 ACCEPT;
                    # mysql
                    dport 3306 ACCEPT;
                    # memcached
                    dport 11211 ACCEPT;
                }
            }
        }
    }
    chain OUTPUT {
        policy ACCEPT;
        # connection tracking
        #mod state state INVALID DROP;
        mod state state (ESTABLISHED RELATED) ACCEPT;
    }
    chain FORWARD {
        policy DROP;
        # connection tracking
        mod state state INVALID DROP;
        mod state state (ESTABLISHED RELATED) ACCEPT;
        mod state state NEW {
            interface eth1 ACCEPT;
            outerface eth1 ACCEPT;
        }
    }
}
table nat {
    chain POSTROUTING {
        outerface (ppp0 ppp1) saddr 192.168.0.0/24 MASQUERADE;
    }
}
# vim:sw=4 ts=4:

Debian/Ubuntu , , ,

DeliciousFacebookDiggRSS FeedStumbleUponTwitter
  1. StraNNicK
    16 Декабрь 2008 в 12:08 | #1

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

  2. savagex
    16 Декабрь 2008 в 12:19 | #2

    StraNNick:
    А по этому поводу можно глянуть на диаграмму из этого поста.

  3. smartly
    16 Декабрь 2008 в 14:27 | #3

    Отличный препроцессор. Пользуюсь больше года. Знание iptables не исключает, но вот я уже стал подзабывать синтаксис iptables и мыслю уже в терминах ferm. Советую ferm всем знакомым.

  4. Obivan
    16 Декабрь 2008 в 15:06 | #4

    Есть еще shorewall, тоже отличный проект.

  5. sHaggY_caT
    14 Январь 2009 в 22:58 | #5

    http://shorewall.net/

    Умеет, кстати, врапить и tc, и ip, не только iptables :)

  6. Пацамон
    21 Март 2009 в 18:57 | #6

    УГ детектед. Использовать дополнительные сущности для генерации правил таблеса на десктопе???

  7. 21 Март 2009 в 22:19 | #7

    Пацамон
    А почему бы и нет? Если это удобно и повышает эффективность труда.

  1. Пока что нет уведомлений.