Freesco, NND, CDN, EOS
http://forum.freesco.pl/

firewall Zciacha, czy moglbys zajrzec czy dobrze??
http://forum.freesco.pl/viewtopic.php?f=22&t=6438
Strona 1 z 1

Autor:  czerwo [ sobota, 15 stycznia 2005, 10:55 ]
Tytuł:  firewall Zciacha, czy moglbys zajrzec czy dobrze??

Jako ze posaidam w serwerze 1xneo; 2xeth to firewall Zciacha uniemozliwial mi ruch na eth1 wczesniej zrobilem to tak iz po odpaleniu firewall odpalelem plik rc.masq, no ale postanwilem pozmieniac firewall. Wszystko chodzi, nie zrobilem tylko forwardowania portow, tylko mam prosbe do Zciecha: Czy mogłbyś to sprawdzic i skrytykowac :P

A wiec plik rc.firewall
: [/] [] ()
#!/bin/sh
# rc.firewall 0.1f Zciech
# 17.04.2004, poprawka 08.09.2004

. /etc/firewall/firewall.config

i="iptables"
#i="echo iptables"

# Ladujemy moduly
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc
if [ -e /proc/sys/net/ipv4/tcp_ecn ];then
    echo 0 > /proc/sys/net/ipv4/tcp_ecn
fi
echo 1> /proc/sys/net/ipv4/ip_forward
echo 1> /proc/sys/net/ipv4/conf/lo/rp_filter
echo 1> /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 1> /proc/sys/net/ipv4/conf/eth1/rp_filter

$i -F
$i -F -t nat
if [ "$1" = stop ]; then
    echo "Firewall wylaczony...                   DONE"
    $i -P INPUT ACCEPT
    $i -P FORWARD ACCEPT
    $i -P OUTPUT ACCEPT
    $i -t nat -A POSTROUTING  -s $NETWORK1/$NETMASK1 -j MASQUERADE
    $i -t nat -A POSTROUTING  -s $NETWORK2/$NETMASK2 -j MASQUERADE
exit; fi

$i -P INPUT DROP
$i -P FORWARD DROP
$i -P OUTPUT ACCEPT
# interfejs lo
$i -A INPUT -i lo -j ACCEPT
$i -A OUTPUT -o lo -j ACCEPT
$i -A FORWARD -o lo -j ACCEPT
# Piolaczenie PPPoE pozwalamy na ruch na eth0 lub eth1
if [ $INTNAME0 = "ppp0" -a $INTNAME1 = "eth0" ];then
    $i -A INPUT -i eth2 -j ACCEPT
    $i -A FORWARD -i eth2 -j ACCEPT
    $i -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
fi


# Blaster i Saser  wraz z logowaniem
#if [ $LOG = 1 ];then
#    $i -A INPUT -p tcp --dst 0/0 -m multiport --dport 135,445 -j LOG -m limit --limit 2/hour --log-prefix "INPUT Blaster: "
#    $i -A FORWARD -p tcp --dst 0/0 -m multiport --dport 135,445 -j LOG -m limit --limit 2/hour --log-prefix "FORWARD Blaster: "
#fi
#$i -A INPUT -p tcp --dst 0/0 -m multiport --dport 135,445 -j DROP
#$i -A FORWARD -p tcp --dst 0/0 -m multiport --dport 135,445 -j DROP
# Adresy zabronione
for IP in `cat /etc/firewall/IP_Deny| cut -d "#" -f1`;do
    $i -A INPUT -s $IP -j DROP
    $i -A FORWARD -s $IP -j DROP
    $i -A INPUT -d $IP -j DROP
    $i -A FORWARD -d $IP -j DROP
done
# Adresy majace absolutny dostep do serwera, adresy zaufane
for IP in `cat /etc/firewall/IP_All| cut -d "#" -f1`;do
    $i -A INPUT -s $IP -j ACCEPT
done
# uslugi udostepnione dla polaczen z internetu
if [ "$TCP_IN_ALLOW" ];then
    $i -A INPUT -p tcp -i $INTNAME0 -m multiport --dst 0/0 --dport $TCP_IN_ALLOW -j ACCEPT
fi
if [ "$UDP_IN_ALLOW" ];then
    $i -A INPUT -p udp -i $INTNAME0 -m multiport --dst 0/0 --dport $UDP_IN_ALLOW -j ACCEPT
fi
# Odrzucamy z komunikatem ICMP Port Unreachable polaczenia
# na IDENT oraz SOCKS (czesto sprawdzane przez serwery IRC)
# Jesli udostepniasz te uslugi zaplotkuj (#) odpowiedne linie
$i -A INPUT -p tcp --dst 0/0 --dport 113  -j REJECT --reject-with icmp-port-unreachable
$i -A INPUT -p tcp --dst 0/0 --dport 1080 -j REJECT --reject-with icmp-port-unreachable
# Porty zablokowane dla wszystkich
if [ "$TCP_IN_DENY" ];then
    $i -A INPUT -p tcp --dst 0/0 -m multiport --dport $TCP_IN_DENY -j DROP
