Ограничивать вход по белому списку ip не самая лучшая идея, т.к. если вы самостоятельно захотите зайти с ip которого нет в списке, то ничего не получится.
Один из вариантов - ограничить количество неудачных логинов в админку с одного ip. Если не ошибаюсь ip клиента при правильно настроенном сервере должен быть в переменной $_SERVER['REMOTE_ADDR'].
Т.е. при логине надо будет проверять количество неудачных логинов за сегодня с данного адреса и если лимит превышен, то блокировать попытку входа.
В таком случае желательно выбрать сложный пароль.
Но это защитит только от перебора пароля администратора. Если у вас на сайте где то XSS и проверяется вход по cookie то вход мог быть с cookie администратора. Т.е. если вы с куками админа зайдёте на страницу вашего сайта где из за XSS разместили javascript ворующий cookie, то ваши куки уже далеко, но после изменения пароля всё должно снова стать ок. Выход в таком случае - сессии. Единственная проблема - после закрытия браузера надо будет каждый раз логинится. Сессию украсть сложнее.
XSS решается через повсеместную фильтрацию вывода через html purifier и т.п.
Если у вас на сайте используется OАuth то там уже совсем другой подход, но смысл примерно тот же.
Так же важно закрыть ненужные порты, спрятать всё кроме 80 за port knocking и обязательно использовать сложные пароли для всего. ssh sftp
Когда то ещё был такой слух что крякнутый total commander ворует пароли от ftp если его использовать для подключения через ftp. Не знаю правда это или нет т.к. не пользуюсь.
Если из за плохих настроек сервера после взлома злоумышленники получали полный доступ к серверу, то тогда проще менять хостинг.
Из VPS рекомендую digitalocean или hetzner. Так вы получите полный контроль над сервером, что позволяет настроить по всем правилам.