Перейти к содержимому
Калькуляторы
Блокировка веб ресурса  

566 пользователей проголосовало

  1. 1. Для блокировка используем



Блокировка сайтов провайдерами маневры с DNS

У него он открывается через прокси, гугл-перевочик и проч... Это тоже заблочим?

опера же стандартный браузер

IE или Safari это стандартный браузер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос - каким образом "ловить"?

Предположительно их прокси:

global-turbo-1.opera-mini.net

opera10beta-turbo.opera-mini.net

mobile10-turbo.opera-mini.net

 

А еще, у вас многие пользуются турбо? Там же при нормальном инете жуткие тормоза в сравнении с прямым доступом к сайту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

3,4 - Зачем? В реестре урлы чёткие прописаны =) Кроме того, часть записей там домены, можно тупо по хосту рубить

Чтобы быстро искать.

Пришёл пакет - быстро по дст ип ищем у себя в "таблице" где указаны условия: по ип / урлу и тп дальше в "таблице соединений" (возможно связанной с первой) ищем состояние данного соединения, возможно собранный в один буфер хттп регвест.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Конфиг минимален:

Проксировать на nginx нужно уметь :)

http://www.netlab.linkpc.net/download/software/nginx/proxy/

кеш от туда можно выкинуть.

дополнительно генерить ничего не нужно, блокировки все в отдельных файлах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Насколько я помню, нжинкс так и не умеет работать с tproxy?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вечер добрый.

 

С помощью чего можно реализовать такую схему наиболее оптимально?

blocker2.png

 

Т.е. трафик с подозрением на вредные ресурсы (по IP) отправляется на blocker, где уже проверяется на соответствие из списка запрещенных ресурсов по URL/IP. Если запрещенный, то пользователю выдается страничка с информацией о блокировке. Если же всё хорошо, трафик дальше отправляется на BGP. Причем обратный трафик должен вернуться уже в обход blocker'а.

 

Насколько я понял, с помощью nginx такое реализовать не получится.

Есть еще вариант с squid + tproxy, но писали, что может не получится, если трафик не возвращать через тот же blocker.

Еще один вариант - iptables (string matсh).

 

Какие еще варианты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

squid + tproxy, но писали, что может не получится, если трафик не возвращать через тот же blocker

Так точно, не получится

 

Какие еще варианты?

1) поделия на перле/c++, снифающие исходящий от юзера трафик на роутере через libnfqueue и что-то делающие с нужным пакетом (пример тут был)

2) поделия на перле/c++, снифающие исходняк, или даже отзеркаленный трафик и при нужном GET шлющие tcp reset серверу и redirect клиенту (пример тут был)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно ещё взять за основу, для обкатки алгоритма, uTPControl, принцип тот же, только внутри поменять процессинг пакетов для tcp+http.

После вникания и отладки можно будет относительно легко перенести в ядро.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть нехорошая идея, мож кто реализует?

 

Нужен генератор лексического анализатора грамматики, формируемой по списку запретных URL-ов.

Чтобы на входе получал строку потока начиная с GET, например, а выдавал true или false -- о необходимости блокировки соединения.

Есте, перед лексическим разбором входную строку URL надо нормализировать, убрать лишние пробелы, замененные кодами буквы и т.п..

 

IMHO может получиться более производительный вариант, чем заворачивание на proxy (это не основной их функционал) и более корректный, чем Layer7/string фильтры в iptables (слишком жесткие правила сравнения).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Самоуправство!

В законе сказано заблокировать урл: http://xzy.com/bnm значит только его, а не все его возможные формы написания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2) поделия на перле/c++, снифающие исходняк, или даже отзеркаленный трафик и при нужном GET шлющие tcp reset серверу и redirect клиенту (пример тут был)

 

Решил попробовать и такой вариант. Скрипт отсюда http://forum.nag.ru/forum/index.php?showtopic=79886&view=findpost&p=772456

 

Добавил отправку RST-пакета перед редиректом:

my  $rst = new Net::RawIP({ip =>
               {
                   saddr => $srcip,
                   daddr => $dstip
               },
               tcp =>
               {
                   source => $srcport,
                   dest   => $dstport,
                   ack    => 1,
                   rst    => 1,
                   window => 0
               }
               });