fi
if [ "$UDP_IN_DENY" ];then
    $i -A INPUT -p udp --dst 0/0 -m multiport --dport $UDP_IN_DENY -j DROP
fi
# Takie adresy nie maja prawa tu byc
$i -A INPUT -i $INTNAME0 -s $NETWORK1/$NETMASK1 -j DROP
$i -A INPUT -i $INTNAME0 -s 192.168.0.0/16 -j DROP
$i -A INPUT -i $INTNAME0 -s 10.0.0.0/8 -j DROP
$i -A INPUT -i $INTNAME0 -s 172.16.0.0/12 -j DROP
# pingi pozwalamy
$i -A INPUT -p icmp --icmp-type echo-request -j ACCEPT -m limit --limit 1/sec
# Bez tego DHCPD nie chce przydzielac adresow :(
$i -A INPUT -i $INTNAME1 -s 0.0.0.0 -j ACCEPT
$i -A INPUT -i $INTNAME2 -s 0.0.0.0 -j ACCEPT
# Redirect wyswietlenie komunikatu o zablokowaniu dostepu do internetu
# przy kazdej probie laczenia sie z innymi numerami IP niz lokalne.
# Wymaga uruchomiena strony www na porcie 200 lub programu miniserv
for IP in `cat /etc/firewall/IP_Redirect | cut -d "#" -f1`;do
    $i -t nat -A PREROUTING -p tcp -s $IP -d ! $IPADDR1 -j REDIRECT --to-port 200
done
# Blokada programow p2p
if [ $blokada_p2p = 1 ];then
    $i -A FORWARD -p tcp -m time --timestart $czas_wlaczenia_blokady --timestop $czas_wylaczenia_blokady --days $lista_dni -m ipp2p --ipp2p -j DROP
    $i -A FORWARD -p tcp -m time --timestart $czas_wlaczenia_blokady --timestop $czas_wylaczenia_blokady --days $lista_dni -m ipp2p --ipp2p-data -j DROP
#    $i -A FORWARD -p tcp -m time --timestart $czas_wlaczenia_blokady --timestop $czas_wylaczenia_blokady --days $lista_dni -m ipp2p --bit --apple --soul -j DROP
fi

# Forward portow na siec wewnetrzna
FORWARDS=$(grep -vE '^[[:space:]]*(#|$)' /etc/firewall/IP_Forward )
#'
while [ "$FORWARDS" ];do
        ALLOWFROM=$(echo $FORWARDS | awk '{print $1}')
        PROTO=$(echo $FORWARDS | awk '{print $2}')
        SRCIP=$(echo $FORWARDS | awk '{print $3}' | awk -F : '{print $1}')
        SRCPRT0=$(echo $FORWARDS | awk '{print $3}' | awk -F : '{print $2}')
        DSTIP=$(echo $FORWARDS | awk '{print $4}' | awk -F : '{print $1}')
        DSTPRT0=$(echo $FORWARDS | awk '{print $4}' | awk -F : '{print $2}')
        if [ $DSTPRT0 = "0" ];then
            DSTPRT=""
            SRCPRT=$(echo $SRCPRT0 | sed "s/-/:/")
            DPORT=$SRCPRT
        else
            DSTPRT=":$DSTPRT0"
            SRCPRT=$SRCPRT0
            DPORT=$DSTPRT0
        fi
        if [ $PROTO = "tcp" -o $PROTO = "both" ];then
            $i -A FORWARD -p tcp -d $DSTIP --dport $DPORT -j ACCEPT
            $i -A FORWARD -p tcp -s $DSTIP --sport $DPORT -j ACCEPT
            $i -t nat -A PREROUTING -p tcp -i $INTNAME0 -s $ALLOWFROM -d $SRCIP --dport $SRCPRT -j DNAT --to $DSTIP$DSTPRT
        fi
        if [ $PROTO = "udp" -o $PROTO = "both" ];then
            $i -A FORWARD -p udp -d $DSTIP --dport $DPORT -j ACCEPT
            $i -A FORWARD -p udp -s $DSTIP --sport $DPORT -j ACCEPT
            $i -t nat -A PREROUTING -p udp -i $INTNAME0 -s $ALLOWFROM -d $SRCIP --dport $SRCPRT -j DNAT --to $DSTIP$DSTPRT
        fi
        FORWARDS=$(echo $FORWARDS | sed "s%^$ALLOWFROM $PROTO $SRCIP:$SRCPRT0 $DSTIP:$DSTPRT0%%")
done
# Uzytkownicy wymienieni w /etc/hosts polaczenia dozwolone
# maskarada [ tylko IP z sieci wewnetrznej ]
grep "^" /etc/hosts | grep -v "^#"|grep [0123456789] |while read IP nazwa ; do
    if [ $IP != $IPADDR1 ];then
        if [ $TTL = 1 ];then
            $i -A INPUT -i $INTNAME1 -s $IP -m ttl --ttl-eq 128 -j ACCEPT
            $i -A INPUT -i $INTNAME1 -s $IP -m ttl --ttl-eq 64 -j ACCEPT
            $i -A INPUT -i $INTNAME1 -s $IP -p icmp -j ACCEPT
            $i -A FORWARD -s $IP -m ttl --ttl-eq 127 -j ACCEPT
            $i -A FORWARD -s $IP -m ttl --ttl-eq 63 -j ACCEPT
            $i -A FORWARD -s $IP -p icmp -j ACCEPT
        else
            $i -A INPUT -i $INTNAME1 -s $IP -j ACCEPT
            $i -A FORWARD -s $IP -j ACCEPT
        fi
        set -- `ipmask $NETMASK1 $IP`
        if [ $2 = $NETWORK1 ];then
            $i -t nat -A POSTROUTING  -s $IP -j MASQUERADE
        fi
    fi
