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
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