Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Скрипты для RusHub'а _ AntiTor

Автор: Saymon21 16.3.2012, 13:10

Итак, выкладываю пока тока для тестирования. Чуть позже сделаю ещё несколько доработок. Прошу сообщать обо всех ошибках.

Название: AntiTor
Идея: RoLex
Автор: Tsd © 15.03.2012
Перевод под RusHub и доработка: Saymon21
Версия скрипта: 1.0.1
Оригинал: http://mydc.ru/topic5239.html
Для работы скрипта нужен модуль Ban.

Описание скрипта: Скрипт не даёт зайти на хаб пользователям, использующим технологию http://mydc.ru/r/?https://ru.wikipedia.org/wiki/Tor.

Протестировано на Debian GNU/Linux 6.0.4, RusHub 2.3.9, LuaPlugin 2.8

Отличия этой версии:

1) http://mydc.ru/r/?https://ru.wikipedia.org/wiki/CURL теперь вызывается не из скрипта. Надо подумать зарание об обновлении бд через сторонний планировщик. Например http://mydc.ru/r/?https://ru.wikipedia.org/wiki/Cron. Под венду были сборки. Хотя там есть и куча других альтернатив. google://.
Пример задачи для cron:

Код
$ crontab -l |grep curl
*/50 * * * * /usr/bin/curl -L --retry 3 --connect-timeout 5 -m 15 -s -o "/usr/local/etc/rushub/scripts/AntiTor/torlist.txt" "http://torstatus.blutmagie.de/ip_list_all.php/Tor_ip_list_ALL.csv"

Вместо curl также можно использовать http://mydc.ru/r/?https://ru.wikipedia.org/wiki/Wget, http://mydc.ru/r/?http://www.opennet.ru/man.shtml?topic=fetch&category=1&russian=1, libwww-perl и т.п.

2) в Ban ныне она ExecuteOnTor (карательная функция для тех, кто лезет с tor'ом) добавлена возможность вызова iptables, ipfw, route, ipchains (Можно вписать вызов любых утилит). В комментариях показаны примеры некоторых правил к ним. Под венду: google://wipfw. Все вопросы о настройке утилит, sudo, fw, google:// пожалуйста.

3) Добавлена возможность блокировки чата/привата tor-юзерам, на случай если кто-то решит что лучше пускать всех подряд, но пусть они сидят молча.
Из фич тут есть возможность тихой блокировки.

4) Добавлена проверка всех онлайн юзеров на подключение с Tor при старте скрипта и при обновления списка адресов.

5) Добавлена проверка OnMCTo. (Персональные сообщения в главном чате). Настройки такие же, как и для чата/лс.

 AntiTor_1.0.lua ( 9.77 килобайт ) : 74
 

Автор: mariner 16.3.2012, 13:23

Юзайте наконец ipset, йоба

Автор: Saymon21 16.3.2012, 13:26

По желанию

Цитата
Можно вписать вызов любых утилит

Что мешает вписать?

Автор: ShadoWx 16.3.2012, 14:10

Цитата(mariner @ 16.3.2012, 14:23) *
Юзайте наконец ipset, йоба

а это по тому алгоритму что расписывал ты мне список прокси-серверов отлавливаем через ipset ??
P.S. жаль времени у тебя нет Коль adore.gif

Автор: Saymon21 16.3.2012, 14:43

Пару фиксов. Не совсем правильно работала блокировка чата/привата. Скрипт обновлён в первом посте.

Для дисконнекта юзера без отправки сообщения "Этот хаб работает под управлением..." находим

Код
function OnUserEnter(UID)
    if is_tor_connection(UID.sIP) then
        ExecuteOnTor(UID)
    end
end

И заменяем на:
Код
function OnUserConnected(UID)
    if is_tor_connection(UID.sIP) then
        ExecuteOnTor(UID)
        return true
    end
end

Автор: mariner 16.3.2012, 15:16

Цитата
а это по тому алгоритму что расписывал ты мне список прокси-серверов отлавливаем через ipset ??

Ага, именно так. Там же дел немного, но просто мне все лень.

Автор: Saymon21 16.3.2012, 18:42

Добавлена проверка всех онлайн юзеров на подключение с Tor при старте скрипта и при обновления списка адресов.
Добавлена проверка на использование Tor в событии OnMCTo. (Персональные сообщения в главном чате). Настройки такие же, как и для чата/лс.

Скрипт обновлён в первом посте.

Автор: KT315 16.3.2012, 20:16

А что с таймером не так? Почему cron предлагаешь?

Автор: Saymon21 16.3.2012, 20:26

С таймером всё нормально. Просто не хотел вешать лишние задачи на хаб.

Автор: Saymon21 12.5.2012, 11:54

Мб кому будет полезно. Скрипт для блокирования Tor адресов без участия хаба c использованием ipset & iptables:

Раскрывающийся текст
Код
#!/usr/bin/lua5.1
torlist="/home/ftp/lst/tor_ip_list.txt"
function add_ipset_lst()
    os.execute("/usr/sbin/ipset -N torips iphash")
end
function del_ipset_ips()
    os.execute("/usr/sbin/ipset -F torips")
end

function count()
    local c = 0
    for s in io.lines(torlist) do
        if string.find(s,"^%d+%.%d+%.%d+%.%d+$") then
            c = c +1
        end
    end
    return c
end

function load_base()
    for s in io.lines(torlist) do
        if string.find(s,"^%d+%.%d+%.%d+%.%d+$") then
            os.execute("/usr/sbin/ipset -A torips "..s)
        end
    end
    os.execute("/sbin/iptables -I INPUT -m set --set torips src -j DROP")
end
function run ()
    if count() > 0 then
     del_ipset_ips()
     os.execute("/sbin/iptables -D INPUT -m set --set torips src -j DROP")
     add_ipset_lst()
     load_base()
    end
end

run()

Понадобится интерпретатор языка lua.

Автор: mariner 12.5.2012, 17:23

блин big_smile.gif Луа то зачем при наличии sh

Автор: Saymon21 12.5.2012, 17:26

Кто как хочет, так и... ;)