1

Я хочу заблокировать некоторые https-сайты, такие как youtube.com, facebook.com.

Я знаю, что мы не можем блокировать это, используя правила URL. так как URL зашифрован.

Поэтому я попытался заблокировать все DNS-запросы, которые содержат домен, который я хочу отфильтровать. Поэтому я добавил следующее правило:

iptables -A OUTPUT -p udp --dport 53 -m string --domain yahoo.com -j DROP

Но YouTube продолжают работать. Но после некоторого времени бездействия (около 15 минут) YouTube блокируется.

Есть ли какое-то объяснение?

Как я могу принудительно заблокировать YouTube?

4 ответа4

2

То, что вы делаете, будет иметь эффект, но есть несколько проблем:

  • Браузеры и операционные системы кэшируют DNS-запросы. Они не обязательно вызывают полный поиск DNS при каждой загрузке сайта.

  • Некоторые браузеры могут попробовать альтернативные варианты, если DNS кажется заблокированным (например, связаться с собственным DNS-сервером), потому что считают, что существует проблема с сетью. Google Chrome может сделать это.

  • Google Chrome и другие браузеры могут вскоре реализовать "DNS через HTTPS", что означает, что выполнение каких-либо действий с портом 53 не будет иметь никакого эффекта, поскольку он вообще не будет использовать это для DNS.

  • Блокировка по IP-адресу будет работать некоторое время, пока IP-адрес Youtube по какой-то причине не изменится.

  • Опытные пользователи могут менять DNS-серверы, если вы не заблокировали эту возможность в своих системах.

Как я могу принудительно заблокировать YouTube?

"Правильный" способ сделать то, что вы хотите, - создать прозрачный прокси-сервер HTTPS для перехвата, который может фильтровать HTTPS-трафик. Затем вы указываете прокси-серверу заблокировать любой URL с youtube.com .

Вы не можете просто искать youtube.com на 443, поскольку он зашифрован, как вы, наверное, поняли.

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

Вам нужно будет установить SSL-сертификат прокси на каждом компьютере, который использует прокси, чтобы избежать предупреждений безопасности.

1
#nslookup youtube.com

Non-authoritative answer:
Name:   youtube.com
Address: 172.217.16.46
Name:   youtube.com
Address: 172.217.20.206

iptables -t filter -A FORWARD -p tcp -s 192.168.1.0/24 -d 172.217.16.46 --dport 80 -j DROP
iptables -t filter -A FORWARD -p tcp -s 192.168.1.0/24 -d 172.217.20.206 --dport 80 -j DROP

источник: http://forum.oszone.net/post-692775-5.html

или же

iptables -I FORWARD -s 10.0.0.0/24 -p tcp -m string --algo bm --string ".youtube.com" -j DROP

источник: http://moshelpers.ru/?q=node/71

или В первом примере у нас есть машинный шлюз для локальной сети, там мы создаем правило для блокировки, например, ресурса youtube.com, он будет выглядеть следующим образом:

iptables -A FORWARD -m string --string "youtube.com" --algo kmp --to 65535 -j DROP

Чтобы заблокировать адреса на компьютере с Linux, отредактируйте правило немного кода:

iptables -A INPUT -m string --string "youtube.com" --algo kmp --to 65535 -j DROP

источник: http://sudouser.com/blokirovka-nezhelatelnyx-url-s-pomoshhyu-iptables.html

и это разорвало бы tcp соединение сразу и без таймаута только для -p tcp вы можете попробовать следующее

-j REJECT --reject-with tcp-reset

источник: http://forum.ixbt.com/topic.cgi?id=76:10833

Извините, все источники - русские сайты :)

0

Как указано в комментариях @ djsmiley2k, вы наверняка сталкиваетесь с DNS-кэшированием. Это означает, что ваша машина не запрашивает снова DNS-сервер для данного домена, если он недавно разрешил его.

Чтобы обеспечить немедленную блокировку домена, вы должны принудительно очистить кэш DNS. В зависимости от вашей ОС, команды могут отличаться. Вы можете найти примеры здесь

Таким образом, сразу после добавления правила iptables вы можете попробовать либо:

$ service nscd reload

или же

$ service dnsmasq restart

или же

$ rndc restart
0

Ваша команда:

iptables -A OUTPUT -p udp --dport 53 -m string --domain yahoo.com -j DROP

Сначала твоя блокировка только udp и порт 53

iptables -I INPUT 1 -s 172.217.0.0/16 -j DROP
iptables -I FORWARD 1 -s 172.217.0.0/16 -j DROP

iptables -I INPUT 2 -s 157.240.0.0/16 -j DROP
iptables -I FORWARD 2 -s 157.240.0.0/16 -j DROP

Сначала вам нужно заблокировать цепочку INPUT, так как именно туда поступают данные. Цепочка FORWARD может быть не нужна для ваших нужд. Затем я сделал пинг на youtube, а затем сделал whois на этом IP, чтобы увидеть, каким блоком они владеют.

Наконец, я заблокировал все там IP, так что нам не нужно беспокоиться о поиске DNS.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .