It seems most attacks against Serv-U are brute force against common account names: root, admin, staff, guest, test... Most of these account names we don't use. So I've created dummy accounts with a few dozen frequent targets that no legit user would be trying and set an event to run a script on login failure which adds their IP to the Windows firewall deny list.
Here's the single line of the script I call:
netsh advfirewall firewall add rule name = "Serv-U auto-banned" proto = any dir = in action = block enable = yes profile = any remoteip = %1
The firewall list gets pretty long after a while but every few months I just clear them all out. Most of those IPs won't be long-term attackers and the few that will will be blocked again on the very next attempt.