PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables unter suse7.1 - flush aller chains and user-chains



gizmo
30.06.01, 15:57
hallo,

ich arbeite mit linux 7.1, kernel 2.4 und möchte ein skript zum löschen aller chains schreiben.
Im schlauen "firewallbuch buch" von suse, steht ein skript zum löschen aller regeln:

#!/bin/tcsh
# skript: /root/fw/clear_all_rules
# -------------------------------------------

set IPTABLES = /usr/sbin/clear_all_rules

# -------------------------------------------
# default policy rücksetzen

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

# -------------------------------------------
# flush aller chains, löschen aleer user-chains

$IPTABLES -F
$IPTABLES -X

exit 0

Das skript habe ich mit vi geschrieben, und dementsprechende rechte vergeben.
sobald ich dieses skript starte und "exit 0" entfernt habe um das ergebniss zu betrachten, bekomme ich diese ausgabe:
bash: -P: command not found
..... -P...................
......-P..................
......-F................
......-X................

gestartet habe ich es so:
. /root/fw/clear_all_rules

kann mir dá jemand weiterhelfen
danke gizmo

SmackTV
30.06.01, 21:39
hi gizmo,

Hmmm, die Zeile:

set IPTABLES = /usr/sbin/clear_all_rules

ist ja absoluter Quatsch. Es legt nämlich eine Variable an, welche auf die Datei /usr/sbin/clear_all_rules :mad: zeigt und mit der Variable soll das iptables aufgerufen werden.

Mach mal folgendes:

1. Änder den Pfad (siehe oben) in /usr/sbin/iptables (oder halt zu dem Verzeichnis wo bei dir iptables installiert ist).

2. Oder du nimmst die Variable komplett raus und rufst iptables mit dem kompletten Pfad auf. Bsp: /usr/sbin/iptables -P INPUT ACCEPT

Tip: Wenn du das Script dazu verwenden willst, die Regeln deiner FW nach beenden des Systems zu flushen, solltest du die Policy auf DROP setzen.

MFG, SmackTV

[ 30. Juni 2001: Beitrag editiert von: SmackTV ]

gizmo
02.07.01, 06:42
ich trau mich garnicht mehr zu antwortern!
habe mich im eifer des gefechts verschrieben,
endschuldige SmackTV!

#!/bin/tcsh
# skript: /root/fw/clear_all_rules
# -------------------------------------------

set IPTABLES = /usr/sbin/iptables

so steht es geschrieben, das problem ist jedoch das gleiche, habe es im skript richtig geschriebn.

"2. Oder du nimmst die Variable komplett raus und rufst iptables mit dem kompletten Pfad auf. Bsp: /usr/sbin/iptables -P INPUT ACCEPT"
habe es so versucht:
set iptables = /usr/sbin/iptables -P INPUT ACCEPT (und so weiter)
das skript läuft durch, das problem, wenn ich zum beispiel, diese regel definiere:
iptables -A FORWARD -i ippp0 -o eth0 -p tcp -s 192.168.1.0/24 --sport 1024:65535 -d 0.0.0.0/0 --dport 80 -j ACCEPT
sehe ich diese mit iptables -L
so wie ich das verstehe soll das skript diese regel löschen, macht es aber nicht :-(

der text zu diesem skript:

"Alle Regeln löschen
es kann beim experimentieren mit filterregeln auch mal notwendig werden, alle Filterregeln wieder zu löschen, jedesmal den rechner neu zu starten, ist zu aufwendig und gar nicht notwendig: hier ein skript, mit dem man alle filterregeln löschen kann: siehe oben"

vielen dank schonmal

gizmo
02.07.01, 06:50
so geht es:!!!

set iptables = /usr/sbin/iptables
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -X

trotzdem vielen dank, besonders an SmackTV
gizmo

jgbauman
02.07.01, 18:17
in dieser from kannst du auch das set weglassen.
Das Proplem ist folgendes:
Das Skript ist fuer tcsh geschrieben (siehe erste Zeile). Deswegen wird die variable IPTABLES mit set gesetzt.
Aus irgend einem Grund (ist /bin/tcsh ein smylink auf bash?) fuehrst Du es aber mit der bash aus. Dann solltest Du
IPTABLES=/usr/sbin/iptables
verwedenden um die Variable zu setzten (ohne set und Leerzeichen um =).

In deiner Loesung benutzt Du nicht die Varibale $IPTABLES, sondern rufts einfach iptables auf, dass bei Dir wohl im Pfad liegt.