Я пытаюсь понять, как защитить свой сервер от того, что кажется ботнетом (я просто догадываюсь)
Каждый день все больше и больше IP-адресов заполняют журналы моих приложений недействительными запросами (например: запросы GET к URL-адресам, которые должны получать только запросы POST)
Сначала я подумал о регистрации всех этих IP-адресов на основе а) того факта, что они делают недопустимые запросы, и б) количества запросов в единицу времени, а затем просто запустил cron, который захватывает эти IP-адреса и добавляет правила в iptables для удаления. свои пакеты.
Но, прочитав немного об этом, я обнаружил, что такой подход может вызвать множество проблем:
Есть предположения?
Это часть Интернет-шума, который испытывают все компьютеры, подключенные к Интернету, к сожалению, мы не живем в идеальном мире. Пытаться предотвратить это - все равно что играть в кошки-мышки. Вы можете использовать ограничитель скорости Iptables, чтобы ограничить количество входящих запросов с IP-адреса, но это все.
Вместо этого убедитесь, что ваше приложение и ОС безопасны. По возможности следите за обновлениями безопасности и следуйте инструкциям по безопасному кодированию. Также правильно настройте службы, один из самых больших недостатков безопасности - это неправильно настроенные службы.
Не беспокойтесь о правилах запрета IP-адресов - как вы и подозревали, исходные IP-адреса могут быть подделаны, автоматический запрет просто создаст еще один вектор атаки отказа в обслуживании против вашего хоста.
В большинстве случаев вы можете игнорировать недействительные запросы - это черви или автоматические скрипты, слепо пытающиеся использовать бреши в безопасности, которые могут быть, а могут и не быть. Придерживайтесь советов Самирса по исправлению вашей системы и приложений (особенно ваших PHP-приложений, поскольку они обычно довольно ошибочны и часто используются). Действуйте в отношении трафика, только если он влияет на производительность вашего сервера (например, большое количество нелегитимных запросов использует большую часть ресурсов вашего сервера). Даже множество правил iptables вряд ли вызовет нагрузку на современное оборудование.
Если вы хотите пойти по маршруту запрета IP-адресов с помощью iptables, используйте fail2ban. Он будет отслеживать ваши файлы журналов на предмет неправильных IP-адресов и блокировать их на определенное время.
Посмотрите на использование межсетевого экрана уровня 7, такого как mod_security для Apache.
Недавно я решил для клиента ряд серьезных проблем с производительностью. У них было более 7000 правил iptables для внесения в черный список различных IP-адресов. Устранение этих основных проблем с производительностью сети. Похоже, что iptables не может обрабатывать более пары тысяч правил.
Создание маршрута черной дыры для нежелательных хостов, вероятно, работает лучше. Это может означать наличие множества дополнительных небольших маршрутов, но Linux с этим справляется.