Jump to content
Калькуляторы
Блокировка веб ресурса  

546 members have voted

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



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

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

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

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

Share this post


Link to post
Share on other sites
Вопрос - каким образом "ловить"?

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

global-turbo-1.opera-mini.net

opera10beta-turbo.opera-mini.net

mobile10-turbo.opera-mini.net

 

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites
Конфиг минимален:

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

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

blocker2.png

 

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

 

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

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

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

 

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

Share this post


Link to post
Share on other sites
squid + tproxy, но писали, что может не получится, если трафик не возвращать через тот же blocker

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

Ну вы блин %)

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

В Дом.ру после окончания денег на счете на любые 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>

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


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

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

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

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

 

 

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Добрый день.

 

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

Share this post


Link to post
Share on other sites

Добрый день.

 

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

 

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

 

 

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now