[NEU] schnelles iptables / ip6tables interface für die 7270 (v.0.8.3a) + 7390 etc...

Moin cando,

modsave sichert "/tmp/flash" , in /var/flash/freetz werden diese Dinge gespeichert, das ist ein "Special-Device"!

Jörg
 
modsave flash bringt das selbe Ergebnis, andere Optionen als flash und all kenne ich nicht.
 
Hallo MaxMuster,

Ich weiss, ich mache folgendes :

cat /var/flash/freetz > /var/media/ftp/uStor01/freetz.tar

und dann kann ich mir den Inhalt wunderbar ansehen. Die Dateien, die ich händisch angelegt habe sind nicht drin.
 

Anhänge

  • Screenshot-freetz.tar .png
    Screenshot-freetz.tar .png
    49.1 KB · Aufrufe: 30
Du hast die Datei an die falsche Stelle kopiert. Sie muss nach /tmp/flash:
Code:
/var/mod/root # ls -l /tmp/flash/myfile.txt
ls: /tmp/flash/myfile.txt: No such file or directory
/var/mod/root # echo "ABCDEFGH" > /tmp/flash/myfile.txt
/var/mod/root # ls -l /tmp/flash/myfile.txt
-rw-r--r--    1 root     root            9 Jan  1 01:11 /tmp/flash/myfile.txt
/var/mod/root # cat /tmp/flash/myfile.txt  
ABCDEFGH
/var/mod/root # modsave 
Saving users, groups and passwords...done.
Saving config...done.
Writing /var/flash/freetz...done.
22528 bytes written.
/var/mod/root # reboot 
/var/mod/root # Connection closed by foreign host.
joerg@joerg-desktop:~$ telnet 10.10.11.88
Trying 10.10.11.88...
Connected to 10.10.11.88.
Escape character is '^]'.
fritz.fonwlan.box login: root
Password: 
   __  _   __  __ ___ __
  |__ |_) |__ |__  |   /
  |   |\  |__ |__  |  /_

   The fun has just begun...


BusyBox v1.12.4 (2009-10-02 17:06:34 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

ermittle die aktuelle TTY
tty is "/dev/pts/0"
Console Ausgaben nicht umgelenkt
/var/mod/root # cat /tmp/flash/myfile.txt 
ABCDEFGH
/var/mod/root #

Jörg
 
Danke, da muss man erst mal drauf kommen!

Ich nehme alle zurück! Da kann ich mir die Klimmzüge ja sparen. Obwohl, wenn es mit den Settings eng wird, ist ein eigenes Device gar nicht so übel...

:groesste:
 
Klar, der Platz ist begrenzt und mit USB bist du flexibler. Aber für "kleinere Konfigs" reicht es schon ;-)

Weiterhin viel Erfolg, die GUI find ich klasse!

Jörg
 
@cando: Da kamen sehr viele Fragen von dir, die ich jetzt nicht alle beantworten will und kann. Zum einen gewissen Chaotismus kann ich auch sagen, dass es existiert, aber wie MaxMuster bereits sagte, es ist auch gut so.

