https://github.com/jtniehof/pam_shield
Back in the day, disabling password auth but leaving keyboard_interactive on would stop a lot of these things, but I don't think that's true any more.
Probably best to just whitelist SSH to known IPs.
To be sure, a dedicated brute forcer could still brute force any system using f2b... it just might take a few months/years instead of a few days.
(However, as noted by other commenters, there's something to be said about obscurity within a system's overall security scheme. You just have to strike a balance...)
Relying on obscurity alone is the mistake you are alluding to.
Why wouldn't you recommend using fail2ban and changing the port?
Ok, sure.
>Why wouldn't you recommend using fail2ban and changing the port?
IMO, changing the port will have nearly the same overall effect as f2b: minimizing the number of failed password attempts from unknown users.
To that end, changing the port is changing one value in a config file, which has the attractive advantage of being far simpler to setup + maintain.
Setup and maintenance are virtually zero though, for f2b. I know, I just installed it.
A one liner to install on most systems and updates along with everything else when your package manager does the updates.
http://danielmiessler.com/blog/security-and-obscurity-does-c...
An analogy with a house it would be like making a brick wall behind your front door and making a new door on the side of the house.
Sure, it would not change significantly the time for a determined thief wanting your house specifically,.
However moving the door would do wonders against some punk with a bunch of keys who runs around trying them on all neighborhood doors.
You still have to make sure you have a good lock and door.
[1]: http://www.fail2ban.org/wiki/index.php/Main_Page