[Comm] iptables: покритикуйте правила
Eugene Prokopiev
=?iso-8859-1?q?john_=CE=C1_rmts=2Edonpac=2Eru?=
Чт Май 13 13:19:38 MSD 2004
Здравствуйте!
Покритикуйте, пожалуйста, следующий набор правил iptables на предмет
возможных проблем:
#!/bin/sh
# Переменные
EXTERNAL_DEVICE="eth0"
EXTERNAL_ADDRESS=some_ip
INTERNAL_DEVICE="eth1"
LOCAL_DEVICE="lo"
IPTABLES="/sbin/iptables"
# Сбрасываем все в 0
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -F
$IPTABLES -t nat -X
# Правила по умолчанию
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
# Биллинг
$IPTABLES -A FORWARD -j ULOG --ulog-nlgroup 1 --ulog-qthreshold 50
--ulog-prefix forward
$IPTABLES -A INPUT -j ULOG --ulog-nlgroup 1 --ulog-qthreshold 50
--ulog-prefix input
$IPTABLES -A OUTPUT -j ULOG --ulog-nlgroup 1 --ulog-qthreshold 50
--ulog-prefix output
# Цепочки - цели всех правил. То, что отвергается, пишется в лог
$IPTABLES -N inet_input_allowed
$IPTABLES -A inet_input_allowed -j ACCEPT
$IPTABLES -N inet_input_rejected
$IPTABLES -A inet_input_rejected -m limit --limit 3/minute --limit-burst
6 -j LOG --log-prefix "INET INPUT REJECTED: "
$IPTABLES -A inet_input_rejected -j DROP
$IPTABLES -N forward_allowed
$IPTABLES -A forward_allowed -j ACCEPT
$IPTABLES -N forward_rejected
$IPTABLES -A forward_rejected -m limit --limit 3/minute --limit-burst 6
-j LOG --log-prefix "FORWARD REJECTED: "
$IPTABLES -A forward_rejected -j DROP
# То, что открыто для входящих пакетов. Разрешены все TCP-пакеты, не
пытающиеся открыть новое соединение (кроме ssh), все ICMP и некоторые
UDP (для dns и time)
$IPTABLES -A INPUT ! -i $EXTERNAL_DEVICE -j inet_input_allowed
$IPTABLES -A INPUT -i $EXTERNAL_DEVICE -p TCP ! --syn -m state --state
NEW -j inet_input_rejected
$IPTABLES -A INPUT -i $EXTERNAL_DEVICE -p TCP --syn --dport 22 -j
inet_input_allowed
$IPTABLES -A INPUT -i $EXTERNAL_DEVICE -p TCP -m state --state
ESTABLISHED,RELATED -j inet_input_allowed
$IPTABLES -A INPUT -i $EXTERNAL_DEVICE -p UDP --dport 53 -j
inet_input_allowed
$IPTABLES -A INPUT -i $EXTERNAL_DEVICE -p UDP --sport 53 -j
inet_input_allowed
$IPTABLES -A INPUT -i $EXTERNAL_DEVICE -p UDP --dport 123 -j
inet_input_allowed
$IPTABLES -A INPUT -i $EXTERNAL_DEVICE -p UDP --sport 123 -j
inet_input_allowed
$IPTABLES -A INPUT -i $EXTERNAL_DEVICE -p ICMP -j inet_input_allowed
$IPTABLES -A INPUT -i $EXTERNAL_DEVICE -j inet_input_rejected
# Перебираем всех, кому разрешен NAT
for i in `/opt/scripts/make_ldap_filter.pl allowNat`
do
# Для них разрешаем все исходящие пакеты и все входящие, кроме
# ТCP-пакетов, пытающихся открыть новое соединение.
# Еще запрещаем ICMP request
$IPTABLES -t nat -A POSTROUTING -s $i -j SNAT --to-source
$EXTERNAL_ADDRESS
$IPTABLES -A FORWARD -s $i -j forward_allowed
$IPTABLES -A FORWARD -p TCP --syn -d $i -j forward_rejected
$IPTABLES -A FORWARD -p ICMP --icmp-type 8 -d $i -j forward_rejected
$IPTABLES -A FORWARD -d $i -j forward_allowed
#$IPTABLES -A FORWARD -j forward_rejected
done
# Перенаправляем всех, кого надо, на squid
for i in `/opt/scripts/make_ldap_filter.pl forceProxy`
do
$IPTABLES -t nat -A PREROUTING -s $i -p TCP --dport 80 -j REDIRECT
--to-port 3128
done
Нет ли каких-нибудь глупых ошибок?
--
С уважением, Прокопьев Евгений
Подробная информация о списке рассылки community