Не стал изучать конфигурацию Firestarter-a, написал небольшой скрипт iptables:
# IPTables Configuration.
IPTABLES="/sbin/iptables"
# Internet Configuration.
INET_IFACE="eth1"
INET_IFACE="usb0"
# LAN Configuration.
#LAN_IFACE="eth0"
# Localhost Configuration.
LO_IFACE="lo"
LO_IP="127.0.0.1"
LOOPBACK="127.0.0.0/8"
DNS="192.168.X.Y"
DNS="от второго провайдера"
case "$1" in
start)
echo "Starting iptables"
# Required proc configuration
echo "1" > /proc/sys/net/ipv4/ip_forward
# Dropping rules
$IPTABLES -F
$IPTABLES -X
$IPTABLES -F -t nat
$IPTABLES -X -t nat
# Set policies
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
# Craeting states chains.
$IPTABLES -N allowed
$IPTABLES -F allowed
# Разрешаем прохождение statefull трафика.
$IPTABLES -A allowed -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -i $INET_IFACE -m limit --limit 1/second -j LOG --log-prefix "Bad packets from INET_IFACE"
$IPTABLES -A allowed -j DROP
# Цепочка общего разрешения
$IPTABLES -N com-allow
$IPTABLES -F com-allow
$IPTABLES -A com-allow -p tcp -j ACCEPT
$IPTABLES -A com-allow -p udp -j ACCEPT
#Разрешаем ICMP
$IPTABLES -N icmp_in
$IPTABLES -F icmp_in
$IPTABLES -A icmp_in -m conntrack --ctstate NEW -p icmp --icmp-type echo-request -j ACCEPT
$IPTABLES -A icmp_in -m conntrack --ctstate NEW -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A icmp_in -m conntrack --ctstate NEW -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPTABLES -A icmp_in -p icmp -j LOG --log-prefix "Bad ICMP"
$IPTABLES -N icmp_out
$IPTABLES -F icmp_out
$IPTABLES -A icmp_out -p icmp --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_out -m conntrack --ctstate NEW -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A icmp_out -m conntrack --ctstate NEW -p icmp --icmp-type destination-unreachable -j ACCEPT
#Creating portscan detection chains
$IPTABLES -N check_tcp
$IPTABLES -F check_tcp
$IPTABLES -A allowed -m conntrack --ctstate INVALID -m limit --limit 3/minute -j LOG --log-prefix "INVALID"
$IPTABLES -A allowed -m conntrack --ctstate INVALID -j DROP
$IPTABLES -A check_tcp -p tcp --tcp-flags SYN,ACK SYN,ACK -m conntrack --ctstate NEW \
-j REJECT --reject-with tcp-reset
$IPTABLES -A check_tcp -p tcp ! --syn -m conntrack --ctstate NEW -j LOG --log-prefix "NEW not syn"
$IPTABLES -A check_tcp -p tcp ! --syn -m conntrack --ctstate NEW -j DROP
#Цепочка INPUT
$IPTABLES -A INPUT -p tcp -j check_tcp
$IPTABLES -A INPUT -p udp --dport domain -j com-allow
$IPTABLES -A INPUT -p icmp -j icmp_in
$IPTABLES -A INPUT -i $LO_IF -d $LOOPBACK -j ACCEPT
$IPTABLES -A INPUT -j allowed
#Цепочка FPRWARD
$IPTABLES -A FORWARD -j check_tcp
$IPTABLES -A FORWARD -p icmp -j icmp_in
$IPTABLES -A FORWARD -i $INET_IFACE -p tcp -m multiport --dport 80,443,1080,8080 -j com-allow
$IPTABLES -A FORWARD -i $INET_IFACE -p tcp -m multiport --dport 25,110 -j com-allow
$IPTABLES -A FORWARD -j allowed
#Цепочка OUTPUT
$IPTABLES -A OUTPUT -j check_tcp
$IPTABLES -A OUTPUT -o $INET_IFACE -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -j icmp_out
$IPTABLES -A OUTPUT -o $LO_IFACE -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport domain -j com-allow
$IPTABLES -A OUTPUT -p tcp -m multiport --dport http,https -j com-allow
$IPTABLES -A OUTPUT -j allowed
;;
stop)
echo "Stopping iptables"
# Dropping rules
$IPTABLES -F
$IPTABLES -X
$IPTABLES -F -t nat
$IPTABLES -X -t nat
# Set policies
# All alloed
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
;;
*)
echo "Usage: /etc/init.d/iptables {start|stop}"
exit 1
;;
esac
exit 0
все работает, только нужно разобраться с DNS провайдера от безпроводной сети.