Martin Schmitt wrote:
Peter Barthel schrieb:

      DROP_COUNT=0;
      while read n x; do
              if [ $n -gt 5 ]; then
                      DROP_COUNT=`expr $DROP_COUNT + 1`;
              fi
           echo $DROP_COUNT;
      done
      echo $DROP_COUNT;

Halt! Ist das wirklich das konkrete Beispiel, das bei Dir nicht
funktioniert, oder hast Du das für unsere Verhältnisse angepaßt? So wie
Du es hier geschrieben hast, funktioniert es nämlich mit bash und ksh
gleichermaßen ohne Probleme.

-martin

Jein.

Es ist noch eine zusätzliche while-schleife drumherum...
Das ist ein Script um bei einem ddos (syn-flood) schuldige ips zu kicken...
Es ist noch n bissel mehr drum herum, aber das hier ist das essentielle daran:

#!/bin/bash

#ab wieviel SYN-Connects wird gekickt?
KICK_AB=5

#beginnen zu zaehlen, wie oft das script ips geblocked hat...
DROP_COUNT=0;

#[Ctrl] + [C] Abfangen
trap 'function_sterbengehen' 2;
function function_sterbengehen()
{
       rm -rf /tmp/didit;
       exit 0;
}


while /bin/true ; do
echo -e "\033[1;31mGedroppte IPs seit dem Aufruf von "$0": \033[1;32m"$DROP_COUNT;
      echo -e "\033[0;mRefresh alle 15 Sekunden"
echo -e "\033[0;m-------------------------------------------------------------------------------------------";

      #tmp-File wegwerfen
      rm -f /tmp/didit

(netstat -n | grep :80| grep ESTAB; sleep 5; netstat -n | grep :80| grep ESTAB; sleep 5; netstat -n | grep :80| grep ESTAB;) | \
      sort | perl -pe 's/ +/ /g' | uniq -c | sort -n | \
      grep '0 0' | grep -v '1.*tcp' | cut -d: -f2 | cut -d' ' -f2 | \
      sort | uniq -c | sort | \
      while read n ip; do
              if [ $n -gt $KICK_AB ]; then
                      echo "date `date` ip [$ip] n [$n]"
/sbin/iptables -L input -v -n | grep -q $ip || /sbin/iptables -I input --source $ip --jump DROP
                      echo $ip >> /tmp/didit;
                      DROP_COUNT=`expr $DROP_COUNT + 1`;
              fi
      done
  sleep 5
done


Gruß, Peter
-- 
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Reply via email to