$rst->send(0,1);

 

Но всё равно после этого пакета (5 по счёту в листинге) вижу обратный трафик от сайта до редиректа.

Вопрос почему? Неправильный RST отсылаю?

Или просто ответ приходит раньше?

 

tcpdump -ni eth1 host 65.254.248.202 and port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
18:59:16.714111 IP 10.1.2.234.14319 > 65.254.248.202.80: Flags [s], seq 597220666, win 65535, options [mss 1460,nop,nop,sackOK], length 0
18:59:16.850726 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [s.], seq 1477339087, ack 597220667, win 4380, options [mss 1460,sackOK,eol], length 0
18:59:16.850992 IP 10.1.2.234.14319 > 65.254.248.202.80: Flags [.], ack 1, win 65535, length 0
18:59:16.851626 IP 10.1.2.234.14319 > 65.254.248.202.80: Flags [P.], seq 1:691, ack 1, win 65535, length 690
18:59:16.853231 IP 10.1.2.234.14319 > 65.254.248.202.80: Flags [R.], seq 3697746630, ack 2817628209, win 0, length 0
18:59:16.853673 IP 10.1.2.234.14319 > 65.254.248.202.80: Flags [.], ack 78, win 65458, length 0
18:59:17.088438 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [.], ack 691, win 5070, length 0
18:59:17.582351 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [P.], seq 1:1461, ack 691, win 5070, length 1460
18:59:17.582370 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [P.], seq 1461:2921, ack 691, win 5070, length 1460
18:59:17.582743 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [P.], seq 2921:4381, ack 691, win 5070, length 1460
18:59:17.582874 IP 10.1.2.234.14319 > 65.254.248.202.80: Flags [.], ack 2921, win 65535, length 0
18:59:17.582983 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [P.], seq 4381:5841, ack 691, win 5070, length 1460
18:59:17.583371 IP 10.1.2.234.14319 > 65.254.248.202.80: Flags [.], ack 5841, win 65535, length 0
18:59:17.583482 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [P.], seq 5841:7301, ack 691, win 5070, length 1460
18:59:17.583676 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [P.], seq 7301:8761, ack 691, win 5070, length 1460
18:59:17.584106 IP 10.1.2.234.14319 > 65.254.248.202.80: Flags [.], ack 8761, win 65535, length 0
18:59:17.719636 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [.], seq 8761:10221, ack 691, win 5070, length 1460
18:59:17.720018 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [.], seq 10221:13141, ack 691, win 5070, length 2920
18:59:17.720210 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [P.], seq 13141:13556, ack 691, win 5070, length 415
18:59:17.720437 IP 10.1.2.234.14319 > 65.254.248.202.80: Flags [.], ack 11681, win 65535, length 0
18:59:17.720627 IP 10.1.2.234.14319 > 65.254.248.202.80: Flags [.], ack 13556, win 65535, length 0
18:59:17.727895 IP 10.1.2.234.14319 > 65.254.248.202.80: Flags [F.], seq 691, ack 13556, win 65535, length 0
18:59:17.864622 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [.], ack 692, win 5070, length 0
18:59:17.865049 IP 65.254.248.202.80 > 10.1.2.234.14319: Flags [F.], seq 13556, ack 692, win 5070, length 0
18:59:17.865247 IP 10.1.2.234.14319 > 65.254.248.202.80: Flags [.], ack 13557, win 65535, length 0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Самоуправство!

В законе сказано заблокировать урл: http://xzy.com/bnm значит только его, а не все его возможные формы написания.

Вот именно! Как сказано, так и должно быть сделано!

 

P.S. Кто помнит "success story" про автомобильную мед. аптечку "ФЭСТ", тот знает, что (и _как_долго_) необходимо делать.. ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Но всё равно после этого пакета (5 по счёту в листинге) вижу обратный трафик от сайта до редиректа.

Вопрос почему? Неправильный RST отсылаю?

Или просто ответ приходит раньше?

Как минимум врядли ack и seq должны быть равны 1 =) Но я бегло попробовал, если подставлять ack & seq предыдущего запроса, почему-то тоже не канает; ну либо руки кривые, либо не выспался =) надо будет поэкспериментировать ещё

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну вы блин %)