done
#2 hosts
grep "^" /etc/hosts2 | grep -v "^#"|grep [0123456789] |while read IP nazwa ; do
    if [ $IP != $IPADDR2 ];then
        if [ $TTL = 1 ];then
            $i -A INPUT -i $INTNAME2 -s $IP -m ttl --ttl-eq 128 -j ACCEPT
            $i -A INPUT -i $INTNAME2 -s $IP -m ttl --ttl-eq 64 -j ACCEPT
            $i -A INPUT -i $INTNAME2 -s $IP -p icmp -j ACCEPT
            $i -A FORWARD -s $IP -m ttl --ttl-eq 127 -j ACCEPT
            $i -A FORWARD -s $IP -m ttl --ttl-eq 63 -j ACCEPT
            $i -A FORWARD -s $IP -p icmp -j ACCEPT
        else
            $i -A INPUT -i $INTNAME2 -s $IP -j ACCEPT
            $i -A FORWARD -s $IP -j ACCEPT
        fi
        set -- `ipmask $NETMASK2 $IP`
        if [ $2 = $NETWORK2 ];then
            $i -t nat -A POSTROUTING  -s $IP -j MASQUERADE
        fi
    fi
done

# Zezwalamy na wszystko co odbywa sie w ramach juz dozwolonych
# polaczen
$i -A INPUT -p tcp -j ACCEPT -m state --state ESTABLISHED
$i -A INPUT -p udp -j ACCEPT -m state --state ESTABLISHED
$i -A INPUT -p icmp -j ACCEPT -m state --state ESTABLISHED
$i -A INPUT -p icmp -j ACCEPT -m state --state RELATED
$i -A FORWARD -p tcp -j ACCEPT -m state --state ESTABLISHED
$i -A FORWARD -p tcp -j ACCEPT -m state --state RELATED
$i -A FORWARD -p udp -j ACCEPT -m state --state ESTABLISHED
$i -A FORWARD -p icmp -j ACCEPT -m state --state ESTABLISHED
$i -A FORWARD -p icmp -j ACCEPT -m state --state RELATED

# Logujemy pakiety ktore nie zostaly zaakceptowane przez
# zadna z powyzszych regulek. Zostana one wyblokowane dzieki
# polityce DROP we wszystkich tablicach
if [ $LOG = 1 ];then
    $i -A INPUT -j LOG -m limit --limit 3/hour --log-prefix "INPUT DENY: "
    $i -A FORWARD -j LOG -m limit --limit 3/hour --log-prefix "FORWARD DENY: "
fi
if [ "$1" = restart ]; then
    if [ -x /etc/rc.d/rc.mrtg ]; then
        /etc/rc.d/rc.mrtg restart
    fi
    if [ -x /usr/stat/rc.stat ]; then
        cd /usr/stat/
        sh rc.stat restart
        cd /etc/rc.d
    fi
fi
echo "Firewall wlaczony...                    DONE"


Plik firewall.config
: [/] [] ()
# Adresy
INTNAME0=ppp0
INTNAME1=eth0
IPADDR1=10.10.10.1
NETWORK1=10.10.10.0
NETMASK1=255.255.255.0
INTNAME2=eth1
IPADDR2=192.168.0.1
NETWORK2=192.168.0.0
NETMASK2=255.255.255.0


# Porty wpuszczane/zabronione
TCP_IN_ALLOW="80,110,25,22,21,82,83,1550"
UDP_IN_ALLOW=""
TCP_IN_DENY=""
UDP_IN_DENY=""

# Programy p2p
blokada_p2p=1
czas_wlaczenia_blokady=0100
czas_wylaczenia_blokady=0102
lista_dni=Mon,Tue,Wed,Thu,Fri,Sat,Sun

# kontrola TTL
TTL=0

# Logowanie
LOG=0

Nie wklejam pliku hosts2 ma on taka sama strukture jak plik hosts

Pozdrawiam i z gory dziekuje

Autor:  Koriolan [ poniedziałek, 17 stycznia 2005, 18:35 ]
Tytuł: 

Niestety mam za słaby wzrok :-(
Jak dobrze chodzi to znaczy jest nieźle :-)

Autor:  czerwo [ poniedziałek, 17 stycznia 2005, 18:42 ]
Tytuł: 

To samo powiedział Zciecha :) Narazie wszystko chodzi czyli chyba mi sie udało. Wiec jak ktos chce miec serwer z 2xlan 1xneo i firewall Zciecha to prosze do mnie :P

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/