This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
ddos_ipset [2013/12/15 11:51] kyxap Page moved from howto:ddos_ipset to ddos_ipset |
ddos_ipset [2016/01/27 21:31] (current) kyxap |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Борьба с DDOS посредством использования утилиты ipset на выделенных серверах с Debian ====== | + | {{tag>ddos_mitigation debian squeeze ipset geoip bash perl iptables kernel}}====== Борьба с DDOS посредством использования утилиты ipset на выделенных серверах с Debian ====== |
* Тянем последний [[ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/|patch-o-matic-ng]] в ''/usr/src'', распаковываем, заходим в директорию и стартуем **./runme set**. \\ При этом подразумевается что исходники текущего ядра находятся в ''/usr/src/linux'', а ''iptables'' - в ''/usr/src/iptables''. \\ После заходим в ''/usr/src/linux'' и делаем **make oldconfig**, где указываем поддержку фич ''ipset'' //модулями//. | * Тянем последний [[ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/|patch-o-matic-ng]] в ''/usr/src'', распаковываем, заходим в директорию и стартуем **./runme set**. \\ При этом подразумевается что исходники текущего ядра находятся в ''/usr/src/linux'', а ''iptables'' - в ''/usr/src/iptables''. \\ После заходим в ''/usr/src/linux'' и делаем **make oldconfig**, где указываем поддержку фич ''ipset'' //модулями//. | ||
Собираем и устанавливаем ядро: | Собираем и устанавливаем ядро: | ||
Line 165: | Line 165: | ||
esac | esac | ||
</code> | </code> | ||
+ | |||
+ | ===== Скрипт для удаления адресов из блеклиста (FreeBSD) ===== | ||
+ | <file bash /opt/scripts/unban_ip.sh> | ||
+ | #!/usr/bin/env bash | ||
+ | |||
+ | PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:~/bin | ||
+ | |||
+ | SCRIPTHOME="/root/antiddos" | ||
+ | |||
+ | function valid_ip() | ||
+ | { | ||
+ | local ip=$1 | ||
+ | local stat=1 | ||
+ | |||
+ | [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] && { | ||
+ | OIFS=$IFS | ||
+ | IFS='.' | ||
+ | ip=($ip) | ||
+ | IFS=$OIFS | ||
+ | [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \ | ||
+ | && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]] | ||
+ | stat=$? | ||
+ | return $stat | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ############### | ||
+ | |||
+ | [[ -d $SCRIPTHOME ]] || exit 1 | ||
+ | |||
+ | if ! VALID_IP=$(valid_ip "$1") | ||
+ | then | ||
+ | echo "Usage: $0 <IP ADDR>" >&2 | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | sed_cmd="/$1/d;/^[[:space:]]*$/d;s/[[:space:]]*$//" | ||
+ | |||
+ | if LISTS=$(grep -lIrx "$1" "$SCRIPTHOME" | grep -v "\.sh") | ||
+ | then | ||
+ | for i in $LISTS | ||
+ | do | ||
+ | echo "Removing $1 from $i" | ||
+ | sed -i '' "$sed_cmd" ${i} | ||
+ | done | ||
+ | nginx -t && nginx -s reload | ||
+ | fi | ||
+ | |||
+ | </file> | ||
+ | |||
+ |