wie "versprochen"
hier das ganze script
Code: Alles auswählen
#!/bin/sh
# ***************************
# ***************************
# * *
# * 1. SETZEN VON VARIABLEN *
# * *
# ***************************
# ***************************
# 1.1. Netzwerkvariablen
# Schnittstelle zum lokalen Netzwerk
FACE_INT=eth0
# Internetschnittstelle
IFACE_EXT=ppp0
# Loopback device
IFACE_LO=lo
# Interner Netzwerkbereich
NET_INT=192.168.1.0/255.255.255.0
function StopFirewall() {
# **********************************
# **********************************
# * *
# * 2. HERUNTERFAHREN DER FIREWALL *
# * *
# **********************************
# **********************************
# Ausschalten des Routing
echo "0" > /proc/sys/net/ipv4/ip_forward
# Default-Policies: Alles rein und raus, kein Forwarding mehr
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Löschen aller Regeln
iptables -F
iptables -t nat -F
# Löschen aller zusätzlichen Ketten
iptables -X
iptables -t nat -X
}
function StartFirewall() {
# ***************************
# ***************************
# * *
# * 3. Starten der Firewall *
# * *
# ***************************
# ***************************
echo "Debug: setting up firewall"
# 3.1 Allgemeines
# Default-Policies setzen - alles fliegt raus
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# Einschalten von ip-Forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "Debug: ip_forward"
# Wegen moeglicher Netzwerkprobleme zwecks MTU
# 3.1.1. Eigene Kette zum gleichzeitigen Protokollieren und Rausschmeissen
echo "Debug: create own chain"
# Eigene Kette erstellen
--------------------------------------------------------------
iptables -N dude_drop
# Protokollieren
#TCP-Packete
iptables -A dude_drop -p TCP -j LOG -m limit --limit 5/minute \
--log-prefix "TCP-Packet dropped: "
#UDP-Packete
iptables -A dude_drop -p UDP -j LOG -m limit --limit 5/minute \
--log-prefix "UDP-Packet dropped: "
#ICMP-Packete
iptables -A dude_drop -p ICMP -j LOG -m limit --limit 5/minute \
--log-prefix "ICMP-Packet dropped: "
# Raussschmeissen
iptables -A dude_drop -j DROP
--------------------------------------------------------------
echo "Debug: Setting up rules"
# 3.2. Regeln fuer eingehende Pakete
# 3.2.1. Vom internen Netzwerk
# Alles erlauben
iptables -A INPUT -i $IFACE_INT -s $NET_INT -j ACCEPT
# 3.2.2. Vom Loopback
# Alles erlauben
iptables -A INPUT -i $IFACE_LO -j ACCEPT
# 3.2.3. Vom Internet
# Kein externer Verbindungsaufbau
iptables -A INPUT -p TCP ! --syn -m state --state NEW -j dude_drop
# Keine externen Verbindungen mit privaten Adressen
iptables -A INPUT -i $IFACE_EXT -s 10.0.0.0/8 -j dude_drop
iptables -A INPUT -i $IFACE_EXT -s 172.16.0.0/12 -j dude_drop
iptables -A INPUT -i $IFACE_EXT -s 192.168.0.0/24 -j dude_drop
# Erlauben von bereits initialisierten TCP-Verbindungen
iptables -A INPUT -i $IFACE_EXT -p TCP -m state \
--state ESTABLISHED,RELATED -j ACCEPT
# Erlauben von bereits initialisierten UDP-Verbindungen von Zeitservern
iptables -A INPUT -i $IFACE_EXT -p UDP -m state \
--state ESTABLISHED,RELATED --sport 123 -j ACCEPT
# Erlauben der notwendigsten ICMP-Pakete
iptables -A INPUT -i $IFACE_EXT -p ICMP --icmp-type 0 -j ACCEPT
iptables -A INPUT -i $IFACE_EXT -p ICMP --icmp-type 3 -j ACCEPT
iptables -A INPUT -i $IFACE_EXT -p ICMP --icmp-type 5 -j ACCEPT
iptables -A INPUT -i $IFACE_EXT -p ICMP --icmp-type 11 -j ACCEPT
# 3.3. Regeln fuers Forwarding
# 3.3.1. Lokal -> Internet
# Erlauben von Telnet, SSH, FTP, SMTP, POP3, SHTML Verbindungen
iptables -A FORWARD -i $IFACE_INT -o $IFACE_EXT -p TCP -m multiport \
--dport 20,21,22,25,80,110,443 -j ACCEPT
# Erlauben von Highport-Verbindungen
iptables -A FORWARD -i $IFACE_INT -o $IFACE_EXT -p TCP \
--dport 1024:65000 -j ACCEPT
# ICQ-Verbindungen
iptables -A FORWARD -i $IFACE_INT -o $IFACE_EXT -p UDP \
--dport 4000 -j ACCEPT
# 3.3.2. Internet -> Lokales
# Nur UDP-Verkehr über bereits bestehende ICQ-Verbindungen erlauben
iptables -A FORWARD -i $IFACE_EXT -o $IFACE_INT -p UDP -m state \
--state ESTABLISHED,RELATED --sport 4000 -j ACCEPT
# Nur TCP-Verkehr über bereits bestehende Verbindungen erlauben
iptables -A FORWARD -i $IFACE_EXT -o $IFACE_INT -p TCP -m state \
--state ESTABLISHED,RELATED -j ACCEPT
# 3.4. Regeln für ausgehende Pakete
# 3.4.1. Ins lokale Netzwerk
# Alles erlauben
iptables -A OUTPUT -o $IFACE_INT -j ACCEPT
# 3.4.2. Ans Loopback
# Alles erlauben
iptables -A OUTPUT -o $IFACE_LO -j ACCEPT
# 3.5. Routing
# Masquerading
iptables -A POSTROUTING -o $IFACE_EXT -t nat -j MASQUERADE
# Direkte Verbindungen für ICQ zu mir umleiten
iptables -t nat -A PREROUTING -i $IFACE_EXT -p TCP \
--dport 6000:6010 -j DNAT --to 192.168.1.1
# 3.6. Mitprotokollieren
iptables -A OUTPUT -j LOG --log-prefix "Nicht raus: "
iptables -A FORWARD -j LOG --log-prefix "Nicht durch: "
iptables -A INPUT -j LOG --log-prefix "Nicht rein: "
}
# **********************
# **********************
# * *
# * START-STOP-SKRIPT *
# * *
# **********************
# **********************
case "$1" in
start)
echo -n "Starting firewall: iptables"
StartFirewall
;;
stop)
echo "Stopping firewall: iptables"
StopFirewall
echo "."
;;
force-reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop|restart" \
"|force-reload}"
exit 1
;;
esac
das script ist wie bereits erwähnt eine leicht Modifikation Glatzors script aus einem älteren Thread (ich hoffe es steht unter der GPL, glatzor
)
und hier auch noch die Ausgabe:
Code: Alles auswählen
Starting firewall: iptablesDebug: setting up firewall
Debug: Policies
Debug: ip_forward
Debug: create own chain
Bad argument ` '
Debug: Setting up rules
Warning: weird character in interface `-s' (No aliases, :, ! or *).
Bad argument `192.168.1.0/255.255.255.0'
Bad argument ` '
Bad argument ` '
Warning: weird character in interface `-o' (No aliases, :, ! or *).
Bad argument `ppp0'
Warning: weird character in interface `-o' (No aliases, :, ! or *).
Bad argument `ppp0'
Warning: weird character in interface `-o' (No aliases, :, ! or *).
Bad argument `ppp0'
Warning: weird character in interface `-p' (No aliases, :, ! or *).
Bad argument `UDP'
Warning: weird character in interface `-p' (No aliases, :, ! or *).
Bad argument `TCP'
Warning: weird character in interface `-j' (No aliases, :, ! or *).
Bad argument `ACCEPT'
Bad argument ` '
Dank an alle die sich die Mühe machen, sich damit auseinander zu setzten