I know it’s probably bad practise to recommend commercial plugins here, but this is what I use:
Askimet (free) – block spam
Bullet Proof Security (free) – blocks malicious hack attempts and “known” bots. You WILL want to research how to install this properly and include the tweaks from the forums.
Better WP Security (free) – I use this to change my author ID and database prefix on new blogs, I then disable and delete the plugin.
Spyder Spanker (paid classic $49 + pro $49) – blocks spiders and IP’s you blacklist. It allows you to block most bots and just allow Google/Bing/Yahoo
TBH it’s not that great a plugin (and the developer is a bit of a dic IMO), you could do this if you just research how to write .htaccess. However I’m pretty lazy and the pro version of this allows you to auto-update all other installations you have as well. If people still fake Googlebot User Agent they are able to get in (assuming their not on a country block list).
I went from getting over 1000-2000 spam comments on a blog down to about 10 per day, additionally all whois, SEO analytics bots are now mostly blocked so competitors have a hard time analysing your site and getting data about your meta and back-links. It saves on bandwidth that’s for sure.