Zdravím,
začaly se nám na MK routeru množit pokusy o hádání hesla na VPNky a tak jsem chtěl preventivně dát útočící adresy na blacklist a řezat je už v RAW pravidlech. Ručně mě to brzo přestalo bavit a našel jsem na to na internetu script. Víceméně funguje podle potřeby - prohledá log, vyzobe ty správné útočící adresy, vytvoří z nich address-list. Akorát pokaždé skončí chybou "failure: already have such entry" a na konci address listu se vždy objeví IP adresa 0.0.0.0
Asi zběžně chápu, co ten script dělá, ale přiznám se, že moje znalosti scriptování a parsování logů nejsou na takové úrovni, abych přišel na to, kde je chyba.
Nenašel by se tu prosím někdo, kdo tomu rozumí o dost víc než já a tu chybu odhalí?
Děkuji za rady
:local logMessage ""
:local logIp ""
/log
:foreach i in=[find where message~"phase1 negotiation failed\\." or message~"SPI.*not regist" or message~"Invalid exchange"] do={
:set logMessage [get $i message]
:if ($logMessage~"phase1 negotiation failed\\.") do={
:set logIp [:toip [:pick $logMessage -1 [:find $logMessage " "]]]
:if ([:len [/ip fire addr find where list="Black List - Bots" address=$logIp]] < 1) do={
/ip fire addr add address=$logIp list="Black List - Bots" timeout=7d
:log info message="script=Black List - Bots src_ip=$logIp why=negotiation_failed"
}
}
:if ($logMessage~"SPI .* not registered for") do={
:set logIp [:toip [:pick $logMessage ([:find $logMessage "for "]+4) [:find $logMessage "["]]]
:if ([:len [/ip fire addr find where list="Black List - Bots" address=$logIp]] < 1) do={
/ip fire addr add address=$logIp list="Black List - Bots" timeout=7d
:log info message="script=Black List - Bots src_ip=$logIp why=SPI_not_registered"
}
}
:if ($logMessage~"Invalid exchange") do={
:set logIp [:toip [:pick $logMessage ([:find $logMessage "from "]+5) [:find $logMessage "["]]]
:if ([:len [/ip fire addr find where list="Black List - Bots" address=$logIp]] < 1) do={
/ip fire addr add address=$logIp list="Black List - Bots" timeout=7d
:log info message="script=Black List - Bots src_ip=$logIp why=Invalid_exchange"
}
}
}
```__