• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Simples Skript für Paketfilterulesetaktivierung/ -portierung

TomcatMJ

Guru
Hi!
da ja an diversen Stellen in Linux-Club immer wieder mal die Frage aufkommt wie man denn auf die Schnelle routen kann ohne dabei völlig auf Paketfilterung/eine simpele Firewallfunktion zu verzichten poste ich hier mal ein paar kleine Scripte, mit denen man z.B. per Webmin Linux-Firewallmodul erstellte Rulesets auch auf andere Linuxrechner ohne webmin übernehmen kann.

Hier nun das Initialisierungsscript mit dem erstmal die nötigen kernelflags gesetzt werden:
Code:
#!/bin/sh
# iptables.cfg 
# Das Initialisierungsscript für Routing/Firewallfunktionalität 
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 1 > /proc/sys/net/ipv4/conf/all/secure_redirects
echo 1 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 65536 > /proc/sys/net/ipv4/route/max_size
echo 262144 > /proc/sys/net/core/optmem_max
echo 262144 > /proc/sys/net/core/rmem_default
echo 262144 > /proc/sys/net/core/rmem_max
echo 262144 > /proc/sys/net/core/wmem_default
echo 262144 > /proc/sys/net/core/wmem_default
echo 262144 > /proc/sys/net/core/wmem_max
echo 500 > /proc/sys/net/core/netdev_max_backlog

Und nun die zu ladenden Netfilter-Kernelmodule für diverse Optionen die in den späteren Rulesets benötigt werden könnten, was davon für den jeweiligen Fall nicht benötigt wird kann dann ja auskommentiert werden:
Code:
#!/bin/sh
# netfiltermodules.sh 
# Das Ladescript der Netfiltermodule
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_queue
modprobe ip_tables
modprobe ipt_LOG
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_MIRROR
modprobe ipt_REDIRECT
modprobe ipt_REJECT
modprobe ipt_TOS
modprobe ipt_TCPMSS
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_mark
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_state
modprobe ipt_tos
modprobe ipt_unclean
modprobe ipt_tcpmss
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat


Und nun das eigentliche Startscript:

Code:
#!/bin/sh
# filterwallstart.sh 
# das Startscript
PFADWOSLIEGT=/etc/firewall
RULESET=T-Firewall.cfg
# Die obige Variablen entsprechend anpassen
#Initialisierung
$PFADWOSLIEGT/iptables.cfg
$PFADWOSLIEGT/netfiltermodules.sh
sleep 10
#Firewallregeln laden
iptables-restore <$PFADWOSLIEGT/$RULESET
#Finalisierung
echo
echo "Firewall ist gestartet..."

Gestoppt wird das Ruleset dann z.B. mit dem Befehl "iptables -F" zum leeren der iptables-Tabellen und deaktivieren des geladenen Rulesets.

Ein absolut simples Beispielruleset mit dem Routing aktiviert wird aber noch ohne jegliche Paketfilterung:
Code:
# Generated by iptables-save v1.2.2 on Sat Feb 16 16:29:34 2002
*mangle
:PREROUTING ACCEPT [866:160659]
:OUTPUT ACCEPT [198:151068]
COMMIT
# Completed on Sat Feb 16 16:29:34 2002
# Generated by iptables-save v1.2.2 on Sat Feb 16 16:29:34 2002
*filter
:INPUT ACCEPT [223:20614]
:FORWARD ACCEPT [642:138545]
:OUTPUT ACCEPT [198:151068]
COMMIT
# Completed on Sat Feb 16 16:29:34 2002
# Generated by iptables-save v1.2.2 on Sat Feb 16 16:29:34 2002
*nat
:PREROUTING ACCEPT [176:9342]
:POSTROUTING ACCEPT [74:3914]
:OUTPUT ACCEPT [6:610]
-A POSTROUTING -s 192.168.0.0/255.255.0.0 -o ppp0 -j MASQUERADE 
COMMIT
# Completed on Sat Feb 16 16:29:34 2002
Wer dort z.B. das ppp0 gegen dsl0 austauscht kann damit schon über aktuelle Distris über DSL ins Internet routen. Rulesets von anderen Linuxrechnern kann man z.B. mit "iptables-save >T-Firewall.cfg" von aktiven iptables-Regeln in eine Datei kopieren die mann dann nur noch an entsprechender Stelle auf dem Zielrechner platzieren muss. Man kann diese Rulesets natürlich auch komfortabler mit Webmin oder knetfilter erstellen und dann entsprechend die jeweils generierte Datei kopieren,da bleiben einem natürlich viele Wege offen :)
Es ist jedoch ein recht simpeler Weg um z.B. von einem SuSE-Rechner ein existierendes Ruleset auf einen fix installierten Kanotix oder DamnSmallLinux Rechner zu übertragen und diesen dann als Router einzusetzen.
Bei Interesse könnte ich ja später mal ein umfangreicheres Ruleset irgendwo zum Download verlinken, welches dann auch durch Gebrauch der Kommentarfunktion von Webmin etwas umfangreicher in Funktion aber auch entsprechend dokumentiert ist. Zum hier posten wäre das jedoch etwas arg groß denke ich*G*

Bis denne,
Tom
 
Oben