Мой сервер подвергается атаке ddos, трафик в моих журналах apache выглядит так:
ip address - - [11/Apr/2013:01:01:04 -0600] "POST / HTTP/1.1" 416 31 "-" "Microsoft Internet Explorer"
ip address - - [11/Apr/2013:01:01:05 -0600] "POST / HTTP/1.1" 416 31 "-" "Microsoft Internet Explorer"
ip address - - [11/Apr/2013:01:01:05 -0600] "POST / HTTP/1.1" 416 31 "-" "Microsoft Internet Explorer"
ip address - - [11/Apr/2013:01:01:05 -0600] "POST / HTTP/1.1" 416 31 "-" "Microsoft Internet Explorer"
ip address - - [11/Apr/2013:01:01:05 -0600] "POST / HTTP/1.1" 416 31 "-" "Microsoft Internet Explorer"
ip address - - [11/Apr/2013:01:01:05 -0600] "POST / HTTP/1.1" 416 31 "-" "Microsoft Internet Explorer"
Как я могу заблокировать это с помощью таблиц IP? Я использую:
-A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j DROP
но это, похоже, ничего не делает. Я думаю, мне нужно что-то в этом роде.
Спасибо
Я не уверен, как это можно сделать в iptables, но я бы порекомендовал вам взглянуть на OSSEC, который автоматически блокирует повторных нарушителей. Вы также можете взглянуть на CloudFare, у них также есть бесплатный пакет и они специализируются на предотвращении DDoS-атак, поскольку вам нужно отбросить трафик. перед оно доходит до вас. Если адрес - это всего лишь один IP-адрес, я бы просто удалил его навсегда.
Я изменил правило iptable с Вот, посмотри:
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 50 -j DROP
Не видя всех ваших iptables и некоторого анализа, показывающего, что скорость превышает указанные вами пределы, невозможно сказать, почему это происходит - например, может быть просто так, что вы получаете много запросов через одно соединение.
Даже если вы не используете пакеты keepalive, брандмауэр с отслеживанием состояния (сам по себе) не является очень эффективным инструментом для предотвращения атак DOS. Формирование трафика помогает - но это очень быстро усложняется. Есть несколько модулей apache, которые поддерживают минимальную гарантию пропускной способности, которую намного проще настроить, чем QOS ядра. Но я бы рекомендовал использовать fail2ban для блокировки IP-адресов, вызывающих проблему.
Несколько проблем:
--tcp-flags SYN SYN
-j DROP
в конце - ошибка, это означает отбрасывание всех пакетов, которые находятся ниже thershold. Так должно быть -j ACCEPT
и после этого иметь правило DROP. (Если вы не заметили эффекта, это может быть связано с тем, что позже у вас будет другое правило ACCEPT или общая политика ACCEPT.)--tcp-flags SYN SYN -m hashlimit --hashlimit-name Web --hashlimit-above 3/second --hashlimit-mode srcip --hashlimit-burst 7 --hashlimit-srcmask 28 -j DROP