Você precisa do que é chamado de Janela de Tentativa de Senha.
Basicamente 2 campos no banco de dados, um LastPasswordAttempt (datetime) e PasswordAttemptCount (int)
Em seguida, em cada login, verifique quando ocorreu o último LastPasswordAttempt e se foi nos últimos 10 minutos - incremente o PasswordAttemptCount, caso contrário, redefina-o para 0 (ou 1 porque eles acabaram de falhar).
Na mesma lógica, verifique se PasswordAttemptCount é igual a 5 ou mais, se for - negue o acesso do usuário. Você pode ter um terceiro campo que os bloqueia por algumas horas ou um dia.
ou seja, CanLoginAfter(datetime) que você pode definir para um dia a partir da última tentativa de senha.
Espero que isto ajude