PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Firewall konfiguriert



Ryanika
08.10.03, 15:21
hy,

ich habe ein iptables script geschrieben, welches ich nach /etc/init.d kopiert habe.
der dienst ist gestartet (/etc/rc.d/rc.local) und iptables wird beim booten auch als ok angezeigt.
als root wollte ich unter /etc/init.d/ ./Firewall aufrufen und bekam die fehlermeldung
cannot execute binary file. was ist da schiefgelaufen? die meldung kommt erst, seit ich änderrungen am script vorgenommen habe.

danke und gruss Uta

cane
08.10.03, 16:12
Hallo Uta!

Stimmen die Rechte?
Vielleicht hast Du beim Ändern aus Versehen die Rechte mitgeändert?
Ist die Endung .sh?
Probier mal /etc/init.d/firewall.sh

mfg
cane

HangLoose
08.10.03, 16:15
wäre auch meine vermutung, das das x flag verloren gegangen ist.


Gruß HL

joomart
08.10.03, 16:17
Ich kann jetzt mit den wenigen Infos nicht sagen, was falsch ist.

Hier meine Konfiguration (gemäß Linux-Struktur für solche Dienste):
/etc/firewall/paketfilter => meine iptables-Regeln
/etc/init.d/firewall => mein Start/Stop-Skript

Zudem habe ich das Start-Stop-Skript in die Liste der zu startenden Dienste aufgenommen.

P.S: Du schreibst, das ist erst seit Deiner letzten Änderung. Probier doch mal die Datei mit den vorherigen Regeln aus (die hast Du doch hoffentlich kopiert?).

Ryanika
08.10.03, 16:51
ihr habt recht, irgendwie ist mir das x-flag abhanden gekommen :ugly:

hatte jetzt keine zeit mehr, das in ordnung zu bringen, werde es morgen früh probieren, aber ich denke, das war der fehler.

danke euch :)

gruss Uta

Ryanika
08.10.03, 16:55
Original geschrieben von joomart
Ich kann jetzt mit den wenigen Infos nicht sagen, was falsch ist.

Hier meine Konfiguration (gemäß Linux-Struktur für solche Dienste):
/etc/firewall/paketfilter => meine iptables-Regeln
/etc/init.d/firewall => mein Start/Stop-Skript

Zudem habe ich das Start-Stop-Skript in die Liste der zu startenden Dienste aufgenommen.

P.S: Du schreibst, das ist erst seit Deiner letzten Änderung. Probier doch mal die Datei mit den vorherigen Regeln aus (die hast Du doch hoffentlich kopiert?).

start stop script??? das habe ich garnicht. ist das dringend erforderlich?
kopiert habe ich die alte datei, die läuft auch ohne fehlermeldung.

gruss Uta

Ryanika
08.10.03, 20:43
hy,

ich habe die firewall daheim neu geschrieben und wollte sie testen. ergebnis waren eine menge fehlermeldungen und beim booten *interface ppp0 hochfahren fehlgeschlagen* ins internet komme ich über linux nicht mehr.

hier das firewall-script

#einfache Firewall für eine Stand-alone-Workstation
#!/bin/sh

#loesche den Inhalt alter chains
iptables -F input
iptables -F forward
iptables -F output

iptables -X



#Variablen setzen

Extern=eth0
Local=lo

#Erstmal alles verbieten
iptables -P input DROP
iptables -P forward DROP
iptables -P output DROP

#Erlaube alles von Local
iptables -A input ACCEPT
iptables -A forward ACCEPT
iptables -A output ACCEPT

#Verbotene eingehende NEW TCP Verbindung
iptables -A input -p TCP!--syn -m state --state NEW -j DROP

#Erlaubte ausgehende TCP Verbindung
iptables -A output -o $Local -p TCP -j ACCEPT

#Erlaube alle stehende Verbindungen vom lokalen Rechner
iptables -A input -i $Local -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A input -i $Local -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT


