Всем привет, форумчане. Вообщем есть правила:
-P INPUT DROP
-A INPUT -i -lo -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT -p udp -m multiport --dports 27015:27020 -m state --state NEW -m hashlimit --hashlimit-upto 104/sec --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-name CSS -j ACCEPTИспользую такой метод защиты от DoS атак UDP протокола.
Приложение передает не более 104 пакета в секунду.
По сути защита не должна пускать тех, кто превышает 104 пакета.
Когда я атакую свой выделенный сервер, оно так и происходит...
Например я посылаю 150 000 пакетов...
Но через некоторое время почему-то я попадаю в состояние ESTABLISHED и большое количество пакетов попадает в приложение. Возможно я что-то напутал в правилах?
И если я попадаю в ESTABLISHED, есть возможность отфильтровать пакеты? Спасибо.
> И если я попадаю в ESTABLISHED, есть возможность отфильтровать пакеты? Спасибо.тебе виднее куда ты там попадаешь
советую попасть сначала в гугл и основательно почитать базовую документациюно если пакет уже попал в ACCEPT/DROP - то остальные правила после него уже необрабатываются,
это основная аксиома работы с iptables , советую отойти от консоли пока его не поймёшьтвои правила в том виде что они есть лишены смысла
> -A INPUT -p udp -m multiport --dports 27015:27020 -m state --state NEW -m hashlimit --hashlimit-upto 104/sec --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-name CSS -j ACCEPT
убери -m state NEW и поставь правило выше -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
так оно будет работать как ты хочешь
>[оверквотинг удален]
> советую попасть сначала в гугл и основательно почитать базовую документацию
> но если пакет уже попал в ACCEPT/DROP - то остальные правила после
> него уже необрабатываются,
> это основная аксиома работы с iptables , советую отойти от консоли пока
> его не поймёшь
> твои правила в том виде что они есть лишены смысла
>> -A INPUT -p udp -m multiport --dports 27015:27020 -m state --state NEW -m hashlimit --hashlimit-upto 104/sec --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-name CSS -j ACCEPT
> убери -m state NEW и поставь правило выше -A INPUT -m conntrack
> --ctstate ESTABLISHED -j ACCEPT
> так оно будет работать как ты хочешьК сожалению... нет, опять я попадаю в ESTABLISHED и не отсеиваю пакет, который превысил мои правила
alex@server:~# iptables -L -v -n
Chain INPUT (policy DROP 34506 packets, 1274K bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- -lo * 0.0.0.0/0 0.0.0.0/0
2159 86280 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 27015:27020 limit: up to 104/sec burst 1 mode srcip
203K 7511K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate ESTABLISHEDChain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 224 packets, 36759 bytes)
pkts bytes target prot opt in out source destinationКак видно, iptables заблокировал 34506 пакета и пропустил 203000+ пакета
Решение:
-A INPUT DROP
-A INPUT -i -lo -j ACCEPT //Разрешаем входящие соединения для локальной сети
-A INPUT -p udp -m multiport --dports 27015:27020 -m hashlimit --hashlimit-upto 104/sec --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-name CSS -j ACCEPT //Если пакетов меньше 104 в секунду, пропускаем их
-A INPUT -p udp -m multiport --dports 27015:27020 -j DROP //Если больше, то дропаем
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT //Разрешаем установленные соединения