[sisyphus] Q: Куда сейчас идейно правильно вписывать маскарадинг?

Michael A. Kangin =?iso-8859-1?q?mak_=CE=C1_rsmu=2Eru?=
Ср Авг 6 10:51:18 MSD 2008


В сообщении от Wednesday 06 August 2008 09:53:42 Dmitriy Kruglikov написал(а):

> > А у меня на всех рутерах традиционно файрвол поднимается скриптом. Ибо
> > очень
> > много правил генерится в циклах, с подстановками переменных...
>
> Однажды, когда я начал заблуждаться в своих скриптах с кучей подстановок,
> я взял огромный рашпиль, маны, трубку-воскурку для манов и задумался ...
> Как оказалось, масса правил заменилась одной строкой...
> Например, вместо обработки каждого нового PPP соединения
> я написал правила типа
> -i ppp+ и далее по тексту ...

Да, где можно, это используется, но когда для каждого ppp требуется 
индивидуальный подход? Реальный случай: в зависимости от юзера, стучащегося в 
VPN, давать доступ на разные машины в сети и порты.

> И все работало точно так же, но управлялось гораздо проще ...
> Опять же, много правил можно убрать, если применить
> -p icmp -m state --state RELATED,ESTABLISHED

Без этого ни куда, да...

> для уже открытых соединений ...
> И быстрее, и проще для глаз и мозга ...

Избранное: 
--------------
[ -r $ADDR_FILE ] && {
        grep -E "^([0-9]{1,3}\.){3}[0-9]{1,3}[[:space:]]*([0-9a-fA-F]{2}\:){5}
[0-9a-fA-F]{2}" $ADDR_FILE | \
        tr -s ';\t' '# \n' | cut -f1 -d '#' | cut -f1,2,4 -d " " |grep " 1$" | 
\
        while read ALLOWED_ADDR
            do
                ALLOWED_ADDR_MAC=`echo $ALLOWED_ADDR | cut -f2 -d' '`
                ALLOWED_ADDR_IP=`echo $ALLOWED_ADDR | cut -f1 -d' '`
                ${IPT} -I check_allowed -s $ALLOWED_ADDR_IP -m 
mac --mac-source $ALLOWED_ADDR_MAC -j RETURN
                ${IPT} -t mangle -A traf_out -s $ALLOWED_ADDR_IP -j RETURN
                ${IPT} -t mangle -A traf_in -d $ALLOWED_ADDR_IP -j RETURN
            done
} || {
        echo "WARNING! Can't read ${ADDR_FILE}, access closed for all."
}
---------------------
читаем пару IP/MAC из файла клиентов, и, у кого разрешён выход в интернет, 
ставим правило соответствия IP/MAC и правила для подсчета трафика на mangle


-------------------
for IFACE in $INT_IFACE; do
        for NET in `get_subnets_by_iface $IFACE`; do
                ${IPT} -A check_addr -i $IFACE -s $NET -j RETURN
                for EIFACE in $EXT_IFACE; do
                        ${IPT} -A check_addr -i $EIFACE -s $NET -j mism_addr
                done
        done
done
-----------------
Боремся со спуфингом;

ну и банальное
for NET in $OUR_NETS; do
        ${IPT} -A tcp_packets -p tcp -s $NET --dport 22 -j ACCEPT
done


Как это реализовать на уровне статической таблицы правил? Абсолютно 
непереносимой к тому же между рутерами.

-- 
wbr, Michael A. Kangin


Подробная информация о списке рассылки Sisyphus