Фильтрация DDoS атак через IPIP туннель с использованием серверов OVH

Фильтрация DDoS атак через IPIP туннель с использованием серверов OVH

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

IPIP позволяет пропускать трафик с одной хост машины на любой другой удаленный пункт назначения.

GRE не всегда работает на серверах OVH, поэтому рассмотрим пример с IPIP.
В нашем случае мы будем использовать 2 виртуальных сервера на базе KVM с разными локациями.

VM_IPIP_FR - KVM сервер с DDoS фильтрацией в Европейском дата-центре.
VM_IPIP_RU - KVM сервер без фильтрации в Российском дата-центре.

IPIP туннели позволяют пропускать есь трафик. С помощью IPIP моно доставить любой тип контента с любого сервера (аудио, видео, FTP, SSH, SCP и другое).

IPIP туннелирование удобно когда мы хотим использовать защиту своих ресурсов от атак средствами стороннего фильтрующего сервиса, в данном случае защитой по умолчанию на серверах OVH.

Требования к системе

  • iptables
  • iproute2
  • Ядро с поддержкой IPIP (по умолчанию все linux дистрибутивы поддерживают ipip)

Настройка

Проверяем включен ли модуль ipip и если нет включаем его.

1
2
3
4
5
# modprobe ipip
# lsmod | grep ipip
ipip 13472 0
tunnel4 13252 1 ipip
ip_tunnel 25216 1 ipip

На сервере VM_IPIP_FR разрешаем пересылку пакетов:

1
2
# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
# sysctl -p
1
2
3
# iptunnel add ipip1 mode ipip local YOUR_FILTERED_IP remote DESTINATION_SERVER_IP ttl 255
# ip addr add 192.168.168.1/30 dev ipip1
# ip link set ipip1 up

На сервере VM_IPIP_RU выполняем следующие настройки:

Проверяем включен ли модуль ipip и если нет включаем его.

1
2
3
4
5
# modprobe ipip
# lsmod | grep ipip
ipip 13472 0
tunnel4 13252 1 ipip
ip_tunnel 25216 1 ipip

На сервере VM_IPIP_FR разрешаем пересылку пакетов:

1
2
# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
# sysctl -p
1
2
3
# iptunnel add ipip1 mode ipip local DESTINATION_SERVER_IP remote YOUR_FILTERED_IP ttl 255
# ip addr add 192.168.168.2/30 dev ipip1
# ip link set ipip1 up

Обратите внимание, что в первых строчках на каждом сервере указаны какие адреса являются отправкой и какие назначением. Вторые строчки содержат в себе локальные адреса, которые не должны быть заняты в вашей внутренней сети.

Удостоверьтесь, что не столкнулись ни с каким видом проблем связанных MTU.

Роутинг

Исходные записи маршрута требуются, чтобы удостовериться в данных, которые прибыли и которые туннель IPIP передает обратно.

Выполним следующие команды на сервере VM_IPIP_RU

1
2
3
# echo '100 IPIPFilter' >> /etc/iproute2/rt_tables
# ip rule add from 192.168.168.0/30 table IPIPFilter
# ip route add default via 192.168.168.1 table IPIPFilter

Обратите внимание, что данные команды должны быть выполнены только один раз. В противном случае придется вручную исправлять это в файле /etc/iproute2/rt_tables

Настраиваем NAT

Для того чтобы направить трафик в наш туннель необходимо завернуть трафик через NAT:

На фильтрующем сервере VM_IPIP_FR выполняем:

1
# iptables -t nat -A POSTROUTING -s 192.168.168.0/30 -j SNAT --to-source YOUR_FILTERED_IP

Перенаправление портов через IPIP туннель

Чтобы сделать все проще, мы передадим все порты бэкэнд серверу.

На фильтрующем сервере VM_IPIP_FR выполняем:

1
2
# iptables -t nat -A PREROUTING -d YOUR_FILTERED_IP -j DNAT --to-destination 192.168.168.2
# iptables -A FORWARD -d 192.168.168.2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Первое правило настраивает фактическое перенаправление портов, и второе правило удостоверяется, что соединения получают NAT’d и возвращаются назад должным образом.