lug-bg: Страннотии с firewall-a

2006-03-08 Thread Vladimir Vitkov
Здрасти банда (no offence pls),

имам следния сетъп
net -> pppoe (ppp0) -> linux (forwarding/masq/snat/dnat) -> eth0 -> clients 
(ludnica)

1) Това е локална мрежа
2) това е студентско изпълнение
3) само познати сме тези които делим конекцията

По мое скромно мнение машината би трябвало да е затворена от текущия firewall 
но не е

Предистория:
Днес си играх с Privoxy и съвсем случайно прегледах /var/log/mailog и там видях
отхвърлен релаъ до yahoo. реших да проверя и се оказа че порт 25 е достъпен 
отвън
въпреки че е изрично забранен. Слдва самият firewall.
Забелейки:
Изграден е на база netfilter.org + easy firewall generator.
Полиците за веригите се сетват накрая (проблеми със стар хардуер)

 FW START =
# cat /etc/rc.d/rc.fire
#!/bin/bash

#conf
SYSCTL="/sbin/sysctl -w"
IPT="/usr/sbin/iptables"
IPTS="/usr/sbin/iptables-save"
IPTR="/usr/sbin/iptables-restore"
INET_IFACE="ppp0"
INET_ADDRESS="`/sbin/ifconfig $INET_IFACE | grep addr: | cut -d: -f2 | cut -d" 
" -f1`"
EXTERN_PORTS="53 80   "
LOCAL_IFACE="eth0"
LOCAL_IP=""
LOCAL_NET=""
LOCAL_BCAST=" /etc/sysconfig/iptables
echo "done"
exit 0
elif [ "$1" = "restore" ]
then
echo -n "Restoring firewall from /etc/sysconfig/iptables ... "
$IPTR < /etc/sysconfig/iptables
echo "done"
exit 0
fi

echo "Loading kernel modules ..."
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc

#tuning some params
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout
echo "1200" > /proc/sys/net/ipv4/tcp_keepalive_time
echo "2048 65000" > /proc/sys/net/ipv4/ip_local_port_range
echo "2" > /proc/sys/net/ipv4/tcp_synack_retries
echo "3" > /proc/sys/net/ipv4/tcp_syn_retries
echo "2048" > /proc/sys/net/ipv4/tcp_syn_retries
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle
else
$SYSCTL net.ipv4.ip_forward="1"
$SYSCTL net.ipv4.tcp_syncookies="1"
$SYSCTL net.ipv4.conf.all.rp_filter="1"
$SYSCTL net.ipv4.icmp_echo_ignore_broadcasts="1"
$SYSCTL net.ipv4.conf.all.accept_source_route="0"
$SYSCTL net.ipv4.conf.all.secure_redirects="1"
$SYSCTL net.ipv4.conf.all.log_martians="1"
$SYSCTL net.ipv4.tcp_fin_timeout="15"
$SYSCTL net.ipv4.tcp_keepalive_time="1200"
$SYSCTL net.ipv4.ip_local_port_range="2048 65000"
$SYSCTL net.ipv4.tcp_synack_retries="2"
$SYSCTL net.ipv4.tcp_syn_retries="3"
$SYSCTL net.ipv4.tcp_max_syn_backlog="2048"
$SYSCTL net.ipv4.tcp_tw_reuse="1"
$SYSCTL net.ipv4.tcp_tw_recycle="1"
$SYSCTL net.ipv4.conf.all.arp_ignore="1"
fi

echo "Flushing Tables ..."
# Reset Default Policies
$IPT -P INPUT ACCEPT
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
# Flush all rules
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
# Erase all non-default chains
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

if [ "$1" = "stop" ]
then
if [ "$SYSCTL" = "" ]
then
# Double security
echo "0" > /proc/sys/net/ipv4/ip_forward
else
$SYSCTL net.ipv4.ip_forward="0"
fi
echo "Firewall completely flushed! Not routing."
exit 0
fi

# Set Policies

$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT

echo "Create and populate chains ..."
$IPT -N bad_packets
$IPT -N bad_tcp_packets
$IPT -N protections
$IPT -N udp_inbound
$IPT -N udp_outbound
$IPT -N tcp_inbound
$IPT -N tcp_outbound

