IPtables - Installation klappt bereits nicht.

bunda

New Member
Hallo zusammen,
zunaechst einmal: Happy New Year!

Ich hoffe Ihr koennt mir helfen IPTABLES auf einen Linux receiver (GigaBlue HD Quad PLUS) zu installieren.

Bitte seht mir nach wenn ich hier im falschen Forum gelandet bin...

Mein Vorhaben: Ich moechte mehrere Ports sperren mit IP Tables.
Mein Problem: Anscheinend sind basic commands nicht installiert.


cat /proc/version liefert:
Linux version 3.14.2 (buildserver@buildserver.openmips.com) (gcc version 4.9.1 (GCC) ) #1 SMP Mon Aug 18 22:47:39 CEST 2014


Folgende Kommandos funktionieren bereits nicht:
sudo apt-get install iptables
-sh: sudo: not found

Welche Schritte sind notwendig um apt-get bzw sudo zum laufen zu bringen?

Besten Dank!
 
Mein Problem: Anscheinend sind basic commands nicht installiert.
Wir reden hier über embedded Geräte. Receiver, Router und ähnliches haben oft kaum Speicherplatz auf der OS-Partition und man spart wo man kann. So wirst du auch generell keine vollwertige Bash sondern eine Busybox vorfinden.

sudo apt-get install iptables
apt-get ist ein Debian'sher Befehl, kein Linux-Befehl.
Bei Embedded-Geräte gibt es eher ipkg oder (neuer) opkg was zwar Debians dpkg ähnelt aber nicht 1:1 ersetzt. Hier ein Crashcours:
http://wiki.et-view-support.com/index.php?title=Paketverwaltung_über_die_Shell

Erfahrungsgemäß wäre es, wenn möglich, einfacher auf dem vorgeschalteten Switch/Router die Filterung zu übernehmen als auf dem Receiver welche vergleichsweise oft mit neuen Konfigurationen / Änderungen versehen werden.
Achtung: es kann sein dass der Kernel gar nicht erst die notwendigen Module aktiviert oder kompiliert hat wenn die Userland-Tools fehlen!
 
Danke für die Antworten und sorry für den late reply.

opkg hat funktioniert!
Ich konnte iptables installieren und opkg update / upgrade erfolgreich ausführen. Step by step geht es mir Eurer Hilfe vorran - DANKE!!

Das Anzeigen der aktuellen Regeln (default) mit iptables -L gibt folgende Antwort:
root@gbquadplus:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination


Jedoch erhalte ich folgende Fehlermeldung beim Versuch eine Regel einzupflegen:
iptables -A INPUT -p tcp --match multiport --dports 11000,15000 -j DROP
iptables: No chain/target/match by that name.

Meine Recherche ergab, dass ich noch das xt_tcpudp Modul benötige, welches mit folgenden Kommando funktionieren SOLLTE: modprobe xt_tcpudp
Doch leider erhalte ich folgende Fehlermeldung:
modprobe xt_tcpudp
modprobe: FATAL: Module xt_tcpudp not found.


lsmod gibt folgendes aus:
root@gbquadplus:~# lsmod
Module Size Used by
iptable_filter 880 0
ip_tables 11449 1 iptable_filter
x_tables 14600 2 ip_tables,iptable_filter
ipv6 370729 28
dvb 10145662 10


Für Hinweise wie ich xt_tcpudp installiert bekomme bin ich sehr dankbar!

Beste Grüsse!
 
Oder vielleicht ein Forum empfehlen wo mir geholfen werden könnte? Gerne auch in Englisch...

Danke
Bunda
 
wie schon gesagt handelt es sich hier um embedded Geräte. Als Resultat kannst du nicht die volle Funktionsumfänge der Desktop-Pendante erwarten - an allen Stellen wird Abstrich gemacht um Größe und Leistungshunger zu reduzieren, so auch an Kernelmodulen. Wenn das Modul nicht integriert oder nachladbar ist so gilt wie oben beschrieben dass du den Kernel wechseln oder Module nachkompilieren darfst.

Eventuell funktioniert die alternative Syntax "iptables -A INPUT -p tcp --dport 1000:2000" wenn du Ranges matchen willst. Bei deiner Beispielregel versucht du jedoch genau 2 Ports zu blockieren, das könnte man auch über ein Duplizieren der Regel bewerkstelligen.
Eine konkrete Beschreibung deines Ziels könnte hier deutlich weiterhelfen.
 
@d4f: alternative Syntax liefert die gleiche Fehlermeldung, trotzdem Danke für die Mühe!

@MadMakz: Danke! will try! Aber grosse Hoffnung habe ich (dort) nicht

Gruß!
 
Was versuchst du zu realisieren. Wie gesagt - ohne Details kann man keine möglichen Alternativen vorschlagen. Eine gangbare Methode ohne große Änderungen an der Firmware wäre wie bereits besprochen die Vorschaltung eines entsprechenden Routers mit Firewall-Kapabilität.
 
Hi d4f,

ich möchte einzelne Ports (derzeit 11000 und 15000) im Receiver sperren.
Mir ist klar das dies am router möglich ist, jedoch möchte ich die direkt in der Box sperren.

Ich bin sehr offen für andere Wege, solange es in dem Receiver läuft.
Bin halt bei meiner Suche immer wieder auf Iptables gestossen....

Zusammenfassend: Einzelne Ports sperren, jedoch Multimedia Funktionen des Receivers erhalten!

Gruß!
 
