The most well known solution for filtering spam in WordPress is Akismet, as the plugin comes preinstalled with every WordPress installation. You only need to go to akismet.com and sign up for an API key, then enter the key on the plugin configuration page and activate the plugin. Akismet is free for personal non-commercial websites and costs $5 dollar a month for company websites.
In general Akismet works great, though some users have problems with false positives, which means that legitimate comments are marked as spam. So you have to check the spam folder from time to time and mark these messages as not spam.
If you do not want to register for Akismet, do not want to pay money for it or cannot use Akismet due to local laws I recommend to use Antispam Bee.
Antispam Bee can be configured via Settings > Antispam Bee. It can use local as well as remote spam databases and block comments from specific countries or in specific languages.
I also heard good thinks about teh NoSpamNX plugin but haven’t tested it yet.