#Verbot von Extern
iptables -A input -i $Extern -s 10.0.0.0/8 -j DROP
iptables -A input -i $Extern -s 172.16.0.0/12 -j DROP
iptables -A input -i $Extern -s 192.168.0.0/24 -j DROP


#Log den Rest
iptables -A output -j LOG --log-prefix "darf nicht raus"
iptables -A forward -j LOG --log-prefix "darf nicht durch"
iptables -A input -j LOG --log-prefix "darf nicht rein"


ich habe es unter /etc/init.d als Firewall
und unter /etc/rc.d rc.local gestartet.

die fehlermeldung:

iptables: No chain/target/match by that name
iptables: Can't delete chain with references left
iptables: Bad built-in chain name
iptables: Bad built-in chain name
iptables: Bad built-in chain name
Bad argument `ACCEPT'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `ACCEPT'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `ACCEPT'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.6a: unknown protocol `tcp!--syn' specified
Try `iptables -h' or 'iptables --help' for more information.
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
[root@Felix init.d]#
[root@Felix init.d]#


was ist falsch am script? hoffe, ich habe keine wichtige angabe vergessen. betriebssystem ist RedHat8.

gruss Uta

HangLoose
08.10.03, 21:12
hi

die chains schreibt man immer mit großbuchstaben, also input => INPUT

in dieser zeile fehlt zw. tcp und dem ! ein leerzeichen

iptables -A input -p TCP!--syn -m state --state NEW -j DROP

wobei ein -p TCP !--syn unnötig ist, wenn du auf connection tracking setzt


ausserdem wird das target mit einem -j angegeben

#Erlaube alles von Local
iptables -A input ACCEPT <== ändern in -j ACCEPT
iptables -A forward ACCEPT
iptables -A output ACCEPT

btw. damit erlaubst du nicht nur local alles. wenn du das willst musst du auch das entsprechende interface angeben.


zum schluß fehlt noch masquerading und das *einschalten* von ip forward



Gruß HL

Ryanika
08.10.03, 21:57
habe das script verbessert und werde es jetzt mal testen. masquerading habe ich wegen nicht vorhandenen router weggelassen. der rechner steht alleine für sich. bin ja mal gespannt, obs jetzt klappt. danke erstmal :-)

Uta

Ryanika
08.10.03, 22:23
ins internet lässt mich der rechner noch immer nicht und fehlermeldung: chain is not empty kommt.
und - soll ich diesen eintrag ganz rausnehmen?
#Verbotene eingehende NEW TCP Verbindung
iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP
und statt Extern=eth0 lieber Extern=ppp0 ?

so schauts jetzt aus:

#!/bin/sh

#loesche den Inhalt alter chains
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT

iptables -X

#Variablen setzen

Extern=eth0
Local=lo

#erlaube ip-forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward

#Erstmal alles verbieten
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

#Erlaube alles von Local
iptables -A INPUT -i $Local -j ACCEPT
iptables -A FORWARD -i $Local -j ACCEPT
iptables -A OUTPUT -o $Local -j ACCEPT

#Verbotene eingehende NEW TCP Verbindung
iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP

#Erlaubte ausgehende TCP Verbindung
iptables -A OUTPUT -o $Local -p TCP -j ACCEPT

#Erlaube alle stehende Verbindungen vom lokalen Rechner
iptables -A INPUT -i $Local -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i $Local -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT


#Verbot von Extern
iptables -A INPUT -i $Extern -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i $Extern -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i $Extern -s 192.168.0.0/24 -j DROP


#Log den Rest
iptables -A OUTPUT -j LOG --log-prefix "darf nicht raus"
iptables -A FORWARD -j LOG --log-prefix "darf nicht durch"
iptables -A INPUT -j LOG --log-prefix "darf nicht rein"

HangLoose
08.10.03, 22:40
Hi Uta



soll ich diesen eintrag ganz rausnehmen?
#Verbotene eingehende NEW TCP Verbindung
iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP

