FreeBSD. Боремся с HTTP-флудом средствами IPFW

Тема в разделе "Защита от Ddos-атак", создана пользователем DeathStar, 24 авг 2013.

  1. Активируем IPFW
    Добавим в /etc/rc.conf
    firewall_enable="YES"
    firewall_script="/etc/ddos.sh"
    firewall_logging="YES"
    Создаем наш файерволл в файл /etc/ddos
    #!/bin/sh
    ipfw='/sbin/ipfw -q'
    ${ipfw} flush
    ${ipfw} add check-state
    ${ipfw} table 1 flush
    ${ipfw} add deny ip from table\(1\) to me
    ${ipfw} add allow all from any to any
    Пишем парсер логов и добавляем их в черный список
    Создадим файл /etc/ban.sh, который будет собирать IP и добавлять их в table1
    #!/bin/sh
    echo '' > /etc/bl
    cat /var/log/nginx/deathstar.name.access.log | awk ' match($0, /(\d*.\d*.\d*.\d*).*"-" "-"/) {print $1}' | sort | uniq >> /etc/bl
    /sbin/ipfw table 1 flush
    cat /etc/bl | awk '{ if ($1!="") {system("/sbin/ipfw table 1 add "$1"")} }' > /dev/null
    Добавить в cron задание
    */1 * * * * root /etc/ban.sh
     
    24 авг 2013
  2. Если каждую минуту будет запускаться скрипт система подвисать будет. Тем более, если лог большой.
     
    27 авг 2013
  3. ротацию логов включить нужно. Подвисаний сервера не наблюдал
     
    6 янв 2016

Поделиться этой страницей