Archiv verlassen und diese Seite im Standarddesign anzeigen : Firewall konfiguriert
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
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
wäre auch meine vermutung, das das x flag verloren gegangen ist.
Gruß HL
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?).
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
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
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
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
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
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"
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
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
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
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
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
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
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 :)
tu dir keinen zwang an ;)
Gruß HL
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.