im prinzip ist diese regel überflüssig, da deine default policy auf DROP steht. was ich in meinem letzten posting sagen wollte => wenn du auf connection tracking, also new, established etc. arbeitest, was auf jedefall sinnvoll ist, brauchst du nicht mit tcp flags arbeiten. iptables erkennt auch ohne die flags ob es sich um ein neues paket handelt.


ipforward kannste auch wieder rausnehmen. ich nahm an, es handelt sich um einen router ;).


damit solltest du ins web kommen

# iptables-Modul
modprobe ip_tables
# Connection-Tracking-Module
modprobe ip_conntrack
# Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp

# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Default-Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Connection-Tracking aktivieren
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Default-Policies mit REJECT
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP


ps: ich weiß, das drop nicht die feine englische art ist, hab jetzt keine lust das zu erläutern ;)



Gruß HL

Ryanika
09.10.03, 08:33
moin moin :-)

habe dein script übernommen. habe jetzt auch verstanden, was du mit dem übrflüssig meintest. fehlermeldungen sind alle ausgemerzt, heute abend teste ich daheim, ob ich wieder online gehen kann.
werde mich jetzt erstmal mit der nicht feinen englischen art beschäftigen ;) möchte doch etwas an dem script selbst hinbekommen. vielen dank für deine hilfe :) :)

gruss Uta

HangLoose
09.10.03, 11:34
moin ;)

ich war ehrlich gesagt zu faul, dein script zeile für zeile auseinander zu nehmen ;).

wenn du etwas mehr über die feine englische art wissen möchtest, schau dir mal folgenden thread an => http://www.linuxforen.de/forums/showthread.php?s=&threadid=101621


so ziemlich am ende von diesem thread, findest du ne erklärung, warum man statt einem DROP besser ein REJECT verwendet.

hier noch ein link, wo die funktionsweise von iptables recht verständlich erklärt wird => http://www.linux-user.de/ausgabe/2002/05/030-firewall/firewall-4.html


so und jetzt viel spaß beim aussperren am eigenen rechner ;)


Gruß HL

cane
09.10.03, 13:42
start stop script??? das habe ich garnicht. ist das dringend erforderlich?
kopiert habe ich die alte datei, die läuft auch ohne fehlermeldung.


Mit einem start stop script kannst Du die Firewall einfach über firewall start laden.

Generell erforderlich ist das natürlich nicht...

cane

Ryanika
10.10.03, 11:47
jetzt habe ich zig scripts selbst geschrieben, aber die firewall läst mich auf arbeit nicht ins internet. ich denke, dass ich eine variable falsch setze. und zwar gehe ich über einen router ins internet. ich will aber für meinen rechner trotzdem zum üben ein firewallscript schreiben. welchen wert gebe ich bei einem router der ins internet geht an, statt ppp0 oder ippp0? die router IP??

das verbieten klappt zumindest schonmal hervorragend :D


und noch eine frage.
ich habe als mündliches prüfungsthema *installieren und konfigurieren einer firewall*
ich kanns entweder komplett selbst schreiben (iptables) oder die suse firewall on cd (alte version)
nehmen. ist ein selbst geschriebens script genauso gut wie solch eine software? was würdet ihr nehmen?

gruss Uta

HangLoose
10.10.03, 11:54
moin Uta

wenn der rechner ein client ist, gibst du die netzwerkkarte an. müßte in deinem falle also eth0 sein. mit ppp0 bzw. ippp0 kommst du gar nicht in berührung auf dem client, musst du also auch nicht angeben.


zu deiner zweiten frage:

ich würde mich an deiner stelle für ein selbstgeschriebenes script entscheiden. die susi on cd *arbeitet* intern ja auch nur mit iptables/netfilter.



Gruß HL

Ryanika
10.10.03, 14:04
ich habs, ich habs :) :) :) :)

endlich habe ichs geschafft, eine minute vor feierabend

könnte dir für deine hilfe um den hals fallen - danke HL :)

HangLoose
10.10.03, 14:16
tu dir keinen zwang an ;)


Gruß HL

Ryanika
10.10.03, 16:24
*umdenHalsfall* *g* ;)