Я вполне хорошо знаю и умею пользоваться 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:
Немає коментарів:
Дописати коментар