Tag: iptables

  • Защита от SYN flood

    Пример взят из документации к iproute, написанной Алексеем и адаптирован для совместной работы с netfilter. Если этот пример заинтересует вас, измените числовые значения на наиболее подходящие для вашей системы.

    Этот сценарий был написан для защиты отдельного хоста, а не сети. Учитывайте это обстоятельство.

    Для его работы желательно иметь самую последнюю версию iproute2.

    #! /bin/sh -x
    #
    # демонстрация возможностей по управлению входящим (ingress) трафиком
    # здесь приводится пример ограничения пропускной способности для входящих SYN-пакетов
    # Может оказаться полезным для защиты от TCP-SYN атак.
    #
    #пути к различным утилитам;
    #укажите правильные значения.
    #
    TC=/sbin/tc
    IP=/sbin/ip
    IPTABLES=/sbin/iptables
    INDEV=eth2
    #
    # пометить все SYN-пакеты, пришедшие через $INDEV, числом 1
    ############################################################
    $iptables -A PREROUTING -i $INDEV -t mangle -p tcp --syn \\
    -j MARK --set-mark 1
    ############################################################
    #
    # установить ingress qdisc на входящий интерфейс
    ############################################################
    $TC qdisc add dev $INDEV handle ffff: ingress
    ############################################################
    
    #
    #
    # SYN-пакет имеет размер 40 байт (320 бит), отсюда -- три пакета
    # имеют размер 960 бит (примерно 1 Кбит); ограничим скорость поступления
    # 3-мя пакетами в секунду ( точнее -- 1 Кбит/сек )
    ############################################################
    $TC filter add dev $INDEV parent ffff: protocol ip prio 50 handle 1 fw \\
    police rate 1kbit burst 40 mtu 9k drop flowid :1
    ############################################################
    
    #
    echo \"---- qdisc parameters Ingress ----------\"
    $TC qdisc ls dev $INDEV
    echo \"---- Class parameters Ingress ----------\"
    $TC class ls dev $INDEV
    echo \"---- filter parameters Ingress ----------\"
    $TC filter ls dev $INDEV parent ffff:
    
    #Удаление ingress qdisc
    #$TC qdisc del $INDEV ingress