Page 1 of 1

Блокировка ботов

Posted: Fri Nov 06, 2015 6:06 am
by usr999
Подскажите как реализовать блокировку ботов средствами iptables из удаленного источника, а именно с сервиса
http://ru.myip.ms/browse/blacklist/

http://ru.myip.ms/files/blacklist/csf/l ... cklist.txt
http://ru.myip.ms/files/blacklist/csf/l ... mitted.txt

Желательно сделать проверку айпих раз в сутки

Re: Блокировка ботов

Posted: Fri Nov 06, 2015 6:42 am
by skurudo
Исключительно руками - нужно писать что-то свое, т.е. нужно забирать список, парсить его при необходимости и добавлять в iptables, но имхо проще в nginx такое пихать.

Re: Блокировка ботов

Posted: Fri Nov 06, 2015 7:02 am
by usr999
skurudo wrote:Исключительно руками - нужно писать что-то свое, т.е. нужно забирать список, парсить его при необходимости и добавлять в iptables, но имхо проще в nginx такое пихать.
Не подскажите как реализовать через nginx?

Re: Блокировка ботов

Posted: Fri Nov 06, 2015 7:21 am
by skurudo
usr999 wrote:Не подскажите как реализовать через nginx?
Там тоже скрипты, вот как пример:
http://www.mybbstuff.com/thread-61.html

Re: Блокировка ботов

Posted: Fri Nov 06, 2015 7:21 am
by skurudo
usr999 wrote:Подскажите как реализовать блокировку ботов средствами iptables из удаленного источника, а именно с сервиса http://ru.myip.ms/browse/blacklist/
Или же добавьте идею: http://bugs.vestacp.com/

Re: Блокировка ботов

Posted: Fri Nov 06, 2015 12:38 pm
by Deeryo
Можно также использовать ipset модуль для iptables. Пример:
yum install ipset

создать файл /etc/ipset.conf

Code: Select all

create fail2ban hash:ip family inet hashsize 32768 maxelem 65536
добавить блокировку в /etc/sysconfig/iptables

Code: Select all

-A INPUT -p tcp -m set --match-set fail2ban src -j BLACKLISTS
добавить в конец файла /etc/sysconfig/iptables-config (для загрузки ipset перед iptables)
SpoilerShow

Code: Select all

test `/usr/sbin/ipset --list | wc -l` = 0 && /usr/sbin/ipset --restore < /etc/ipset.conf
создать скрипт /root/scripts/fail2ban.sh
SpoilerShow

Code: Select all

#!/bin/sh
cd `dirname $0`

GOOGLE="^209\.185\.108|^209\.185\.253|^209\.85\.238|^216\.239\.46|^64\.68\.8|^64\.68\.9[0-2]|^66\.249\.6[4-9]|^66\.249\.7[0-3]|^66\.249\.7[8-9]|^72\.14\.199|^8\.6\.48"

echo "flush fail2ban" > fail2ban.txt

wget -q -O- http://lists.blocklist.de/lists/all.txt | sort | uniq > fail2ban.new
grep -qE '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' fail2ban.new || exit

cat fail2ban.new | grep -Eo '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | grep -vE "$GOOGLE" | awk '{print "add fail2ban",$1}' >> fail2ban.txt

/usr/sbin/ipset --restore < fail2ban.txt
/usr/sbin/ipset --save > /etc/ipset.conf

rm -f fail2ban.txt fail2ban.new
/usr/sbin/ipset list fail2ban | wc -l
рестартнуть сервис iptables, а скрипт запускать по крону