# populating invalid/broken/shit
$IPT -A bad_packets -p ALL -i $INET_IFACE -s $LOCAL_NET -j DROP
$IPT -A bad_packets -p ALL -m state --state INVALID -j DROP
$IPT -A bad_packets -p tcp -j bad_tcp_packets
$IPT -A bad_packets -p ALL -j RETURN

# Portscans mbuahahahah
$IPT -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j REJECT 
--reject-with
icmp-host-unreachable
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL NONE -j REJECT
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL ALL -j REJECT
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL FIN,URG,PSH -j REJECT
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j REJECT
$IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,RST SYN,RST -j REJECT
$IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,FIN SYN,FIN -j REJECT
$IPT -A bad_tcp_packets -p tcp -j protections
$IPT -A bad_tcp_packets -p tcp -j RETURN

# Protections from rusty russel
$IPT -A protections -p tcp --

Re: lug-bg: Страннотии с firewall-a

2006-03-08 Thread Ivaylo Toshev

Здрасти,

Първо - изпол.зването на разни такива скриптове за изи конфигуриране на 
защитна стена е много съмнително какво дава като резултат, още повече 
ако не си съвсем наясно какво прави този скрипт.
Не мога сега да го проследя, а не искам да го изпълнявам за да видя 
какво точно прави.

Така че - най-добре е да пратиш резултата, т.е.

iptables -L -n

iptables -t nat -L -n

Vladimir Vitkov написа:

Здрасти банда (no offence pls),

имам следния сетъп
net -> pppoe (ppp0) -> linux (forwarding/masq/snat/dnat) -> eth0 -> clients 
(ludnica)

1) Това е локална мрежа
2) това е студентско изпълнение
3) само познати сме тези които делим конекцията

По мое скромно мнение машината би трябвало да е затворена от текущия firewall 
но не е

Предистория:
Днес си играх с Privoxy и съвсем случайно прегледах /var/log/mailog и там видях
отхвърлен релаъ до yahoo. реших да проверя и се оказа че порт 25 е достъпен 
отвън
въпреки че е изрично забранен. Слдва самият firewall.
Забелейки:
Изграден е на база netfilter.org + easy firewall generator.
Полиците за веригите се сетват накрая (проблеми със стар хардуер)

 FW START =
# cat /etc/rc.d/rc.fire
#!/bin/bash

