Een nuttig MikroTik-script is om een e-mailmelding of Telegram-bericht te ontvangen wanneer een inlogfout voor een gebruikersbericht verschijnt in het MikroTik-apparaatlogboek (“login failure for user …“). Hiermee kunt u meer te weten komen over pogingen om een wachtwoord brute kracht te geven, het IP- of MAC-adres van het apparaat dat probeert in te loggen rapporteren, evenals de login waarmee ze proberen in te loggen op het apparaat.
Inhoud
Artikel in andere talen:
?? – MikroTik Script: Failed login attempt notification
?? – MikroTik Script: Notificación de intento de iniciar sesión fallido
?? – MikroTik Скрипт: Уведомление о ошибке входа в систему
?? – Script MikroTik: Notification de tentative de connexion échouée
?? – MikroTik-Script: Benachrichtigung über Anmeldefehler
Script Beschrijving
Het script analyseert het apparaat logboek om te zoeken naar “login failure for user” -gebeurtenissen, stuurt een e-mail of een Telegram-bericht wanneer er gebeurtenissen worden gevonden.
Parseert gebeurtenissen sinds de laatste starttijd (ParseLogLoginEndArrayID-variabele).
De volgende functies worden gebruikt om meldingen te verzenden:
Het script roept functies aan met de namen: EMailSendMessageFunction, TGBotSendMessageFunction. Als uw functies een andere naam hebben, wijzig deze dan in het script.
✏️ Als u regelmatig inlogpogingen detecteert met uw huidige login, is de login misschien bekend geworden bij aanvallers, de beste optie is om de login te wijzigen.
Maak een script
De volgende machtigingen zijn vereist om het script uit te voeren: read, write, test, policy.
[System] -> [Scripts] -> [+] -> [Name: ParseLogLoginFailure] -> [Policy: read, write, test, policy]
Script code
# Name: ParseLogLoginFailure v1.1
# Description: Device login failed notification
# Author: Yun Sergey [MHelp.pro] © 2021
# License: GPL-3.0 License
# Description, purpose and questions: https://mhelp.pro/mikrotik-script-failed-login-attempt-notification/
# More scripts Mikrotik: https://mhelp.pro/tag/mikrotik-scripts/
# Verified: RouterBOARD 952Ui-5ac2nD, RouterOS 6.48 (stable).
:local DeviceName [/system identity get name];
:local Time [/system clock get time];
:local Date [/system clock get date];
:local EmailMessageText;
:local TelegramMessageText;
:global ParseLogLoginEndArrayID;
:local IDsEvents [/log find where topics~"critical" message~"login failure"];
:local LenArrayIDs [:len $IDsEvents];
:local StartArrayID [:find $IDsEvents $ParseLogLoginEndArrayID];
:local EndArrayID ($IDsEvents -> ($LenArrayIDs-1));
#:log info "Script ParseLogLoginFailure: running.";
:if ($EndArrayID != $ParseLogLoginEndArrayID and [:tobool $ParseLogLoginEndArrayID] ) do={
#:log info "Script ParseLogLoginFailure: new events found.";
:for KeyArray from=($StartArrayID+1) to=($LenArrayIDs-1) do={
:local IDMessage ($IDsEvents ->$KeyArray );
:set EmailMessageText "$EmailMessageText \n\r $[/log get number=$IDMessage time] - $[/log get number=$IDMessage message];";
:set TelegramMessageText "$TelegramMessageText %0D%0A $[/log get number=$IDMessage time] - $[/log get number=$IDMessage message];";
}
:set ParseLogLoginEndArrayID $EndArrayID;
#:log info "Script ParseLogLoginFailure: events processed. Sending notifications.";
# START SEND EMAIL
:local SendTo "notify@mhelp.pro";
:local Subject "\E2\9B\94 AUTH: $DeviceName [$Date $Time]";
:local MessageText "$EmailMessageText";
:local FileName "";
:local SendEmail [:parse [/system script get EMailSendMessageFunction source]];
$SendEmail SendTo=$SendTo TextMail=$MessageText Subject=$Subject FileName=$FileName;
# END SEND EMAIL
# START SEND TELEGRAM
:local MessageText "\E2\9B\94 <b>$DeviceName: AUTH</b> $TelegramMessageText";
:local SendTelegramMessage [:parse [/system script get TGBotSendMessageFunction source]];
$SendTelegramMessage MessageText=$MessageText;
# END SEND TELEGRAM
} else={
#:log info "Script ParseLogLoginFailure: no new messages found.";
};
#:log info "Script ParseLogLoginFailure: script completed successfully.";
:set ParseLogLoginEndArrayID $EndArrayID;
Voeg script toe aan planner
De volgende machtigingen zijn vereist om het script uit te voeren: read, write, test, policy.
[System] -> [Schedule] -> [+] -> [Name: ParseLogLoginFailure] —> [Interval: 00:05:00] -> [Policy: read, write, policy, test]
Of ren in terminal:
/system scheduler add name=ParseLogLoginFailure policy=read,write,policy,test on-event="/system script run ParseLogLoginFailure" interval=5m comment="Parse device log and sending failed login events"
? U kunt firewallregels configureren om aanvallen met brute kracht te blokkeren – MikroTik Protection (basisinstelling apparaatbeveiliging).
? Hoe een script te maken – melding van mislukte inlogpoging in de MikroTik-router, werd in dit artikel besproken. Ik hoop dat je nu de controle over MikroTik-apparaten kunt verbeteren door berichten te ontvangen over mislukte inlogpogingen, IP-adressen van apparaten en gebruikte logins te volgen en de acties van een indringer op tijd te detecteren. Mocht u echter problemen ondervinden bij het configureren van het script, schrijf dan gerust in de commentaren. Ik zal proberen te helpen.
Het script wordt gecontroleerd: RouterBOARD 952Ui-5ac2nD, RouterOS 6.48 (stable).