Nimm bitte meinen Downloader als Beispiel. Es ist relativ klein, hat keine Binaries zum kompilieren, hat Paar Shell-Skripte und bedient eine Extra-Seite (zugegeben, das machen bis jetzt nur Downloader und Callmonitor). Wenn du konkrete Fragen hast, kurz eine PN an mich, dann tauschen wir unsere ICQs (oder was auch immer) aus und ich kann dir etwas mehr über die eine oder andere Zeile erzählen.
Jetzt versuche ich meine Infos hier Preis zu geben, von denen ich etwas mehr weiß, weil ich öfters die FREETZ-cgis programmiert hatte.
1. Im Normalfall programmierst du deine paket.cgi, wie du schon richtig erkannt hast. Diese paket.cgi ist aber in einen gewissen Rahmen eingeschlossen. Die cgi bekommt einen header in dem unter anderem eine <form> deklariert ist. Im footer wird diese Form erst verständlicherweise geschlossen. Die Form ist so konzipiert, dass im Normalfall alle deine Einstellungen mehr oder weniger automatisch gespeichert werden, sobald du auf "übernehmen" klickst.
2. Es existieren aber Sonderfälle, wo du nicht unbedingt irgendwas speichern willst, sondern diesen verdammten Umhüllrahmen mit dem form-tag und Übernehmen-Knöpfen weg haben willst. Eine Möglichkeit dafür sind cgi-s unter extras zu packen. Wie gesagt, schau einfach meinen downloader. Denn kannst du sogar mit ins Image nehmen, schadet nicht.
3. Eine andere Möglichkeit die Sachen etwas freizügiger zu gestalten besteht darin, sie unter "status" zu packen. So hatte ich es gemacht, als ich "box-info" und "freetz-info" realisiert hatte. So ähnlich funktionieren auch "Partitionen" und neuerdings Log von vsftp. Wäre also auch eine Möglichkeit. Allerdings, wenn du die Seiten unter Status dynamisch ein-/ausblenden willst, musst du da irgendwas an zwei Stellen eintragen.
4. Wenn du shell-Skripte für dein Paket brauchst, kannst du sie unter /usr/bin oder auch wo anders persistent im Flash ablegen. Schau einfach beim downloader ab, wie ich es realisiert hatte. Wenn sich die Skripte allerdings dynamisch ändern sollen (was ich eher nicht glaube), muss man überlegen, wie man es am besten realisiert. Möglich wäre z.B. eine Möglichkeit, bestimmte Skriptvorlagen im Flash persistent abzulegen. Dann wenn du dynamische Skripte generierst, sie dann per cat/grep/sed zu Recht zusammenbasteln und im RAM abzulegen und von dort starten. Abspeichern würde ich dann nur die dynamischen Infos, nicht die Skripte selbst, obwohl es eigentlich auch ginge.
5. Es gibt noch die conf-Dateien, die du als config-cgis im WebIF registrieren kannst. Solche dateien findest du dann direkt unter Einstellungen und kannst sie im WebIF editieren.

MfG
 
nur für 7270?

Hi cando,

das Interface ist ein sehr guter Ansatz! Anstatt der debug.cfg käme vielleicht (bis zur vollständigen Freetz-Integration ;) ) auch rc.custom als Speicherort für persistente Rules in Betracht. Ich habe rc.custom bisher genutzt, um die von Hand erstellten Rules per iptables -A beim Start anzulegen. Die erforderlichen Module werden beim Booten vorher über Freetz:modules geladen.

Nun zum eigentlichen Anliegen: Gibt es in Deinem Code irgendwelche 7270-spezifischen Besonderheiten? Ich habe das ganze mal auf einer 7170 ausprobiert und bislang nichts Auffälliges gesehen, wobei sich meine ersten Tests auf das Erstellen, Editieren und Löschen sehr simpler Rules beschränkt haben.

Beste Grüße vom alpha!
 
[...]
Natürlich ist es wegen der Sicherheit viel besser, die Box möglichst frühzeitig abzuriegeln, [...]

Ich habe das bei mir so gelöst:
Code:
# cat /var/tmp/flash/[B]iptables_rules[/B]
-F
-t nat -F
-t mangle -F
-X
[B]-P FORWARD DROP[/B]
und die rc.custom startet ein Script (aus /tmp/flash/mod/) mit dem auch die INPUT chain zugemacht wird und dann mit Regeln gezielt geöffnet wird:
Code:
.....
$ipt [B]-P INPUT DROP[/B]
$ipt -F
$ipt -t nat -F
$ipt -t mangle -F
$ipt -X
.....
.....

Chain INPUT (policy DROP 0 packets, 0 bytes)
...
Chain FORWARD (policy DROP 56 packets, 3104 bytes)
 
Darf ich vielleicht noch was beisteuern:
Die "alte" GUI habe ich (weil sie nicht alles konnte, was ich wollte) schon immer "missbraucht", und nur die Datei iptables_rules genutzt (unter Einstellungen), in der die eigentlichen Regeln standen.

