Firewallscript

Gemeinsam ins Internet mit Firewall und Proxy.
Antworten
Benutzeravatar
acron
Beiträge: 147
Registriert: 03.05.2002 13:31:40
Wohnort: Aachen

Firewallscript

Beitrag von acron » 03.09.2002 20:21:40

Hallo Debianer,

Ich habe mich durch eine Menge How-Tos und ein Buch zum Thema Firewalls unter Linux gequält 8O und will es jetzt in der Praxis ausprobieren. Ich habe versucht Glatzors Script aus Thread (http://www.debianforum.de/forum/viewtopic.php?t=151) anzupassen, bekomme es aber nicht ans laufen :(
Das Problem liegt irgendwo im folgenden Code-Schnipsel

Code: Alles auswählen

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"
Ich vermute, dass der fehler irgendwie mit dem zusammen hängt, obwohl ich mir darauf keinen Reim machen kann :?

Soll ich das ganze Script posten? Laut den eingefügten Debugs liegt der 1.Fehler im obigen Teil...

Hat jemand eine :idea:

Benutzeravatar
acron
Beiträge: 147
Registriert: 03.05.2002 13:31:40
Wohnort: Aachen

Beitrag von acron » 03.09.2002 20:43:28

achso, hier auch die Ausgabe nach de Aufruf:

Code: Alles auswählen

Starting firewall: iptablesDebug: setting up firewall
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 ` '

Benutzeravatar
glatzor
Beiträge: 1769
Registriert: 03.02.2002 19:01:46
Wohnort: Vierkirchen bei München

Beitrag von glatzor » 04.09.2002 10:52:25

Hast Du einen Windows Editor benutzt?

"\" bedeutet nur, dass die Zeile in der nächsten weitergeht.

Benutzeravatar
acron
Beiträge: 147
Registriert: 03.05.2002 13:31:40
Wohnort: Aachen

Beitrag von acron » 04.09.2002 16:57:06

hi,
Hast Du einen Windows Editor benutzt?
nö, vim
allerdings hatte ich dein Script aus dem Internet Explorer kopiert und per ssh eingefügt
"\" bedeutet nur, dass die Zeile in der nächsten weitergeht.
ich weiß, es scheint mir auch nur so weil ich diverse Zeilen Entfernt habe (zb die mit der MTU) wo es auch Fehler gab und das "\" war die einzige Gemeinsamkeit die ich feststellen konnte :?
ich bin bald zu hause und werde von mal das ganze Script posten (wahrscheinlich ist's ein ganz doofer Fehler :evil: , kann nämlich nicht nicht wirklich bash-programmieren)

Benutzeravatar
acron
Beiträge: 147
Registriert: 03.05.2002 13:31:40
Wohnort: Aachen

Beitrag von acron » 04.09.2002 19:58:24

wie "versprochen" :lol: 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 :D )

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 :)

merlin64
Beiträge: 21
Registriert: 04.08.2002 15:59:25

Beitrag von merlin64 » 04.09.2002 20:01:24

hmm, ich will dich ja nicht veralbern, aber hast du das wirklich *so* auf deinem rechner versucht zum laufen zu bringen? oder sind die
"-------------------------------------------------------------- " lediglich (wie ich hoffe) zur kennzeichnung drin?
wenn diese striche nicht auskommentiert in deinem script stehen gibts sicher verwirrung.
wenn's das nicht ist vermute ich eher dass der fehler in nem anderen teil des scripts liegt - ich bin zwar nicht gerade der grösste experte, kann aber in diesem schnipsel keinen fehler sehen...


[edit] also nachdem die striche immernoch drin sind - wenn sie im original drin sind sind sie ne fehlerquelle, ansonsten muss ich mir das script komplett durchlesen... [/edit]

Benutzeravatar
acron
Beiträge: 147
Registriert: 03.05.2002 13:31:40
Wohnort: Aachen

Beitrag von acron » 04.09.2002 20:19:50

hmm, ich will dich ja nicht veralbern, aber hast du das wirklich *so* auf deinem rechner versucht zum laufen zu bringen? oder sind die
"-------------------------------------------------------------- " lediglich (wie ich hoffe) zur kennzeichnung drin?
:oops: :oops: :oops:
ach du sch%*$! ich habe ja geahnt, dass es peinlich wird, aber so peinlich! *waszumerschiesensuch* wenn die welt jetzt gleich untergeht wird einer nicht schreien...

werde es gleich mal mit auskommentierten Minussen versuchen

Benutzeravatar
glatzor
Beiträge: 1769
Registriert: 03.02.2002 19:01:46
Wohnort: Vierkirchen bei München

Beitrag von glatzor » 05.09.2002 08:50:48

Ja, ja ...

Belgarad
Beiträge: 749
Registriert: 12.07.2002 02:00:44

Beitrag von Belgarad » 13.09.2002 01:27:11

Es gibt Schlimmeres: z.B. Pickel :wink:

Antworten