1. Действительно, нужен прежде всего VPS.
2. ssh порт сделать нестандартным.
3. Закрыть в фаерволе все порты, кроме необходимых. Разрешить доступ только со своих IP.
4. Установить 2-факторную аутентификацию Google Authenticator + блокировку на превышение числа попыток авторизоваться.
5. Использовать SSL, как при передаче файлов (ssh, sftp), так и для веба (https).
6. Файлы проекта вынести выше папки document_root, оставив в ней только те, что нужны для доступа из web.
7. Выставить права на файлы и каталоги таким образом, чтобы изменять файлы и каталоги мог только владелец (например пользователь deploy), а www-data мог только читать. За исключением только тех файлов и каталогов, где нужны права на запись.
8. Установить OSSEC или аналог для аудита критически важных файлов (системные и проектные конфиги, данные для доступа к платёжной системе и т.п.), чтобы алерты отсылались сразу на почту.