Теорию хорошо расписал
@DmitriyEntelis На практике по дырявым скриптам хорошо помогает систематическое сканирование на заразу с отсылкой мыла админу, если что-то нашлось:
Общее сканирование директорий движков - maldet/clamav
Быстрое сканирование всего сервера по известным зависимостям и руткитам - rkhunter
Сканирование конкретного движка - AI-Bolit
Защита от сканирования ботами, от простого бана по ua, для скрипткиди, до настройки psad.
Постоянный анализ для предотвращения вторжений - Snort
Ну и держать свои CMSки в актуальном состоянии вместе с плагинами. Вообще хорошая безопасность сервера - это совместная грамотная работа системного администратора, программиста и безопасника, но и цена соответствующая, в остальных случаях, сканируем, чистим, обновляем (закрываем найденные дыры) и так по кругу.