Wenn du nur einzelne Ports sperren willst, dann verwende einfach getrennte Regeln:
iptables -I INPUT -p tcp --dport XXX -j DROP
 
root@gbquadplus:~# iptables -I INPUT -p tcp --dport 15000 -j DROP
iptables: No chain/target/match by that name.

Hatte ich bereits anhand deiner gestrigen Antwort getestet.
 
Mit Umwegen doch geschafft!

Ich habe herausgefunden, dass sich IP´s sperren lassen. Hier glücklicherweise keine Fehlermeldung.

Doch es ist zum MÄUSEMELKEN!!!
Die Regel ist nur im Arbeitsspeicher und lässt sich nicht speichern.

opkg install iptables-persistent liefert:

root@gbquadplus:~# opkg install iptables-persistent
Unknown package 'iptables-persistent'.
Collected errors:
* opkg_install_cmd: Cannot install package iptables-persistent.
root@gbquadplus:~# Unknown package 'iptables-persistent'.
-sh: Unknown: not found
root@gbquadplus:~# Collected errors:
-sh: Collected: not found
root@gbquadplus:~# * opkg_install_cmd: Cannot install package iptables-persiste
nt.
-sh: apt_0.8.10.3+squeeze1_i386.deb: not found



/sbin/service iptables save liefert:
root@gbquadplus:~# /sbin/service iptables save
-sh: /sbin/service: not found

service ddclient start
Liefert ebenfall eine Fehlermeldung!

Hi d4f Du hast mir bereits gute Hinweise gegeben - hast Du auch für das Speichern der Regeln eine Idee?

Danke!
 
Last edited by a moderator:
Ich habe herausgefunden, dass sich IP´s sperren lassen. Hier glücklicherweise keine Fehlermeldung.
Das entspricht aber nicht wirklich der Anforderung :D
IP's kann man alternativ über nullrouting blockieren.

Die Regel ist nur im Arbeitsspeicher und lässt sich nicht speichern.
Iptables-Regeln sind IMMER nur im Arbeitsspeicher. Die einfachste Lösung ist, sie in ein Shell-Skript zu packen also:
Code:
#!/bin/sh
/sbin/iptables .... REGEL1 ...
/sbin/iptables ....REGEL2 ....
Beachte dass dein iptables-Pfad ("which iptables" oder "whereis iptables") sich nach Plattform von /sbin/iptables unterscheiden kann.
Dies dann als Startskript ausführen lassen, variiert wieder nach Plattform. Falls Cron installiert ist, kannst du es über folgende Zeile in /etc/cron.d/DEINCRON machen:
Code:
@reboot root /pfad/zu/iptables-skript.sh
 
Hi d4f,

cron ist anscheinend nicht installiert.

which iptables liefert mir: /usr/sbin/iptables

Ich war (bin immer noch) auf folgenden Ansatz gekommen.

Anstatt die Regel in den Skipt zu packen würde ich diese lieber mit speichern und im skript restore aufrufen.

Müsste doch so gehen:
iptables-save > /dsl.fw

jetzt müsste ich nur das Kommando
iptables-restore < /dsl.fw in den Skript bekommen und kann somit bequem iptables verändern (wenn nötig) und dies einfach wieder mit iptables-save > /dsl.fw speichern und könnte sicher sein die Regel sind nach einem reboot wieder aktiv.

Habe dann mit vi /etc/rc.local das Kommando /usr/sbin/iptables-restore < /dsl.fw eingefügt und gespeichert.

Passt das?
Dachte jetzt ist es aktiv, doch nach dem reboot waren alle Regel weg. Ich kann diese aber mit iptables-restore < /dsl.fw wieder herstellen - also soweit klappt das.
root@gbquadplus:~# usr/sbin/iptables-restore < /dsl.fw
-sh: usr/sbin/iptables-restore: not found
root@gbquadplus:~# /sbin/iptables-restore < /dsl.fw
-sh: /sbin/iptables-restore: not found
root@gbquadplus:~# iptables-restore < /dsl.fw
root@gbquadplus:~#

Ich habe wohl noch nicht verstanden wie der nächste Schritt aussehen muss.

Hoff Du hast noch ein wenig Geduld mit mir :o
 
Last edited by a moderator:
Wenn iptables-save verfügbar ist, ist das eine weitere Lösung, ja.
Wenn rc.local dein Skript nicht aufruft bedeutet das dass beim Ausführen ein Fehler aufgetreten ist. Das kann fehlende Berechtigung, Tippfehler oder eine andere Ursache haben.

Kannst du rc.local mit "sh -e /etc/rc.local" manuell ausführen oder gibt das Fehler? Alternativ kannst du die Logdateien (boot.log, messages oder dmesg in /var/log) nach möglichen Fehler überprüfen. Ich nehme an dass du hier den Pfad zu iptables-save vergessen hast. System-ausgeführte Befehle haben keine umfangreiche Umgebungsvariablen vorliegen und somit ist es zwingend den vollen Pfad zu iptables-restore an zu geben.
Mit etwas Glück kannst du ansonsten durch folgende Änderung der Befehlszeile den Fehler speichern:
Code:
pfad/zu/iptables-restore < /dsl.fw > /tmp/restore.log 2>&1
 
Hi d4f,

war ne weile dienstlich im Ausland und kann mich erst jetzt wieder der Sache widmen.

sh -e /etc/rc.local gab mir "sh: illegal option -/" aus...

Gruß!
 
Back
Top