ack и seq меняются местами для противоположной стороны.

Ещё, вроде, подтверждение закрытия соединения должно быть.

Короче курите спецификацию tcp - сэкономите кучу времени на экспериментах. Ещё можно где то в исходниках ОС поискать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нужен генератор лексического анализатора грамматики, формируемой по списку запретных URL-ов.

Вашкевич Н.П. с теорией автоматов вспоминается... в принципе того рода задачка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В Дом.ру после окончания денег на счете на любые HTTP-запросы приходит примерно такой ответ:

HTTP/1.1 302 Moved Temporarily
Server: nginx/0.7.67
Date: Wed, 21 Nov 2012 14:00:22 GMT
Content-Type: text/html
Content-Length: 161
Connection: close
Location: http://frontend.citydom.ru/?city=volgograd&page=avans

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/0.7.67</center>
</body>
</html>

Может, у кого-то есть возможность рассказать о реализации?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Реализация простая, если тебя нет в "списке" то все коннекты "редиректяца на локальный порт" который и отвечает. С этим проще, т.к. ты ещё до установки сессии знаешь что нужно редиректить. я уже где-то на форуме выкладывал конфиг nginx для правильных редиректов :) а с блокировкой сайта сложнее т.к. узнать нужно редиректить нам или нет мы можем только после установки tcp сессии между абонентом и сервером (допустим ютюба).

 

У меня на данный момент работает фильтр на linux на который направляется исходящий от абонента трафик(входящий идет напрямую, без этого сервера). И там я уже смотрю если исходя из пакетов с данными абонента нужно отредиректить, я пакет дропаю и абоненту отсылаю подставной пакет ACK и пакет с данными от имени сервера с редиректом, после этого и абоненту и серверу шлю rst, серверу нужно обязательно, абоненту - на всякий случай, вдруг он подумает что keep-alive или ещё что-то. тесты показали что при наличие в списке 100000 доменов - на скорость открытия страниц не влияет. тестил "ab" сначала без фильтра потом с фильтром, результаты тестов 600 запросов\сек, больше сервер на прямую дать не смог, по этому может скрипт и больше может отработать. Плюс в том что я могу на сервере поднять N количество фильтров и баллансировать между ними запросы, по этому теоретически я тогда буду ограничен лишь памятью и CPU.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

KotikBSd а пример формирования RST пакета можете выложить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тот что шлем серверу:

Стандартный RST

seq=seq пакета с данными от клиента который дропали

ack=ack пакета с данными от клиента который дропали

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В Дом.ру после окончания денег на счете на любые HTTP-запросы приходит примерно такой ответ:

В ростелеке редирект на: http://debt.sibirtelecom.ru?url=....

После залёта в блокировку и перезапуска браузера с парой сотен вкладок я был неописуемо "счаслив".

Пришлось на nginx, который у меня прозрачно всё проксирует добавить:

 

 

	location / {
		if ($host ~* "debt.sibirtelecom.ru") {
			set_unescape_uri $orig_uri $arg_url;
			return 302 $orig_uri;
		}
....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот нашлось: http://forum.nginx.org/read.php?21,230537,230537#msg-230537

те решение для прозрачного проксирования где то пролетало.

Только проксирования, в обе стороны, а не в одну.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день, пытаюсь сделать способ с перл скриптом (генерация пакета).

Но не пойму до конца как скрипт работает, пакеты собираем через зазеркалированный порт, а отправлять пакеты надо через другой порт, пробовал кто-нибудь в такой конфигурации данный скрипт.

Способ с перл скриптом

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день.

 

А на MIkrotik ктонибуть реализовывал автоматическую блокировку запрещенных сайтов ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день.

 

А на MIkrotik ктонибуть реализовывал автоматическую блокировку запрещенных сайтов ?

 

https://www.evernote.com/shard/s185/sh/ceb0b021-47e7-4c61-ab43-bc6db27fe919/c535b6e5047ec69d304519fe81c2c9ac?noteKey=c535b6e5047ec69d304519fe81c2c9ac&noteGuid=ceb0b021-47e7-4c61-ab43-bc6db27fe919

 

 

делай как все написано

как список получишь напиши выкину скрипт который все запихивает в микрот

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.