IP-Range sperren?

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
IPs von Ländern sind auch nur eine grosse Liste von ip Ranges resp Subnets. Theoretisch könnte man heute mit der DS schon folgendes machen: Erstmal eine Liste der Subs für die gewünschten Länder erstellen (ein Sub pro Zeile, normales Textfile). Dafür gibt es Generatoren im Internet. Diese Subs kann man dann relativ einfach mittels weniger Zeilen Shellcode in die iptables schreiben. Dabei ist das File mit den Subs als /tmp/subs.txt auf der DS:
Code:
for i in (cat /tmp/subs.txt) ; do
 iptables -A INPUT -s $i -j DROP
done
ich bleib dabei und würde trotzdem nicht empfehlen ganze Länder zu blocken. Das werden sehr schnell abertausende von Einträge ;-)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Code:
grep '192.168.100.1' /pfad/verzeichnis/*
obiges sollte eigentlich gehen und würde in pfad/verzeichnis alle Dateien nach dem String 192.168.100.1 durchsuchen
 

rauppe31

Benutzer
Mitglied seit
06. Jun 2011
Beiträge
2.734
Punkte für Reaktionen
0
Punkte
82
Also könnte ich das ganze NAS mit dem Befehl

grep '192.168.100.1' /

durchsuchen.
Verstehe ich das richtig?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
und falls du nur die Dateinamen willst wo Treffer drin vorkommen dann kombiniere es noch mit awk
Code:
grep '192.168.100.1' /path/verzeichnis/* | awk -F: '{print $1}'
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Also könnte ich das ganze NAS mit dem Befehl
Verstehe ich das richtig?
falsch :)
Wenn schon /* für das Verzeichnis, aber auch dies würde nicht rekursiv suchen, sondern nur direkt in / alle Files durchsuchen. Würde aber z.B. /root/datei nicht durchsuchen. Wenn du wirklich Rekursion willst würde ich find empfehlen
Code:
find / -type f -exec grep '192.168.100.1' {} \;
find geht rekursiv durch. Aber das dauert sehr sehr sehr lange, weil z.B. auch alle externen Platten durchsucht werden. Nach Möglichkeit solltest du also nicht / als Basis nehmen
 

rauppe31

Benutzer
Mitglied seit
06. Jun 2011
Beiträge
2.734
Punkte für Reaktionen
0
Punkte
82
Ich möchte halt die Datei finden, wo die geblockten IPs drinnstehen. Habe auch schon Synology angefragt, bisher aber noch keine Antwort.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Woher weisst du dass es eine Textdatei ist? Vielleicht ist es ein File im Binärformat. Da würde grep eh nichts finden, der kann nur Textfiles sinnvoll durchsuchen
 

rauppe31

Benutzer
Mitglied seit
06. Jun 2011
Beiträge
2.734
Punkte für Reaktionen
0
Punkte
82
Habe vorhin Post von Synology bekommen.
Sie sagen, dass es keine Datei mit den IP Adressen gibt.
Wird dann wohl doch ein Binärfile sein.
 

raymond

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
4.704
Punkte für Reaktionen
21
Punkte
118
Die geblockten IPs standen in einem nicht wirklich lesbaren Format zur Verfügung, habe ich da auch mal informiert, wo es hieß, dass jemand bestimmte IPs von der Automatischen Blockierung rausnehmen wollte. Synology sollte endlich implementieren, dass für bestimmte IP-Bereiche (Länder, Kontinente, selbst definierte IPs bzw. Bereiche) kein Login, oder nur userlogin erlaubt ist (kein admin). Wo die Datei lag kann ich dir nicht sagen, glaub im /etc Verzeichnis. War die File /etc/synoIPs.deny
 
Zuletzt bearbeitet:

rauppe31

Benutzer
Mitglied seit
06. Jun 2011
Beiträge
2.734
Punkte für Reaktionen
0
Punkte
82
Die geblockten IPs standen in einem nicht wirklich lesbaren Format zur Verfügung, habe ich da auch mal informiert, wo es hieß, dass jemand bestimmte IPs von der Automatischen Blockierung rausnehmen wollte. Synology sollte endlich implementieren, dass für bestimmte IP-Bereiche (Länder, Kontinente, selbst definierte IPs bzw. Bereiche) kein Login, oder nur userlogin erlaubt ist (kein admin).

Weisst du noch, wie die Datei hiess?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Die geblockten IPs standen in einem nicht wirklich lesbaren Format zur Verfügung, habe ich da auch mal informiert, wo es hieß, dass jemand bestimmte IPs von der Automatischen Blockierung rausnehmen wollte. Synology sollte endlich implementieren, dass für bestimmte IP-Bereiche (Länder, Kontinente, selbst definierte IPs bzw. Bereiche) kein Login, oder nur userlogin erlaubt ist (kein admin).
Das klingt sehr nach Binärformat. Kennst du Namen und Pfad der Datei? Wenn ja dann könnte man z.B. mittels strings mal gucken ob man Textstrings aus dem File lesen kann. strings ist glaub bei der Firmware ned dabei. Sollte es aber in ipkg in irgendeinem der utils Pakete geben. Frag mich aber nicht welches :)
 

raymond

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
4.704
Punkte für Reaktionen
21
Punkte
118
Siehe edit:
/etc/synoIPs.deny
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
ist die Datei sicher binär und nicht etwa nur IPs in dezimaler Schreibweise? 10-stellige Zahlen würde auf IPs im Dezimalformat hindeuten
 

raymond

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
4.704
Punkte für Reaktionen
21
Punkte
118
ist die Datei sicher binär und nicht etwa nur IPs in dezimaler Schreibweise? 10-stellige Zahlen würde auf IPs im Dezimalformat hindeuten
Ich kann das gerade nicht prüfen, da ich gerade keinen Zugriff auf das Terminal meiner NAS habe (gibt ja leider noch kein Terminal standardmäßig in DSM wie AjaxTerm).
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
habs gerade bei mir nachgeguckt. Die IP scheint lesbar im File zu sein. Hat zwar noch andere Zeichen drin, aber die IP kann ich mit cat im File sehen und mit strings kommt man direkt an die IP
Code:
strings /etc/synoIPs.deny
192.168.199.7
 

rauppe31

Benutzer
Mitglied seit
06. Jun 2011
Beiträge
2.734
Punkte für Reaktionen
0
Punkte
82
Strings ist in den binutils enthalten.

Ich habs bei mir auch mal ausprobiert:
Rich (BBCode):
Nas-Marco> strings /etc/synoIPs.deny
b       O74.117.56.131
O200.98.138.45
O188.101.220.88
!O60.248.152.55
\O113.10.172.8
\O74.118.192.153
aO203.238.190.19
eO113.31.65.84
'fO222.122.72.170
$<fO87.76.32.45
IfO115.236.99.200
gO31.211.142.118
yWgO
c6hO61.167.199.239
c6hO
hO72.38.108.162
c6hO
hO88.198.153.70
c6hO
jO165.228.170.186
kO209.55.5.134
 :kO117.79.91.197
_fkO186.113.12.139
lO82.194.76.61
lO60.250.38.36
Nas-Marco>
Dazwischen kommen leider noch solche andere Zeichen, was ein bisschen unschön ist.

Gibt es denn auch eine Möglichkeit, die IPs in dieses Format zu packen?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
das wird wohl nicht ganz so einfach, wenn die "Störzeichen" noch da sind. Der schnellste Weg wäre ein regulärer Ausdruck. Mir scheint die IPs würden bei dir immer nach einem '
O' beginnen. Jetzt müsste man noch wissen obs O (grosses o) oder 0 (null) ist
 

rauppe31

Benutzer
Mitglied seit
06. Jun 2011
Beiträge
2.734
Punkte für Reaktionen
0
Punkte
82
Ich hab gerade mal nachgeschaut. Es ist ein O (grosses o)

Und dann hats bei manchen IPs noch ein Sonderzeichen oder Buchstabe vornedrann.

Kannst du eine Regelmässigkeit erkennen?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
wenn es imme ein O vor der IP ist dann würde ich mit PHP so was probieren
zuerst den output von string in /tmp/strings.txt
Code:
strings /etc/synoIP.deny > /tmp/strings.txt
und dann mit PHP
PHP:
$f = file('/tmp/strings.txt');
for($i=0;$i<count($f);$i++){
 $f[$i] = substr($f[$i],strpos($f[$i],'O'));
}
var_dump($f);
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat