Кто-то из Китая с двумя разными IP-адресами загружает один и тот же большой файл с моего сервера. Их ip:
Они запрашивают этот файл и скачивают его более 20 раз в минуту.
Что я могу сделать, чтобы предотвратить это? (Я использую gentoo с root-доступом)
И ПОЧЕМУ они так поступают с сайтом, который не имеет ничего общего с Китаем?
ДОБАВИТЬ1:
Другие IPS:
ДОБАВИТЬ2:
глупо то, что они запрашивают только один файл, лол. Или они хотят удалить этот файл (хотя я не понимаю, почему) Или они довольно тупые
ADD3:
Ситуация ухудшается. IP распространяются и из других стран (США и Корея, если www.geobytes.com/iplocator.htm это правильно) И теперь они запрашивают другой файл.
ADD4:
кажется, после того, как они поняли, что я удалил этот файл они перестали атаковать меня. Буду следить за ситуацией.
Начали снова после сна 3-4 минут с тем же файлом (мне повезло). Сложно сказать, почему это происходит
Всего 2 IP-адреса ... Вы можете легко заблокировать IP-адреса с помощью iptables
iptables -I INPUT -s 122.89.45.210 -j DROP
iptables -I INPUT -s 260.210.7.62 -j DROP
РЕДАКТИРОВАТЬ
Поскольку IP-адреса растут, вы можете подумать о чем-то более радикальном. Вам нужно обслуживать китайские IP-адреса? Если нет, вы можете попробовать использовать следующий сайт для помощи в блокировке всей страны. Просто закидывайте результаты в свой файл .htaccess:
Другое редактирование
Есть ли что-то еще общее во всех запросах? Пользовательский агент такой же? Это может легко помочь в блокировании атак.
Я не знаю, какую ОС вы используете на своем сервере, но я предполагаю, что это дистрибутив UNIX (Debian, Ubuntu, Slackware и т. Д.).
Самый простой способ защитить себя от DoS - установить Fail2Ban (http://www.fail2ban.org/wiki/index.php/Main_Page). Легко установить и использовать. Я использую его для защиты SSH, потому что получаю множество атак ssh dos. Программа сканирует файлы журналов и проверяет повторяющиеся сообщения (например, неудачный вход в систему, множество соединений, как в вашей ситуации).
Вам нужно будет немного настроить его, чтобы правильно прочитать файл журнала вашего веб-сервера. Если вам удастся это сделать, вы можете ограничить доступ - то есть вы можете ограничить 50 попыток для запросов GET в 1 секунду 1 ip. При достижении порога IP-адрес блокируется на X раз. Это поможет вам сэкономить полосу пропускания и не беспокоиться, если эта атака будет исходить с другого адреса.
Надеюсь, это вам поможет :)
Изменить 1:
Я вспомнил, что есть модуль для apache, который может ограничивать эти возможности - mod_evasive. Лично я никогда им не пользовался, но многие люди называют его "хорошим материалом". Я нашел для вас учебник, который может вам помочь - http://www.mydigitallife.info/2007/08/15/install-mod_evasive-for-apache-to-prevent-ddos-attacks/ Проверьте это и посмотрите, может ли это удовлетворить ваши потребности.
Что вам нужно сделать, это связаться с вашим провайдером восходящего потока. большинство из них будут обнулять идущие на вас DDoS-атаки; Что касается IP-адресов США, которые сообщают своему интернет-провайдеру, что эти IP-адреса атакуют вас, и они обычно будут разговаривать с пользователем, который обычно является ботом, решающим ваши проблемы, поэтому он в основном поступает из азиатских стран.
Какие эффекты вызывает этот DDoS?
Если это загрузка ЦП, попробуйте переключиться на что-нибудь вроде nginx для обслуживания статического контента.
Если это пропускная способность, вы можете ограничить скорость запросов, используя что-то вроде mod_bandwidth.
Следует иметь в виду одну вещь: я видел подобные ситуации раньше, иногда это были не атаки, а люди, использующие «ускорители загрузки». Они открывают множество подключений к серверу одновременно, основываясь на (ошибочной) идее, что больше подключений = больше пропускной способности. Чтобы исправить это, я установил nginx на порт 81 и использовал некоторые правила .htaccess для принудительной загрузки содержимого только через nginx. Nginx обрабатывал запросы, не беспокоясь, и мне не приходилось беспокоиться ни о перенастройке веб-сервера, ни о замедлении трафика для законных пользователей.
iptables
& ipset
для спасения!
Сначала создайте IP Set:
ipset -N Attackers iphash
for ip in $LIST_OF_IP; do ipset -A Attackers $ip; done
Далее составьте правила:
iptables -t raw -I PREROUTING -m set --match-set Attackers src -j DROP
Или, если вы чувствуете зло:
iptables -t raw -I PREROUTING -m set --match-set Attackers src -g trap_attackers
iptables -t raw -A trap_attackers -j NOTRACK
iptables -t raw -A trap_attackers -j ACCEPT
iptables -I INPUT -m conntrack --ctstate UNTRACKED -j TARPIT
Каждый раз, когда появляется новый злоумышленник, добавьте его IP в набор:
ipset -A Attackers a.b.c.d
Вышеуказанное можно автоматизировать, используя комбинацию -m match
, -m recent
, и -j SET
, например -m match --string "GET http://url/to/offending/file" -m recent --seconds 60 --hitcount 2 -j SET --add-set Attackers src
Примечание: Убедитесь, что поддержка raw
стол, ipset
, и TARPIT
все скомпилированы в ваше ядро Gentoo (или как модули).