Category: Tech articles

  • Ограничение пропускной способности для ICMP-пакетов, с целью предотвращения DDoS-атак

    Основная задача — настроить фильтры таким образом, чтобы пакеты, с исходящими адресами, не принадлежащими вашей сети, не смогли бы покинуть ее. Это предотвратит возможность отправки всякой \”гадости\” в Интернет.

    Прежде, чем приступить к делу, нарисуем схему подключения локальной сети к Интернет:

    [Интернет] —— [Linux router] — [Офис]
    eth1 eth0

    Зададим начальные условия:

    # tc qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000
    # tc class add dev eth0 parent 10:0 classid 10:1 cbq bandwidth 10Mbit rate \\
    10Mbit allot 1514 prio 5 maxburst 20 avpkt 1000

    Если у вас более высокоскоростное подключение — измените эти цифры соответствующим образом. Теперь необходимо определиться с \”шириной\” канала для ICMP-трафика. Чтобы найти типовое значение для вашей сети, можно воспользоваться утилитой tcpdump, запустив ее с перенаправлением вывода в файл. Затем, с помощью этого файла, вы сможете подсчитать количество ICMP-пакетов, отправляемых вашей сетью в единицу времени.

    Если вариант подсчета экспериментальным путем вам не подходит, попробуйте ограничиться 10% общей пропускной способности. Построим наш класс:

    # tc class add dev eth0 parent 10:1 classid 10:100 cbq bandwidth 10Mbit rate \\
    100Kbit allot 1514 weight 800Kbit prio 5 maxburst 20 avpkt 250 \\
    bounded

    Он ограничивает пропускную способность канала величиной 100 Кбит/сек. А теперь подключим к нему фильтр для ICMP-пакетов:

    # tc filter add dev eth0 parent 10:0 protocol ip prio 100 u32 match ip
    protocol 1 0xFF flowid 10:100

     

    http://docstore.mik.ua/manuals/ru/LARTC/x2502.html