Защита от TCP SYN Flooding EcoNAT Documentation
В систему EcoSGE по отдельной лицензии может быть добавлен механизм SYN Cookie + SYN Proxy (далее – SYN Proxy) для противодействия DoS-атакам типа TCP SYN Flooding (RFC 4987).
Для использования данного механизма не требуется производить какие-либо сложные настройки. Достаточно создать ACL для IPv4 и/или IPv6, к которому необходимо применять механизм SYN Proxy, указать ACL в ветке конфигурации system.tcp_protection и включить защиту.
EcoSGE:system.tcp_protection# ls
enable
acl aclflood
aclv6 aclv6flood
Внимание! Механизм SYN Proxy не поддерживает Hairpin NAT.
Работа механизма SYN Proxy подробно описана в разделе III этого документа (англ.). Отдельно следует указать на две важные особенности работы данного механизма:
- после получения ACK клиента начинается согласование между SYN Proxy и целевым сервером. До успешного завершения согласования SYN Proxy отбрасывает все GET-запросы клиента;
- при прохождении через SYN Proxy сбрасываются все опции исходного TCP-сегмента.
Для мониторинга работы механизма SYN Proxy предусмотрено несколько счётчиков, описание которых дано таблице ниже.
Имя счётчика | Описание |
---|---|
cr_tcp_syn_cookie_sent_ipv4 cr_tcp_syn_cookie_sent_ipv6 | Количество SYN, в ответ на которые был отправлен SYN Cookie (SYN/ACK, сгенерированный механизмом SYN Proxy) |
cr_tcp_syn_cookie_established_ipv4 cr_tcp_syn_cookie_established_ipv6 | Количество SYN Cookie, в ответ на которые получен ACK |
cr_tcp_syn_proxy_established_ipv4 cr_tcp_syn_proxy_established_ipv6 | Количество TCP-сессий, установленных с использованием механизма SYN Proxy |
cr_tcp_syn_sent_ipv4 cr_tcp_syn_sent_ipv6 | Количество всех установленных и полуоткрытых (был только SYN) TCP-сессий |
cr_tcp_established_ipv4 cr_tcp_established_ipv6 | Общее количество установленных TCP-сессий |
cr_tcp_syn_cookie_invalid_ipv4 cr_tcp_syn_cookie_invalid_ipv6 | Количество SYN Cookie, у которых не совпал хеш |
В таблице ниже указаны OID счётчиков в MIB.
OID | Имя счётчика |
---|---|
1.3.6.1.4.1.45555.1.2.696 | cr_tcp_established_ipv6 |
1.3.6.1.4.1.45555.1.2.697 | cr_tcp_syn_sent_ipv6 |
1.3.6.1.4.1.45555.1.2.698 | cr_tcp_established_ipv4 |
1.3.6.1.4.1.45555.1.2.699 | cr_tcp_syn_sent_ipv4 |
1.3.6.1.4.1.45555.1.2.770 | cr_tcp_syn_cookie_sent_ipv4 |
1.3.6.1.4.1.45555.1.2.771 | cr_tcp_syn_cookie_established_ipv4 |
1.3.6.1.4.1.45555.1.2.772 | cr_tcp_syn_cookie_invalid_ipv4 |
1.3.6.1.4.1.45555.1.2.773 | cr_tcp_syn_proxy_established_ipv4 |
1.3.6.1.4.1.45555.1.2.774 | cr_tcp_syn_cookie_sent_ipv6 |
1.3.6.1.4.1.45555.1.2.775 | cr_tcp_syn_cookie_established_ipv6 |
1.3.6.1.4.1.45555.1.2.776 | cr_tcp_syn_cookie_invalid_ipv6 |
1.3.6.1.4.1.45555.1.2.777 | cr_tcp_syn_proxy_established_ipv6 |
Для мониторинга SYN Proxy можно также использовать команду show cps, которая выводит в отдельной графе "TCP protection" следующие данные для IPv4 и IPv6:
- количество SYN в секунду, в ответ на которые был отправлен SYN Cookie (syn per second);
- количество SYN Cookie в секунду, в ответ на которые получен ACK (resv cookie per second);
- количество TCP-сессий в секунду, установленных с использованием механизма SYN Proxy (proxy session per second).
EcoSGE:# show cps
ipv4 tcp total/cps/tps: 0/0/0
ipv4 udp total/cps/tps: 0/0/0
total ipv4 cps+tps: 0
--------------------------------------
ipv6 tcp cps: 0
ipv6 udp cps: 0
total ipv6 cps: 0
======================================
total ipv6+ipv4 cps+tps: 0
tcp fps total/v4/v6: 0/0/0
udp fps total/v4/v6: 0/0/0
total fps: 0
TCP protection
--------------------------------------
syn per second ipv4: 0
resv cookie per second ipv4: 0
proxy session per second ipv4: 0
syn per second ipv6: 0
resv cookie per second ipv6: 0
proxy session per second ipv6: 0
В выводе команды show sessions local any все сессии, созданные с использованием механизма SYN Proxy, обозначаются меткой |SC|:
ingress TCP 185.61.79.70:3775-185.61.79.70:3775 213.24.130.100:40088 ; Last packet 29.14 seconds ago; To be deleted right now. |SC|