#!/bin/bash
#

## Firewall Script
#  01-07-22  by Erik Wegner
#

#####################################################################
## Teil 1
#  Die Variablen

# Pfad zu IPTables
IPTABLES=/usr/sbin/iptables

# Verzeichnis mit Teilscripten
SCRIPTPATH=/home/e-man/daten/server/einstein/fw/sub

# Pfad zu Netzwerk innerhalb von /proc
PROC=/proc/sys/net/ipv4

#LED-Pfad fr externe Anzeigen am Parallelport
LED=/root/lpt/lpt_client
#LED="#"

## Ports
#  Nicht-privilegierte = 1024-65535
#  SSH                 = 1000-1023
P_HIGH=1024:65535

# Netzwerkgert
export INT1=eth0
export INT2=eth2
export EXT=eth1
export PPP=ppp0

#firewall interfaces
export FWIF="$INT1 $INT2 $EXT $PPP"
#interne interfaces
export INTIF="$INT1 $INT2"

## Bekannte IP-Adressen
NS="212.185.251.136 194.25.2.129" # Nameserver T-Online
TONLINEPROXY="212.185.251.135"
TONLINESMTPRELAY="194.25.134.94"
INTERN1=192.168.4.0/255.255.255.0
INTERN2=192.168.41.0/255.255.255.0

##########################################
##########################################
##########################################

#Vorbereitung fr Script
echo "#!/bin/bash"
echo "#"
echo "# Firewallscript generated by Erik Wegner"
echo -e "\necho \"firewall start...\""
#echo "/root/lptblink 632 1 >/dev/null"
echo "$LED 16 8"
# Dynamische Kernelparameter
$SCRIPTPATH/fw-dynkernel

# Interfaces konfigurieren
for inf in $FWIF ; do {
	$SCRIPTPATH/fw-ifconfig $inf
} ; done

# Alles auf null 
$SCRIPTPATH/fw-default

# Alle Ketten lschen
$SCRIPTPATH/fw-clear

# Lokale Prozesse
$SCRIPTPATH/lo-up

# ssh
$SCRIPTPATH/ssh-up $INT1 $INTERN1
#$SCRIPTPATH/ssh-up $INT2 $INTERN2

# Benutzerdefinierte Ketten
$SCRIPTPATH/fw-defuserchain

#intern
$SCRIPTPATH/internalroute-up

#Maquerading
$SCRIPTPATH/masq-up $PPP

#Rckkanal
$SCRIPTPATH/fw-related
for inf in $INTIF ; do {
       $SCRIPTPATH/fw-related-masq $inf $PPP
} ; done

#squid
#$SCRIPTPATH/squid-up $INT1 $INTERN1
#$SCRIPTPATH/squid-up $INT2 $INTERN2
#$SCRIPTPATH/squid-out-up $PPP
$SCRIPTPATH/http-proxy-server $INT1 $INTERN1
$SCRIPTPATH/http-proxy-server $INT2 $INTERN2
$SCRIPTPATH/http-proxy-client $PPP $TONLINEPROXY

#$SCRIPTPATH/sockd-up $INT1 $INTERN1
#$SCRIPTPATH/sockd-up $INT2 $INTERN2

#$SCRIPTPATH/halflife-up $PPP
#$SCRIPTPATH/freespace-up $PPP

#ICMP
$SCRIPTPATH/icmp-local $INT1
$SCRIPTPATH/icmp-local $INT2
#for inf in $INTIF ; do {
#	$SCRIPTPATH/icmp-forward $inf $PPP
#} ; done

# Domain Name Service forward
#for inf in $INTIF ; do {
#	for dns in $NS ; do {
		#$SCRIPTPATH/domain-forward $inf $PPP $dns
#	} ; done
#} ; done

#DNS Server
$SCRIPTPATH/domain-server $INT1 $INTERN1
$SCRIPTPATH/domain-server $INT2 $INTERN2

#DNS Client
for nip in $NS ; do {
	$SCRIPTPATH/domain-client $PPP $nip
} ; done
#$SCRIPTPATH/domain-client-up $INT1 192.168.4.1
#echo "/root/lptblink 632 21 >/dev/null" 

#HTTP
#for inf in $INTIF ; do {
#	$SCRIPTPATH/http-forward $inf $PPP
#} ; done
#echo "/root/lptblink 632 85 >/dev/null" 

#HTTPS
#for inf in $INTIF ; do {
#	$SCRIPTPATH/https-forward $inf $PPP
#} ; done

#ident
#$SCRIPTPATH/ident-reject $PPP

#ftp
for inf in $INTIF ; do {
	$SCRIPTPATH/ftp-forward $inf $PPP
} ; done

#smtp, pop3 und usenet
$SCRIPTPATH/smtp-server $INT1 $INTERN1
$SCRIPTPATH/smtp-server $INT2 $INTERN2
$SCRIPTPATH/smtp-client $PPP $TONLINESMTPRELAY
for inf in $INTIF ; do {
	$SCRIPTPATH/pop3-forward $inf $PPP
#	$SCRIPTPATH/nntp-forward $inf $PPP
} ; done

#ntp
#$SCRIPTPATH/ntp-client-up $INT1 $NTPIP
$SCRIPTPATH/ntp-up $INT1 $INTERN1
$SCRIPTPATH/ntp-up $INT2 $INTERN2

# Alle Luken dicht!
$SCRIPTPATH/fw-final
echo -e "\necho \"firewall ready\""
#echo "/root/lptblink 632 170 >/dev/null"
echo "$LED 32 8" 
#####################################################################
#echo "fertig!"