#conf
SYSCTL="/sbin/sysctl -w"
IPT="/usr/sbin/iptables"
IPTS="/usr/sbin/iptables-save"
IPTR="/usr/sbin/iptables-restore"
INET_IFACE="ppp0"
INET_ADDRESS="`/sbin/ifconfig $INET_IFACE | grep addr: | cut -d: -f2 | cut -d" " 
-f1`"
EXTERN_PORTS="53 80   "
LOCAL_IFACE="eth0"
LOCAL_IP=""
LOCAL_NET=""
LOCAL_BCAST=" /etc/sysconfig/iptables
echo "done"
exit 0
elif [ "$1" = "restore" ]
then
echo -n "Restoring firewall from /etc/sysconfig/iptables ... "
$IPTR < /etc/sysconfig/iptables
echo "done"
exit 0
fi

echo "Loading kernel modules ..."
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc

#tuning some params
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout
echo "1200" > /proc/sys/net/ipv4/tcp_keepalive_time
echo "2048 65000" > /proc/sys/net/ipv4/ip_local_port_range
echo "2" > /proc/sys/net/ipv4/tcp_synack_retries
echo "3" > /proc/sys/net/ipv4/tcp_syn_retries
echo "2048" > /proc/sys/net/ipv4/tcp_syn_retries
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle
else
$SYSCTL net.ipv4.ip_forward="1"
$SYSCTL net.ipv4.tcp_syncookies="1"
$SYSCTL net.ipv4.conf.all.rp_filter="1"
$SYSCTL net.ipv4.icmp_echo_ignore_broadcasts="1"
$SYSCTL net.ipv4.conf.all.accept_source_route="0"
$SYSCTL net.ipv4.conf.all.secure_redirects="1"
$SYSCTL net.ipv4.conf.all.log_martians="1"
$SYSCTL net.ipv4.tcp_fin_timeout="15"
$SYSCTL net.ipv4.tcp_keepalive_time="1200"
$SYSCTL net.ipv4.ip_local_port_range="2048 65000"
$SYSCTL net.ipv4.tcp_synack_retries="2"
$SYSCTL net.ipv4.tcp_syn_retries="3"
$SYSCTL net.ipv4.tcp_max_syn_backlog="2048"
$SYSCTL net.ipv4.tcp_tw_reuse="1"
$SYSCTL net.ipv4.tcp_tw_recycle="1"
$SYSCTL net.ipv4.conf.all.arp_ignore="1"
fi

echo "Flushing Tables ..."
# Reset Default Policies
$IPT -P INPUT ACCEPT
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
# Flush all rules
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
# Erase all non-default chains
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

if [ "$1" = "stop" ]
then
if [ "$SYSCTL" = "" ]
then
# Double security
echo "0" > /proc/sys/net/ipv4/ip_forward
else
$SYSCTL net.ipv4.ip_forward="0"
fi
echo "Firewall completely flushed! Not routing."
exit 0
fi

# Set Policies

$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT

echo "Create and populate chains ..."
$IPT -N bad_packets
$IPT -N bad_tcp_packets
$IPT -N protections
$IPT -N udp_inbound
$IPT -N udp_outbound
$IPT -N tcp_inbound
$IPT -N tcp_outbound

# populating invalid/broken/shit
$IPT -A bad_packets -p ALL -i $INET_IFACE -s $LOCAL_NET -j DROP
$IPT -A bad_packets -p ALL -m state --state INVALID -j DROP
$IPT -A bad_packets -p tcp -j bad_tcp_packets
$IPT -A bad_packets -p ALL -j RETURN

# Portscans mbuahahahah
$IPT -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j REJECT 
--reject-with
icmp-host-unreachable
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL NONE -j REJECT
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL ALL -j REJECT
$IPT -A bad_tcp_packets -p 

Re: lug-bg: Страннотии с firewall-a

2006-03-08 Thread Nikola Antonov
On Thursday 09 March 2006 02:19, Vladimir Vitkov wrote:
Здравей,

Ето как изглеждат поне на пръв поглед нещата, след като се изчисти всичко, 
което може да те разсейва:

1. Политика по подразбиране за INPUT веригата - ACCEPT.

> # Set Policies
>
> $IPT -P INPUT ACCEPT

2. За входящи връзки по tcp и udp създаваш нови вериги, съответно tcp_inbound 
и udp_inbound.

> $IPT -N udp_inbound
> $IPT -N tcp_inbound

3. В тези вериги се случва следното: всички връзки без оглед на статус, порт, 
т.н. се пропускат.

> # incoming udp services
> for PORT in $EXTERN_PORTS ; do
> $IPT -A udp_inbound -p UDP -s 0/0 --dport $PORT -j ACCEPT
> done
> $IPT -A udp_inbound -p UDP -j RETURN
>
> $IPT -A udp_outbound -p UDP -s 0/0 -j ACCEPT
>
> # incoming tcp services
> for PORT in $EXTERN_PORTS ; do
> $IPT -A tcp_inbound -p TCP -s 0/0 --destination-port $PORT -j
> ACCEPT done
> $IPT -A tcp_inbound -p TCP -j RETURN

4. Всички входящи връзки без оглед на статус и порт влизат във веригите 
tcp_inbound и udp_inbound, където се случва онова от точка 3.

>
> $IPT -A INPUT -p TCP -i $INET_IFACE -j tcp_inbound
> $IPT -A INPUT -p UDP -i $INET_IFACE -j udp_inbound

Кажете, ако пропускам нещо, но този firewall не е направен, за да спира, а да 
пропуска.

-- 
Linux-BG.org
--
System Administrator
--
tel: +359 2 976 13 02
mobile: +359 889 90 99 11
--
Public GnuPG key at http://wwwkeys.pgp.net
Fingerprint: AD64 2468 0AB4 B298 E7E3 92DA 15F5 7AC5 A05E 0F63


Re: lug-bg: Страннотии с firewall-a

2006-03-09 Thread Nikola Antonov
On Thursday 09 March 2006 09:42, Nikola Antonov wrote:

Направи ми впечатление, че в променливата $PORT си посочил конкретни портове 
за пропускане, но не видях някъде да имаш "-j DROP" за всичко останало. Защо 
не промениш долното правило да прилага действие DROP вместо RETURN? 

> > $IPT -A tcp_inbound -p TCP -j RETURN

Това може и да оправи нещата.

Принципно аз не съм фен на подобни решения. За мен е винаги много съмнителен 
от гледна точка на функционалност и оптимизация firewall, който още от самото 
начало не задава политика по подразбиране DROP на всички вериги. Простата 
логика предполага първо да се блокира всичко на ниво политика и после да се 
разрешат изрично исканите услуги. Само така може да сме сигурни, че от 
плетеницата в правила няма да "изтече" нещо. А и по този начин се постига 
максумим ефективност с минимум код.

-- 
Linux-BG.org
--
System Administrator
--
tel: +359 2 976 13 02
mobile: +359 889 90 99 11
--
Public GnuPG key at http://wwwkeys.pgp.net
Fingerprint: AD64 2468 0AB4 B298 E7E3 92DA 15F5 7AC5 A05E 0F63


Re: lug-bg: Страннотии с firewall-a

2006-03-09 Thread Georgi Alexandrov
Nikola Antonov wrote:
> On Thursday 09 March 2006 02:19, Vladimir Vitkov wrote:
> Здравей,
> 
> Ето как изглеждат поне на пръв поглед нещата, след като се изчисти всичко, 
> което може да те разсейва:
> 
> 1. Политика по подразбиране за INPUT веригата - ACCEPT.
> 
> 
>># Set Policies
>>
>>$IPT -P INPUT ACCEPT
> 
> 
> 2. За входящи връзки по tcp и udp създаваш нови вериги, съответно tcp_inbound 
> и udp_inbound.
> 
> 
>>$IPT -N udp_inbound
>>$IPT -N tcp_inbound
> 
> 
> 3. В тези вериги се случва следното: всички връзки без оглед на статус, порт, 
> т.н. се пропускат.
> 
> 
>># incoming udp services
>>for PORT in $EXTERN_PORTS ; do
>>$IPT -A udp_inbound -p UDP -s 0/0 --dport $PORT -j ACCEPT
>>done
>>$IPT -A udp_inbound -p UDP -j RETURN
>>
>>$IPT -A udp_outbound -p UDP -s 0/0 -j ACCEPT
>>
>># incoming tcp services
>>for PORT in $EXTERN_PORTS ; do
>>$IPT -A tcp_inbound -p TCP -s 0/0 --destination-port $PORT -j
>>ACCEPT done
>>$IPT -A tcp_inbound -p TCP -j RETURN
> 
> 
> 4. Всички входящи връзки без оглед на статус и порт влизат във веригите 
> tcp_inbound и udp_inbound, където се случва онова от точка 3.
> 
> 
>>$IPT -A INPUT -p TCP -i $INET_IFACE -j tcp_inbound
>>$IPT -A INPUT -p UDP -i $INET_IFACE -j udp_inbound
> 
> 
> Кажете, ако пропускам нещо, но този firewall не е направен, за да спира, а да 
> пропуска.
> 

Здравей,

аз лично накрая виждам това:
"
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
 FW END   ="


-- 
regards,
Georgi Alexandrov

Key Server = http://pgp.mit.edu/ :: KeyID = 37B4B3EE
Key Fingerprint = E429 BF93 FA67 44E9 B7D4  F89E F990 01C1 37B4 B3EE




signature.asc
Description: OpenPGP digital signature


Re: lug-bg: Страннотии с firewall-a

2006-03-09 Thread Georgi Alexandrov
Nikola Antonov wrote:
> Принципно аз не съм фен на подобни решения. За мен е винаги много съмнителен 
> от гледна точка на функционалност и оптимизация firewall, който още от самото 
> начало не задава политика по подразбиране DROP на всички вериги.

Дали е в началото или края май няма значение ;-)

> Простата 
> логика предполага първо да се блокира всичко на ниво политика и после да се 
> разрешат изрично исканите услуги.

Абе май не е точно така, първо пакетите преминават през правилата на
дадена верига и чак след това ако стигнат края те се приемат или
изпускат според политиката на веригата.

> Само така може да сме сигурни, че от 
> плетеницата в правила няма да "изтече" нещо. А и по този начин се постига 
> максумим ефективност с минимум код.
> 

За максимум ефективност можем да поспорим, зависи от натовареността. В
някои ситуации да замесиш и layer 4 (OSI) ти излиза малко солено от към
хардуерни ресурси.

Представи си един *МНОГО* натоварен уеб сървър (знам, че linux-bg.org не
попада в тази категория) със зареден ip_conntrack модул следящ абсолютно
всички връзки, еми ти няма да смогнеш да и купуваш RAM на тази
машина/машини. Има вариант за raw таблица и NOTRACK target но там нещата
са експериментални и ефекта може би не е много сигурен.
В някои случаи просто не можеш да си позволиш DROP политики на веригите.

-- 
regards,
Georgi Alexandrov

Key Server = http://pgp.mit.edu/ :: KeyID = 37B4B3EE
Key Fingerprint = E429 BF93 FA67 44E9 B7D4  F89E F990 01C1 37B4 B3EE




signature.asc
Description: OpenPGP digital signature


Re: lug-bg: Страннотии с firewall-a

2006-03-09 Thread Nikola Antonov
On Thursday 09 March 2006 18:32, Georgi Alexandrov wrote:
> Здравей,
>
> аз лично накрая виждам това:
> "
> $IPT -P INPUT DROP
> $IPT -P OUTPUT DROP
> $IPT -P FORWARD DROP
>  FW END   ="

Да, съжалявам, пропуснал съм го.

-- 
Linux-BG.org
--
System Administrator
--
tel: +359 2 976 13 02
mobile: +359 889 90 99 11
--
Public GnuPG key at http://wwwkeys.pgp.net
Fingerprint: AD64 2468 0AB4 B298 E7E3 92DA 15F5 7AC5 A05E 0F63


lug-bg: Re: lug-bg: Страннотии с firewall-a

2006-03-08 Thread George Akabaliev
On Thursday 09 March 2006 02:19, Vladimir Vitkov wrote:
> # populating invalid/broken/shit
> $IPT -A bad_packets -p ALL -i $INET_IFACE -s $LOCAL_NET -j DROP
> $IPT -A bad_packets -p ALL -m state --state INVALID -j DROP
> $IPT -A bad_packets -p tcp -j bad_tcp_packets
> $IPT -A bad_packets -p ALL -j RETURN
>
> # Portscans mbuahahahah
> $IPT -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j REJECT
> --reject-with icmp-host-unreachable
> $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL NONE -j REJECT
> $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL ALL -j REJECT
> $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL FIN,URG,PSH -j REJECT
> $IPT -A bad_tcp_packets -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j
> REJECT $IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,RST SYN,RST -j REJECT
> $IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,FIN SYN,FIN -j REJECT $IPT
> -A bad_tcp_packets -p tcp -j protections
> $IPT -A bad_tcp_packets -p tcp -j RETURN
>
> # Protections from rusty russel
> $IPT -A protections -p tcp --syn -m limit --limit 5/s -j ACCEPT
> $IPT -A protections -p icmp --icmp-type echo-request -m limit --limit 5/s
> -j ACCEPT $IPT -A protections -p ALL -j RETURN
> # efg
> $IPT -A protections --fragment -p ICMP -j REJECT
> $IPT -A protections -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
> $IPT -A protections -j RETURN
>
> # incoming udp services
> for PORT in $EXTERN_PORTS ; do
> $IPT -A udp_inbound -p UDP -s 0/0 --dport $PORT -j ACCEPT
> done
> $IPT -A udp_inbound -p UDP -j RETURN
>
> $IPT -A udp_outbound -p UDP -s 0/0 -j ACCEPT
>
> # incoming tcp services
> for PORT in $EXTERN_PORTS ; do
> $IPT -A tcp_inbound -p TCP -s 0/0 --destination-port $PORT -j
> ACCEPT done
> $IPT -A tcp_inbound -p TCP -j RETURN
>
> # outgoing tcp services
> $IPT -A tcp_outbound -p TCP -s 0/0 -j ACCEPT
>
> echo "Process INPUT chain ..."
> # Start feeding the pig
> $IPT -A INPUT -p ALL -i $LO_IFACE -j ACCEPT
> $IPT -A INPUT -p ALL -j bad_packets
> # local access
> $IPT -A INPUT -p ALL -i $LOCAL_IFACE -s $LOCAL_NET   -j
> ACCEPT $IPT -A INPUT -p ALL -i $LOCAL_IFACE -d $LOCAL_BCAST
> -j ACCEPT
>
> $IPT -A INPUT -p ALL -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j
> ACCEPT
>
> $IPT -A INPUT -p TCP -i $INET_IFACE -j tcp_inbound
> $IPT -A INPUT -p UDP -i $INET_IFACE -j udp_inbound
>
> $IPT -A INPUT -m pkttype --pkt-type broadcast -j DROP
>
> echo "Process FORWARD chain ..."
> $IPT -A FORWARD -p ALL -j bad_packets
> $IPT -A FORWARD -p tcp -i $LOCAL_IFACE -j tcp_outbound
> $IPT -A FORWARD -p udp -i $LOCAL_IFACE -j udp_outbound
> $IPT -A FORWARD -p ALL -i $LOCAL_IFACE -j ACCEPT
> $IPT -A FORWARD -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j
> ACCEPT
>
> echo "Process OUTPUT chain ..."
> $IPT -A OUTPUT -m state -p icmp --state INVALID -j DROP
> $IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
> $IPT -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT
> $IPT -A OUTPUT -p ALL -s $LOCAL_IP -j ACCEPT
> $IPT -A OUTPUT -p ALL -o $LOCAL_IFACE -j ACCEPT
> $IPT -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT
>
> echo "Load rules for nat table ..."
> ## DNAT's
> $IPT -t nat -A PREROUTING -p tcp -i $INET_IFACE --dport  -j DNAT --to
> :
>
> ## MASQ & SNAT
> $IPT -t nat -A POSTROUTING -s  -o $INET_IFACE -j SNAT --to-source
> $INET_ADDRESS $IPT -t nat -A POSTROUTING -s   -o $INET_IFACE -j
> MASQUERADE
>
> echo "Load rules for mangle table ..."
> $IPT -t mangle -A PREROUTING -i $LOCAL_IFACE -j TTL --ttl-inc 1
> $IPT -t mangle -A POSTROUTING -o $LOCAL_IFACE -j TTL --ttl-inc 1
>
> $IPT -t mangle -A PREROUTING -i $INET_IFACE -j TTL --ttl-inc 1
> $IPT -t mangle -A POSTROUTING -o $INET_IFACE -j TTL --ttl-set 128
>
> # mangle MAC protection
> $IPT -t mangle -A PREROUTING -i $LOCAL_IFACE -s  -m mac --mac-source !
>  -j DROP
>
> $IPT -P INPUT DROP
> $IPT -P OUTPUT DROP
> $IPT -P FORWARD DROP
>  FW END   =
>
> Моля за за съвети/забележки и т.н.
> Да знам че е селско да разчитам ня някакви скриптове за такова нещо но
> самият FW е сглобяван преди толкова време и толкова пъти е надграждан на
> парче че не ми се мисли. Конкретно в случая търся помощ по следните
> въпроси:
> 1) Защо по дяволите порт който би трябвали да е брутално затворен не е?
> 2) как конекция в състояние NEW минава пре firewall който няма правило от
> типа  "-m state NEW -j ACCEPT"??
Като попрегледах набързо, без да се задълбочавам, струва ми се че всички 
нормални TCP конекции, независимо от порта, минават по следния път:
[bad_packets] => [bad_tcp_packets] => [protections] => ACCEPT(още с първото 
правило модул limit)
В действителност рутера ти е отворен, а не затворен за света!

Георги Акабалиев