Jump to content

Блокировка веб ресурса  

569 members have voted

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



Recommended Posts

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

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

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

  • Replies 6.1k
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

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

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

global-turbo-1.opera-mini.net

opera10beta-turbo.opera-mini.net

mobile10-turbo.opera-mini.net

 

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

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

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

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

Posted

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

 

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

blocker2.png

 

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

 

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

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

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

 

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

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

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

 

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

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

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

Posted

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

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

Posted

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

 

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

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

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

 

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

Posted

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

Posted

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

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

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

 

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

Posted

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

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

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

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

Posted

Ну вы блин %)

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

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

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

Posted

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

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

Posted

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

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

Posted

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

 

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

Posted

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

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

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

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

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

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

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

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

 

 

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

Posted

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

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

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

  • 3 weeks later...
Posted

Добрый день.

 

А на 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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.