I know what it does, but i don't know why. What attack(s) does it prevent ?
Is it relevant for all kind of authentication methods ? (hostbased, password, publickey, keyboard-interactive ...)
In typical configurations, DNS is only used for logging. It can be used for authentication, but only if
Given that the DNS lookup doesn't provide any useful information except in very peculiar circumstances, it should be turned off. As far as I can tell, the only reason it's on by default is that it's technically more secure (if you're concerned about authentication, not availability), even though that only applies to a tiny set of circumstances.
From the manpage of
Enabling this makes access from a location without proper (forward and reverse) DNS generate a warning in the logs.
So this doesn't prevent any attack except that it would need some qualified remote address of the client in order not to log any warning. Such a warning may help you in tracing down the attacker only if that PTR record makes any sense.
edit: updated according to comment of Andrey Voitenkov.
It is needed when you use FROM option in an authorized_keys file and you want to filter by names and not just IPs.
The FROM option in a line of an authorized_keys file allows you to limit hosts that can use a specific key.