Klik hier voor informatie over de wijziging in de levering van diensten en ondersteuning.

[Praktijk] Verdacht verkeer blokkeren op mailserver [VPS]

/ ip, filteren, log files, hosting, cat, grep, uniq, sort

michael-fortsch-y5LaV9IEC_g-unsplash_1080

Enige tijd terug publiceerde ik een post over het extraheren van IP-adressen met grep en regex. In deze nieuwe post borduur ik daarop voort.

In deze post laat ik door middel van een praktijkvoorbeeld zien hoe ik een lijst met verdachte IPv4-adressen blokkeer, met slechts enkele commando's. Het doel is dat er geen verkeer meer geaccepteerd wordt door mijn mail server, wat afkomstig is van de IPv4-adressen uit de samengestelde lijst.

What's Up, Doc?

Ik zag in de log van Fail2Ban regelmatig het volgende voorbij komen.

# bestand: /var/log/fail2ban
# ---------------------------
  2023-10-22 15:18:23,326 fail2ban.filter         [588618]: INFO    [postfix-auth] Found 46.148.40.113 - 2023-10-22 15:18:23
  2023-10-22 15:18:38,367 fail2ban.filter         [588618]: INFO    [postfix-auth] Found 46.148.40.192 - 2023-10-22 15:18:38

De bovenstaande twee IPv4-adressen maken deel uit van een homogene lijst. Deze lijst bestaat uit 42 IPv4's die verdacht zijn.

Uit de logs wordt duidelijk dat iets of iemand vanuit een bepaald netwerk misbruik probeert te maken van mijn mailserver. Nu gebeuren dat soort dingen aan de lopende band. It's a jungle out there! Dus heel erg bijzonder is dat op zich nou ook weer niet... Maar wat het wel bijzonder maakt, is dat het om een homogene lijst IPv4's gaat. De IPv4's komen uit een bepaald subnet. Dit subnet hoort geografisch bij de Islamitische Republiek Iran. De reden waarom er een lijst IPv4's gebruikt wordt, is om de pogingen te verhullen.

Zodra één IPv4 geblokkeerd is, dan wordt er een poging gedaan vanaf een ander IPv4. De slagingskans wordt daarmee hoger. Tenzij een mechanisme of een beheerder een verband legt tussen de gebruikte IPv4-adressen.

De pogingen komen dus vanaf IPv4's die geografisch bij Iran horen. Wie er werkelijk gebruik maakt van die IPv4-adressen is onbekend. Maar dat het net Iran is geeft te denken. Naar mijn mening stond Iran er politiek beter voor in de voorgaande jaren. Dat is tot eind 1978 (of begin 1979). Toen werd de prowesterse sjah Mohammad Reza Pahlavi afgezet. Zie onder andere de foto's die Business Insider over die voorbije tijd publiceerde.

Nu doet mijn mening over de politieke en religieuze toestand van Iran er misschien niet (zoveel) toe, met het licht op een technisch artikel... Maar ik vind de huidige toestand geen vooruitgang. Alleen de motieven om misbruik te maken van een mailserver zijn al niet goed te praten. Maar mijn persoonlijke opvattingen over Iran motiveert mij daarom extra om het verdachte verkeer met enige urgentie te blokkeren.

Fail2Ban gebruikt onder andere de log van de mailserver voor het (tijdelijk) blokkeren van dit soort pogingen. Uit een korte controle wordt de reden duidelijk.

# bestand: /var/log/mail.info
# ---------------------------
  Oct 22 14:31:48 s1 postfix/smtps/smtpd[159241]: warning: unknown[46.148.40.113]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
  Oct 22 14:31:48 s1 postfix/smtps/smtpd[159241]: > unknown[46.148.40.113]: 535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6

Mijn vervolgvraag is: wat is de omvang van deze poging? Vanaf welke IPv4 adressen komt dit verkeer? Hiervoor vraag ik het log van Fail2Ban uit.

# actie: bekijk IPv4's
# --------------------
  cat /var/log/fail2ban.log | grep "46.148.40" | grep -o '[0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}' | sort -t . -k 3,3n -k 4,4n

Het resultaat is een behoorlijke lijst!

# resultaat: van vorige actie
# ---------------------------
  46.148.40.13
  46.148.40.49
  46.148.40.58
  46.148.40.107
  46.148.40.110
  46.148.40.111
  46.148.40.112
  46.148.40.113
  46.148.40.114
  46.148.40.115
  46.148.40.116
  46.148.40.117
  46.148.40.118
  46.148.40.119
  46.148.40.120
  46.148.40.121
  46.148.40.122
  46.148.40.130
  46.148.40.135
  46.148.40.136
  46.148.40.140
  46.148.40.141
  46.148.40.142
  46.148.40.143
  46.148.40.144
  46.148.40.145
  46.148.40.146
  46.148.40.147
  46.148.40.148
  46.148.40.149
  46.148.40.151
  46.148.40.152
  46.148.40.183
  46.148.40.185
  46.148.40.186
  46.148.40.190
  46.148.40.191
  46.148.40.192
  46.148.40.193
  46.148.40.197
  46.148.40.198
  46.148.40.199

Mijn antwoord hierop is om de IPv4's allemaal in één keer te blokkeren. Ik doe dat door met het ufw commando door de lijst te lopen.

Eerst maak ik een bestand van de (voorgaande) uitvoer.

# actie: extraheer IPv4s
# ----------------------
  cat /var/log/fail2ban.log | grep "46.148.40" | grep -o '[0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}' | sort -t . -k 3,3n -k 4,4n | uniq >/tmp/doBlock.txt

Tot slot blokkeer ik de verzamelde IPv4's.

# actie: blokkeer IPv4's
# ----------------------
  while read line; do ufw prepend deny from $line comment "Postfix: brute force"; done < /tmp/doBlock.txt

Eerst schieten, dan pas vragen stellen...

De uitspraak "eerst schieten, dan pas vragen stellen" komt uit de film Dirty Harry (1971). De vraag is of het misschien wat bruut van mij was om zomaar een hele lijst IPv4's geblokkeerd? Niet alle Iranese IPv4's zijn slecht, toch? De vraag is of ik onterecht geschoten heb? Het antwoord is neen. Ik heb deze IPv4's terecht geblokkeerd. Deze IPv4's komen niet voor niets voor in Fail2Ban's log. Het verband met de mail log zei mij eigenlijk wel genoeg. Maar laten we eens controleren of we de actie kunnen onderbouwen. Zit ik goed met mijn brute geweld tegen Iranese IPv4's die in de log file van Fail2Ban gezien werden.

Via www.abuseipdb.com is eenvoudig een IPv4 te controleren.

ipdb-voorbeeld-1

Uit de voorgaande schermafdruk is te zien dat het om een IPv4 gaat wat geografisch bij Iran hoort. Ook is het IPv4 meerdere keren gemeld. Dit laatste blijkt uit de opmerking onderaan (de schermafdruk) en uit de volgende schermafdruk.

ipdb-voorbeeld-1-details

Wanneer ik naar de geo data kijk, die bij de IPv4's hoort, dan kom ik uit bij een sportstadion in Teheran (Iran). Maar volgens andere geo data kom ik uit in Isfahan, een stad ten zuiden van Teheran. Welke plaats het geografisch dan ook mag zijn: het is voor mij allemaal meer van 't zelfde. Want voor alle bovenstaande IPv4's geldt namelijk hetzelfde. Zoals David Goggins 't zo mooi zegt: Block! Delete!

Next Post Previous Post