Добавил бы ещё один пункт сюда: исключение самой возможности наличия шелла в каталоге сайта. Это можно сделать весьма гибко, чтобы у пользователя остался доступ для редактирования этих файлов. Нужно запретить PHP писать в каталоги. Для кэша и динамических файлов можно проработать исключения.
Такая система у меня уже есть, довожу до ума и тестирую. Как раз в прошлом году по ней создавал такую же тему, как эта, обсуждали возможность реализации. Там и WAF, и контроль запускаемых файлов, контроль появления новых файлов, контроль IP и многое другое, моя разработка. Подключается через auto_prepend в php.ini и работает незаметно. В данный момент на моем сервере все проверки проходят за 0.003 сек, что для пользователя совершенно незаметно. И даже при наличии шелла эту систему невозможно отключить или изменить (если только не ломать сервер). То есть, теоретически, ели это мой личный бизнес, можно обойтись и без дополнительной статьи расходов, просто получая уведомления о сработках на свой мобильный, вставая в три часа ночи и выясняя, какая сволочь посмела меня разбудить... Не, видимо, вы правы, статью расходов придется предусмотреть...