Das wäre etwas, was vielleicht auch was für dich wäre: Die resultierenden (oder vorhandenen/eingelesenen) Regeln in ein "file" zu schreiben (du kennst ja jetzt "modreg file" ;-)) oder diese in einem Bereich in der GUI in einer (ausblendbaren) Textarea zu zeigen (könntest du dir bei der AVM-FW-GUI mit dem "Debug-Schalter" ansehen).
Über diesen letzten Weg wäre die eigentliche iptables-Config dann zugleich auch relativ einfach über freetz specherbar, wenn du z.B. in der .cfg-Datei export NHIPT_IPTRULES='' aufnimmst reicht dafür z.B. ein
Code:
<textarea id="id_rules" name="iptrules">$(iptables -S)</textarea>
wenn man den Inhalt des Felds entsprechend "pflegt" ;-).

Ansonsten: Die "Protokoll-Auswahl" ist für mich noch nicht "optimal" und mir persönlich zu unflexibel (zumindest gre und esp fände ich wichtig/sinnvoll, andere brauchen bestimmt noch was anderes). Durch die Aufnahme von Protokoll und "Nichtprotokoll" wird sie auf der anderen Seite schon recht lang.
Ich weiß, was Ideales gibt es nicht, aber könnte man nicht
- zumindest eine "Zahlen-Protokollwahl" am Ende aufnehmen
- oder noch ein paar "wichtige" Protokolle aufnehmen und die Negation "rausziehen"
- oder beides ;-)?

Für weitere "Extrawünsche" wäre natürlich die obrige "Textfensteridee" auch eine alternative Möglichkeit, wenn sie editierbar ist oder eine "frei Eingabezeile", ähnlich wie bei der AVM-Firewall, mit der man auch solche Sonderwünsche hinbekäme...

Wie gesagt, alles nur Anregungen, der Ansatz ist schon jetzt sehr vielversprechend !!

Jörg

PS: Bezüglich "gre" und "esp" muss ich mir übrigens auch an die eigene Nase packen, dass "kann" die AVM-FW-GUI auch nicht vollständig, obwohl es der dsld kennt ;-)
 
Zuletzt bearbeitet:
Hallo,

Danke für die Infos. Ich komme leider erst jetzt dazu, die zu lesen, und brauche noch ein wenig, um das alles zu verarbeiten.

Ich habe eine neue Version von (gestern nacht) hochgeladen, in der bereits die freetz mimik zum Persistieren (modsave flash) eingeaut ist und der Speicherort für den bootloader nicht mehr exclusiv die debug.cfg ist.

In der debug wird lediglich eine kleine section eingefügt für den Startvorgang, die Regeln werden aus dem Flash oder vom Stick in die Ram-Disk geladen und ausgeführt. Der Bootvorgang am Stick ist mit einer kurzen Schleife von maximal 40 Sekunden ( 8 * 5 Sekunden, pollen ob der stick schon ansprechbar ist) verzögert.

Zum Spielen bestens geeignet, Aussperren nach Stick Ziehen behoben.
Wenn man nicht persistiert, kann eh nichts passieren.

Später wird den "urlader" in der debug.cfg ein normaler Freetz Deamon ersetzen, denn man über die Oberfläche an / Ausschalten kann und der das init schript kopiert und aufruft.

Zu den Diensten. Ich baue gerne noch mehr ein, ich habe mich zunächst auf die "normalen" beschränkt für eine "minimal" Konfiguration mit den gängigen Regeln.

[EDIT:] ah, !ah, gre, !gre, esp, !esp hinzugefügt.

NAT und die ganzen Tunnelsachen habe ich selbst mit iptables noch nicht probiert, da ich dafür zu Hause noch keine Anwendung habe. Ich kenne die Thematik aus meiner früheren Tätigkeit von den "größeren" Hobeln wie Netscreen & Co.

Über die "experten"- Kommandozeile kann man ja jeder iptables Kommando absetzen un unten in der Statuszeile bekommt man die Response serviert, also auch iptables -S oder iptabler -t TABELLE - A CHAIN ähnliches als Workaround.

