fail2ban это отлично, но все же рекомендации выше по ssh вполне здравые, я подытожу немного:
1. не оставлять у ssh дефолтный порт (лучше сразу выносить за 10000).
2. создать ключ и настроить авторизацию по ключу(все остальные типы авторизации такие, как хостбазед или парольные отключить, после настройки и проверки авторизации по ключу).
3. установить fail2ban и жестко прописать правила на все случаи жизни, дефолные правила слишком лояльны (помните то что настройки вносить нужно именно в файл jail.local, а правила и дейстия соответственных файлах расположенных в filter.d action.d, не поленитесь прочитать руководство).
4. плохо настроенная почтовая система не только проблема с клиентами, но и обязательно мишень для злоумышленников, советую использовать только imaps и pops для доступа из вне.
Хорошо бы кроме fail2ban настроить систему обнаружения вторжений (хотя использование snort требует уже другой уровень понимания систем), что-нибудь вроде rhunter тоже бы пригодилось, ну и конечно не забывайте про мониторинг системы (тот же munin выдает очень интересную информацию).