Здравствуйте!Ребята, помогите написать скрипт АтиДДоса.
Имеем информацию из: netstat -ant|grep ESTABLISHED|awk '{print($5)}'
Нужно в соответствии с полученной, проверитъ, если один и тот же IP повтаряется более 10 раз, то произвести действие. Если нет, то ничего не делать...В принципе просто, сам программист, но в SHELL не силён, прошу помощи...
>Здравствуйте!
>
>Ребята, помогите написать скрипт АтиДДоса.
>
>Имеем информацию из: netstat -ant|grep ESTABLISHED|awk '{print($5)}'
>Нужно в соответствии с полученной, проверитъ, если один и тот же IP
>повтаряется более 10 раз, то произвести действие. Если нет, то ничего
>не делать...
>
>В принципе просто, сам программист, но в SHELL не силён, прошу помощи...
>
Ага, просто, учи перл и наслаждайся(раз программист) ;-)
my $max_conn = 10;use strict;
my %ip;open (FH, "<iptest") or die "Can't open ip address list: $!";
while(<FH>) {
# Работает только для IPv4
next unless /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*/;
$ip{$1}++;
}foreach (sort {$ip{$b} <=> $ip{$a}} keys %ip) {
if($ip{$_} > $max_conn) {
printf "WARNING!!! upper limit connection for %10s %d\n", $_, $ip{$_};
} else {
printf "legal user: %10s %d\n", $_, $ip{$_};
}
}
close FH or die "Close error: $!";ну там переделать нужно поток ввода заменить, на стд, и все.
Да зачем тебе нетстат ?читай данные сразу из файла /proc/net/ip_conntrack
>Да зачем тебе нетстат ?
>
>читай данные сразу из файла /proc/net/ip_conntrack
это годится только на линухе и только если модуль ip_conntrack загружен. из условий задачи этого не следует. загрузка же оного сильно увеличивает packet processing overhead, что делает это неприемлимым для этой задачи (уязвимость к DDOS увеличивается в разы)\^P^/
>Здравствуйте!
>
>Ребята, помогите написать скрипт АтиДДоса.
>
>Имеем информацию из: netstat -ant|grep ESTABLISHED|awk '{print($5)}'... | sort | uniq -c | awk '$1 >= 10 {system(sprintf("./handle_attacking_ip %s",$2))}'
и забей на перл. это советуют люди, коим шел и авк не по зубам.
\^P^/
>>Здравствуйте!
>>
>>Ребята, помогите написать скрипт АтиДДоса.
>>
>>Имеем информацию из: netstat -ant|grep ESTABLISHED|awk '{print($5)}'
>
>... | sort | uniq -c | awk '$1 >= 10 {system(sprintf("./handle_attacking_ip %s",$2))}'
>
>и забей на перл. это советуют люди, коим шел и авк не
>по зубам.
>
>\^P^/
;-)), ну тогда будь другом, не поленись, и вырежь номер порта из потока, иначе uniq работать не будет!
>>>Имеем информацию из: netstat -ant|grep ESTABLISHED|awk '{print($5)}'
>>
>>... | sort | uniq -c | awk '$1 >= 10 {system(sprintf("./handle_attacking_ip %s",$2))}'
>>
>>и забей на перл. это советуют люди, коим шел и авк не
>>по зубам.
>>
>;-)), ну тогда будь другом, не поленись, и вырежь номер порта из
>потока, иначе uniq работать не будет!
а awk '{print($5)}' это разве не оно? я не просто так с многоточия написал. имелось ввиду подписать сие к вышепроцитированному
упс... соррри, $5 там похоже ip:port. тогда Ok, порт надо отсечь. ступил.
(можно модифицировать вышенаписаный авк, дабы не вставлять еще одного компонента:
... | awk '{split($5,adrp,":"); print adrp[1]}' | ...
или
... | awk '{adr=$5; sub(":.*$","",adr); print adr}' | ...
или изгаляться cut'ом отдельно\^P^/
>Здравствуйте!
>
>Ребята, помогите написать скрипт АтиДДоса.
>
>Имеем информацию из: netstat -ant|grep ESTABLISHED|awk '{print($5)}'
>Нужно в соответствии с полученной, проверитъ, если один и тот же IP
>повтаряется более 10 раз, то произвести действие. Если нет, то ничего
>не делать...И где здесь ДОС?!
ДОС у тебя будет не при эстаблишеных коннектах
а в случае соединений со статусом SYN_RCVсмотри HOW-TO по DDOS :)))
>а в случае соединений со статусом SYN_RCVпоправка SYN_RCVD
>Здравствуйте!
>
>Ребята, помогите написать скрипт АтиДДоса.
>
>Имеем информацию из: netstat -ant|grep ESTABLISHED|awk '{print($5)}'
>Нужно в соответствии с полученной, проверитъ, если один и тот же IP
>повтаряется более 10 раз, то произвести действие. Если нет, то ничего
>не делать...
>
>В принципе просто, сам программист, но в SHELL не силён, прошу помощи...
>
Скажите а зачем Вам этот велосипед, с квадратными колёсами?
В любой нормальной системе, есть фаервол который сделает это за Вас, достаточно прописать нужные опции.
>>Здравствуйте!
>>
>>Ребята, помогите написать скрипт АтиДДоса.
>>
>>Имеем информацию из: netstat -ant|grep ESTABLISHED|awk '{print($5)}'
>>Нужно в соответствии с полученной, проверитъ, если один и тот же IP
>>повтаряется более 10 раз, то произвести действие. Если нет, то ничего
>>не делать...
>>
>>В принципе просто, сам программист, но в SHELL не силён, прошу помощи...
>>
>Скажите а зачем Вам этот велосипед, с квадратными колёсами?
>В любой нормальной системе, есть фаервол который сделает это за Вас, достаточно
>прописать нужные опции.
да что вы? ключевое слово здесь - _стандартный_ файрвол. со стандартными же методами обхода его. в плане защиты любой, пусть даже самый пошлый креатив лучше любого стандартного решения. а еще лучше - в комплексе.P.S. пошла старая тема по рукам. автор пди и забыл уже, что спрашивал это тут, и вряд-ли будет искать тут ответ :)
\^P^/
>>Скажите а зачем Вам этот велосипед, с квадратными колёсами?
>>В любой нормальной системе, есть фаервол который сделает это за Вас, достаточно
>>прописать нужные опции.
>да что вы? ключевое слово здесь - _стандартный_ файрвол. со стандартными же
>методами обхода его.
Да что Вы?
Можно пару ссылок на "стандартные метода обхода" фаервола?