Definition und Regex für dynamische IPs

Definition und Regex für dynamische IPs

Als erstes brauchen wir mal ein eine Grundlage, diese finden wir im Logfile: die Adressen die unseren Mailserver kontaktieren. Die Dynamischen IP-Adresse, die uns auffallen sind die, die ihre IP im Hostnamen bzw. im PTR haben.

Ich geb mal ein paar typische dynamische Adressen aus dem heutigen Maillog zum Besten:

fm-ip-61.247.17.96.fast.net.id[61.247.17.96]
lrouen-152-82-10-20.w80-13.abo.wanadoo.fr[80.13.105.20]
c-98-238-216-254.hsd1.ca.comcast.net[98.238.216.254]
adsl-84-227-152-160.adslplus.ch[84.227.152.160]
ppp-94-69-53-228.home.otenet.gr[94.69.53.228]
adsl-160-211-192-81.adsl2.iam.net.ma[81.192.211.160]
78-2-170-215.adsl.net.t-com.hr[78.2.170.215]
95-83-40-10.saransk.ru[95.83.40.10]
host86-162-54-12.range86-162.btcentralplus.com[86.162.54.12]
178.182.100.26.nat.umts.dynamic.eranet.pl[178.182.100.26]
dslb-188-097-149-042.pools.arcor-ip.net[188.97.149.42]
or-67-238-31-250.dhcp.embarqhsd.net[67.238.31.250]

Dieses dreckige Dutzend hab ich innerhalb einer Minute in meinem Maillog gefunden – und heute ist Badewetter und nichts los – in Spitzenzeiten hab ich davon über tausend in einer Minute.

Alle Hostnamen werden in Echtzeit rückwärts aufgelöst, da das automatisch passiert müssen wir hier nicht weiter darauf eingehen wie Postfix vom DNS einen PTR zieht.
[divider height=“5″ line=“1″]

Werbung

[divider height=“3″ line=“1″]
Wir stellen wie gesagt fest, das diese Hostnamen eine Gemeinsamkeit haben: irgendwie steht da die IP-Adresse drin, entweder durch Punkte oder durch Bindestriche getrennt, dann kommt manchmal noch etwas (mindestens ein Punkt) und dann eine Domain.

Alle genannten Einträge (natürlich die Hostnames ohne IP samt Klammern) matchen zu folgender Regular Expression:

([0-9]{1,3}(\-|\.)[0-9]{1,3}(\-|\.)[0-9]{1,3}(\-|\.)[0-9]{1,3}.+[a-z0-9]+\.[a-z0-9]{2,6})$

deren Interpretation laut „Regular Expression Workbench“ folgende ist:

Non-capturing Group
Any character in "0-9"
At least 1, but not more than 3 times
Non-capturing Group
-
or
.
End Capture
Any character in "0-9"
At least 1, but not more than 3 times
Non-capturing Group
-
or
.
End Capture
Any character in "0-9"
At least 1, but not more than 3 times
Non-capturing Group
-
or
.
End Capture
Any character in "0-9"
At least 1, but not more than 3 times
. (any character)
+ (one or more times)
Any character in "a-z0-9"
+ (one or more times)
.
Any character in "a-z0-9"
At least 2, but not more than 6 times
End Capture
$ (anchor to end of string)

Da wir in der regex nicht Verlangen, daß die Zeile mit der IP Anfängt (kein ^ davor), aber das irgendetwas, zumindest eine Domain da hinter kommt, passt das auch zu der russischen Variante in der 8. Zeile genauso wie zu dem längsten Eintrag direkt darunter.
[divider height=“5″ line=“1″]

Werbung

[divider height=“3″ line=“1″]
Weitere Regular Expressions

Nicht alle Dynamischen IPs haben im PTR die IP-Adresse. Da brauchen wir nicht lange zu suchen, im Maillog finden sich genug davon:

p50879111.dip0.t-ipconnect.de[80.135.145.17]
f050022088.adsl.alicedsl.de[78.50.22.88]
chello080108216159.3.13.vie.surfer.at[80.108.216.159]
201009221237.user.veloxzone.com.br[201.9.221.237]
chello089075103147.chello.pl[89.75.103.147]
host88-23-dynamic.22-79-r.retail.telecomitalia.it[79.22.23.88]

Diesmal war es ein 10-Minuten-Abschnitt, aber nur Auszüge, denn die Bots versuchen es immer mehrmals an andere Empfänger.

Ich mach jetzt kommentarlos für die ersten 3 Zeilen je ein Regex, wer wissen will was die bedeuten, oben ist die Regex Workbench verlinkt, die kann man sich herunterladen und sich erklären lassen.

^(p.*\.dip.?\.t\-ipconnect\.de)$
(\.adsl\.alicedsl\.de)$
^(chello[0-9]+\.[0-9]+\.[0-9]+\.vie\.surfer\.at)$

Wie man mehr dynaische Adressen findet erkläre ich im Abschnitt „Erweitern der Regular Expressions durch Validitätsprüfung des Absenders„.

Jetzt wenden wir uns der Validitätsprüfung der helos zu.
[divider height=“5″ line=“1″]

Werbung

[divider height=“3″ line=“1″]
 

Du musst angemeldet sein, um einen Kommentar abzugeben.