# FIREWALLSCRIPT
#!/bin/bash
INT="eth0"
EXT="eth1"
MYDNS="192.168.147.2 192.168.147.2"
MYNTP="10.10.110.9"
MYMAIL="192.168.30.4"
ADMIN="192.168.147.1"
ADMINMAC="......"
MYNET="192.168.147.0/24"
PRDNS="192.168.147.1 192.168.147.2"
PRMAIL="10.10.110.9"
EXTNTP="217.20.20.3 3.4.5.6"
HIGH="1024:"
IPT="/usr/sbin/iptables"
FTPRAUS="192.168.147.2"
OEFIP="217.3.2.1"
for KETTE in INPUT OUTPUT FORWARD
do
$IPT -P $KETTE DROP
done
for TABELLE in filter nat mangle
do
$IPT -t $TABELLE -F
$IPT -t $TABELLE -X
done
exit
# FOR LOOPBACK (IPC)
$IPT -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
$IPT -A OUTPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -o lo -j ACCEPT
$IPT -A FORWARD -i ! $INT -p tcp --syn -j DROP
# FOR HTTP
$IPT -A FORWARD -i $INT -o $EXT -s $MYNET -p tcp --sport $HIGH -m multiport --dports 80,443 -j ACCEPT
$IPT -A FORWARD -i $EXT -o $INT -d $MYNET -p tcp --dport $HIGH -m multiport --sports 80,443 -j ACCEPT
# FOR DNS
for INDNS in $MYDNS
do
for AUSDNS in $PRDNS
do
for PROTO in udp tcp
do
$IPT -A FORWARD -p $PROTO -s $INDNS -d $AUSDNS --sport 53 --dport 53 -i $INT -o $EXT -j ACCEPT
$IPT -A FORWARD -p $PROTO -s $OUTDNS -d $INDNS --sport 53 --dport 53 -i $EXT -o $INT -j ACCEPT
done
done
done
# SSH-ZUGANG fuer Admin
$IPT -A INPUT -i $INT -s $ADMIN -p tcp --dport ssh --sport 1021: --match mac --mac-source $ADMINMAC -j ACCEPT
$IPT -A OUTPUT -o $INT -d $ADMIN -p tcp --sport ssh --dport 1021: -j ACCEPT
# FOR SMTP
$IPT -A FORWARD -i $INT -o $EXT -s $MYNET -p tcp --sport $HIGH --dport 25 -j ACCEPT
$IPT -A FORWARD -i $EXT -o $INT -d $MYNET -p tcp --sport 25 --dport $HIGH -j ACCEPT
# FOR POP
$IPT -A FORWARD -i $INT -o $EXT -s $MYNET -p tcp --sport $HIGH --dport 110 -j ACCEPT
$IPT -A FORWARD -i $EXT -o $INT -d $MYNET -p tcp --sport 110 --dport $HIGH -j ACCEPT
# FOR PING von INT. Rechnern
$IPT -A INPUT -i $INT -s $MYNET -p icmp --icmp-type echo-request -j ACCEPT
$IPT -A OUTPUT -o $INT -s $MYNET -p icmp --icmp-type 0 -j ACCEPT
$IPT -A FORWARD -i $INT -o $EXT -s $MYNET -p icmp --icmp-type 8 -j ACCEPT
for TYP in echo-reply host-unreachable port-unreachable network-unreachable fragmentation-needed source-quench parameter-problem time-exceeded
do
$IPT -A FORWARD -i $EXT -o $INT -s $MYNET -d icmp --icmp-type $TYP -j ACCEPT
done
# FUER Linux Traceroute
$IPT -A FORWARD -i $INT -o $EXT -s $MYNET -p udp --dport 33434:33500 -j ACCEPT
$IPT -A INPUT -p icmp -j LOG --log-prefix "icmp-schrott rein"
$IPT -A FORWARD -p icmp -j LOG --log-prefix "icmp-muell durch"
# FOR FTP
# STEUERKANAL
$IPT -A FORWARD -i $INT -o $EXT -s $MYNET -p tcp --dport 21 --sport $HIGH -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $EXT -o $INT -d $MYNET -p tcp --dport $HIGH --sport 21 -m state --state ESTABLISHED,RELATED -j ACCEPT
# PASSIV
$IPT -A FORWARD -p tcp --sport $HIGH --dport $HIGH -s $MYNET -i -$INT -o $EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp --sport $HIGH --dport $HIGH $MYNET -i $EXT -o $INT -m state --state ESTABLISHED,RELATED -j ACCEPT
# AKTIV
$IPT -A FORWARD -p tcp --sport $HIGH --dport $HIGH -s $MYNET -i -$INT -o $EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp --sport $HIGH --dport 20 -s $MYNET -o $EXT -i $INT -m state --state ESTABLISHED,RELATED -j ACCEPT
# NAT starten
#$IPT -t nat -A POSTROUTING -s $MYNET -o $EXT -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $MYNET -o $EXT -j SNAT --to-source $OEFIP
# Routing einschalten
echo "1" > /proc/sys/net/ipv4/ip_forward
$IPT -L -n -v
$IPT -t nat -L -n -v