Ich nehme auf alle Fälle die NAT Rules noch mit herein, bei den Protokollen gern alles, was geht. Ich muss mir noch eine Mimik einfallen lassen, um dynamisch die Module zu verwalten (anhand der eingegebenen Regeln), denn ich möchte nicht alles mögliche auf Verdacht laden. Ist aber etwas tricky und erforder noch ein wenig Erforschung.

Zu Deiner Frage zur 7170. Ich habe leider keine solche Box, kenne aber vom Hörensagen (alter IPTables cgi würde mit der 7270 nicht laufen, weil im alten Kernel ein paar Tabellen / module anders heissen würden, oder Regeln andere Parameter hätten und mit dem conntrack wohl auch irgend was faul wäre?).

Mangels Testobjekt kann ich also hier nicht wirklich was dazu sagen, bin aber für Hinweise natürlich dankbar. Ich würde auch eine Maske mal Bauen, wo der Anwender selbst die Module selektieren kann, die geladen werden sollen (oder eine eingfache Liste im freetz cgi?). Ich fände die dynamische Lösung aber eleganter.
 

Anhänge

  • protocols.jpg
    protocols.jpg
    62.6 KB · Aufrufe: 17
Zuletzt bearbeitet:
Ich würde auch eine Maske mal Bauen, wo der Anwender selbst die Module selektieren kann, die geladen werden sollen (oder eine eingfache Liste im freetz cgi?). Ich fände die dynamische Lösung aber eleganter.
Die dynamische Lösung hat einen höheren Support-Aufwand, falls sich Module-Namen ändern und/oder für verschiedene Boxen unterschiedlich sind. Eine einfach zu editierende Module-Liste im Freez-Cgi gibt es bereits: Unter Einstellungen --> Freetz:modules. Ist zwar nicht iptables-spezifisch, aber das macht ja nichts.

Zum Thema Aussperren: Beim Ändern der default policy für die INPUT-Chain kann es meines Erachtens nicht genug Warnungen geben...

BTW: Auf der 7170 läuft iptables bei mir stabil (auch wenn es gelegentlich zu kernel badnesses kommt, die aber ihre Ursache im closed source Wlan-Treiber haben).
 
Zum Thema Aussperren: Beim Ändern der default policy für die INPUT-Chain kann es meines Erachtens nicht genug Warnungen geben...

Mein Reden. Und vor allem nicht genug an "doppeltem Boden". Denn es gibt genug experimentierfreudige, die alles mögliche versuchen, ohne zu wissen, was dahintersteckt, und was passieren kann. Ergo wird es genug geben, die "default deny" für gut erachten, und vergessen, die Ausnahmen im Vorfeld hinzuzufügen, geschweige denn, dass sie Ahnung haben, wie iptables - auch nur grob - funktioniert.

Ich bin zwar auch am überlegen, ob ich miener "selber schuld"-Tendenz da nachgeben sollte, oder ob ich mir lieber versuche, was wirklich "Idiotensicheres" zu überlegen...
 
... solange das eigentliche Starten aus der debug.cfg erfolgt, kann man das ja mit einem Freetz-Image zur Not ja noch über die kernel_args mit "dbg_off=y" wieder abschalten, ansonsten halt den ganzen Mod nicht laden mit "ds_off=y" (müssten wir übrigens mal in freetz_off umbenennen ;-))

Jörg
 
Ihr habt ja alle Recht. Aber irgendwie schaffen es Benutzer immer an alle Sperren vorbeizukommen. Spätestens über Befehle in der shell.

Was die Module angeht, ich habe mal etwas angefangen (Siehe Bild). die Module werden automatisch aus dem System gelesen, erkannt und selektiert, beim Persistieren werden alle geladenen Module in den Loader übernommen, unabhängig davon, wie man dazu kommt (modprobe auf Kommandoebene, per automatischer Erkennung anhand der Regeln etc...). Für Module, die nicht automatisch erkannt werden können (Sonderlocken ftp, tftp, h323, irc, pptp, nat/conntrack...) mache ich, wie unten zu sehen, eine Maske.

Zum Aussperren:

Das soll ein Tool für Profis werden. Die können sich aber auch aussperren. Deshalb folgende empfohlene Methode:

