Насчет VPN возможно, но юзер сможет отключить VPN одним кликом в настройках.
iOS (как и любая нормальная ОС) так устроена, что приложение не может захватить контроль. Весь контроль у юзера, а приложения могут лишь просить у ОС доступ к ресурсам и обмениваться сообщениями друг с другом.
В базе сделать таблицу неудачных попыток: юзер-время-ip.
Далее перед каждым вводом пароля делать выборку из этой таблицы за последние 3 дня, поиск по связке юзер-ip. Если записей 3+, то запрещать вход (вообще не проверять правильность пароля или даже не предлагать ввести).
При неудачной попытке ввода пароля, добавлять запись в эту таблицу.
Периодически (раз в год) ее можно чистить по крону.