Jetzt geht das Firewall - Script wie ein geölter Blitz!
Hier isses (die IP-Adressen stimmen nicht mit dem wahren Leben überein)
#! /bin/bash
#Firewall Script
#1. Initialisieren alter Regeln
iptables -F -v
iptables -F -t nat -v
iptables -X
#2. Benötigte Module in den Kernel laden
modprobe ip-tables
modprobe iptable-nat
modprobe ipt-LOG
#3. Alles wird per default gedroppt
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#4. Interfaces definieren (erspart Tipp-Arbeit)
#Netzwerkkarte eth0 (privates Netzwerk fuer MySQL Replikation)
privat="192.168.0.1"
#Netzwerkkarte eth1 (LAN)
inside="145.55.5.5"
#Lokaler Horst (Horst im Lokal

localhost="127.0.0.1"
#Firmen-Netz
LAN="145.55.0.0/16"
##############################################
#Regel: ALLES erlauben auf privater eth0 das von und #zu 192.168.0.1 geht
iptables -A OUTPUT -i eth0 -s §privat -d 192.168.0.1 -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.0.1 -j ACCEPT
#Regel: Lokale Prozesse erlauben
iptables -OUTPUT -s $localhost -j ACCEPT
iptables -INPUT -s $localhost -j ACCEPT
#Regel:Erlaube https + ssh Zugriff auf Webserver für das lokale Netz
iptables -A INPUT -p tcp -i eth1 -s $LAN -d $inside --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -i eth1 -s $LAn -d $inside --dport 22 -j ACCEPT
#Auch ausgehend muss erlaubt werden! Wir erlauben einfach alles ausgehende.
iptables -A OUTPUT -i eth1 -p tcp -j ACCEPT
#Neue Verbindungen zulassen
iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
#Alles andere das reinwill wird gedropt
iptables -A INPUT -i eth1 -j DROP
#zur Ueberpruefung der Regeln, wird nach Ausfuehrung des Scripts
#iptables -L -n ausgefuehrt, das die Portbeschraenkungen anzeigt
echo "Die Firewall ist aktiviert! Folgende Regeln gelten:"
iptables -L -n
############################
Das ganze kann man entweder manuell ausführen, oder als Startskript automatisch starten lassen.
ausführbach machen mit
chmod 660 mein_firewallscript
###########################
Für automatischen Start beim Systemstart, zb. im Runlevel 3 (Multiuser ohne Grafik == typischer Server)
cp mein_firewallscript /etc/init.d
cd /etc/initd.d/rc3.d
Symbolischen Link ablegen, der auf das Script zeigt. Im rc3.d Ordner liegen lauter symbolische Links, die auf irgendwelche Startscripte zeigen. Die S32blablah stehen für "S"tartscript u. werden beim Start ausgeführt. Die Nummer zeigt die Reihenfolge. Scripte die später als andere gestartet werden sollen, bekommen eine höhere Nummer.
ln -s /etc/init.d/mein_firewallscript S18mein_firewallscript
Das ganze kann man auch mit dem Skeleton in /etc/init.d machen, und recht einfach in das "Skript-Skelet" die IPtables Anweisungen reingeben. Unter dem "Stop" abschnitt im Skelett dann die iptables - Deaktiverbefehle eingeben. Dann kann mit mit
/etc/init.d/mein_firewallscript start
und
/etc/init.d/mein_firewallscript stop
das starten und stoppen auch manuell durchführen.
Der Befehl insserv wertet die /init.d scripte aus und legt automatisch die symb. Links in rc3.d an. Dabei schaut insserv zb. auf die Eintragungen "Default Start 235" und startet dementsprechend in den Runlevels 2, 3 und 5 das Script.
Man kann es aber wie oben erwähnt auch selber machen mit dem symbolischen Link.
#############################
In welchem Runlevel das system überhaupt startet, macht man in der /etc/inittab klar. Einfach unter Runlevel eingeben. Default ist 5. Das ist multiuser mit Grafik. Da wir keine Graifk brauchen und es ein Server ist, ändern wir dies auf "3".
Beim Systemstart wird dann die inittab ausgewertet. Da dort die 3 steht, werden alle Startskripte aus /etc/init.d/rc3.d ausgeführt.