1. Persistieren der Regeln geht NICHT automatisch (ein reboot macht alles wieder gut!)

2. Alles erstmal auf dem Stick probieren, notfalls hilft Stick ziehen.

3. wenn man mit allem zufrieden ist, kann man die Regeln mit Persist in den Fritz-Speicher "flashen"

4. Keine Dateien direkt editieren !!!!

5. Jetzt erst kommen die Themen, Image neu flashen & co.

Übrigens, werde ich noch den "safe mode" (mit Option zum Abschalten) einbauen, wo 2 Regeln immer an erster Stelle stehen für die Admin IP (INPUT ACCEPT für die tcp Ports 22,23,80,81,82 + Firewall Port und OUTPUT connection RELATED, ESTABLISHED). Bei der Natterei muss ich mir noch was einfallen lassen, damit man sich nicht trotzdem ausknockt.

Mehr Airbags fallen mir nicht ein.
 

Anhänge

  • extras.jpg
    extras.jpg
    80.3 KB · Aufrufe: 22
Wie war das mit den X Minuten Pause nach dem Start? Bzw eben erst einmal nur und ausschliesslich auf die Fritzbox kommen oder so etwas schräges? Ich würde so einen Automatismus bevorzugen. Ist besser als ein Airbag, ist nämlich der Zündschlüssel und damit der Garant dafür, dass nicht eine million testwilliger aufgrund falsch verstandener Sicherheitsvorkehrungen sich aus der kompletten Welt aussperren. Auch an non-usb-devices kann man dabei dann denken.
 
@Silent-Tears: Der Zündschlüssel gehört nur bedingt zum Sicherheitkonzept eines Autos, weil dahinter der schwächste und der unvorhersagbarste vom ganzen System sitzt, nämlich der Mensch. Airbag dagegen schon, weil in seiner Signal-/Entscheidungskette solche schwache Entscheidungsträger nicht sitzen. Aber sei es drum, zurück zum Thema. Ich würde es noch anders realisieren und zwar ganz einfach mit den bestehenden Mitteln:
1. Autorun ins Image nehmen.
2. Autorun-Datei schreiben, die iptables als Dienst stoppt.
3. Entweder so einen Billig-Retungsstick irgendwo zur Seite packen, oder einfach wissen, wie die Präparation von solchem Stick in 2 Minuten geht.

Die Sache ist gelöst. Ok, zugegeben, die nicht-USB-Host-Boxen haben verloren. Aber das tun sie sowieso immer und sind zum Aussterben verurteilt.

MfG
 
Tja, und eben die 60cm vorm Bildschirm machen das Problem und haben meist 2 Ohren ;)
 
Kann man alles machen, nur sobald jemand an die Konfig Dateien herumeditiert, hat man verloren. Vom Interface her mache ich es so User-Sicher, wie es nur geht.

Diese Mimik mit der Verzögerung ist ja nur eine Zusatz-Zwangsmassnahme für Punkt 5.) Nichts geht mehr, wenn alle anderen Sicherungen umgangen wurden.

Für die ganz paranoiden (sicherheitsbewußten) Administratoren kann ich ja für den Timeout den dsld stoppen und nach erfolgter iptables Initialisierung wieder starten. Dann denke ich mal, ist die Box auch während der Verzögerung ausreichend geschützt.

Was wäre denn ein akzeptabler wert für die Bremse? Ich möchte nicht jedes mal 5 Minuten warten, bis die Box beim Testen wieder Einsatzbereit ist.;)
 
Ich würde die Zeitverzögerung nur für Boxen ohne USB-Host einführen. Von mir aus kannst du dann DSLD stoppen. 5 Minuten sind zu viel. 2 Minuten reichen vollkommend. Die autorun-Methode würde ich aber auch nicht unterschätzen. Sie würde sicher und ohne einen zusätzlichen Aufwand deinerseits funktionieren. Ich weiß allerdings nicht wie genau die Befehle aussehen müssen, damit man die Regeln entweder "entlädt" oder vielleicht sogar die komplette Firewall stoppt.

MfG
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.