[asuswrt-merlin] Блокировка сбора информации Windows 10 средствами ipset

Обсуждаем OpenSource прошивки.
Аватара пользователя
Александр Рыжов
Сообщения: 316
Зарегистрирован: 12 авг 2015, 13:14
Откуда: Смоленск

Сообщение Александр Рыжов » 24 авг 2015, 11:51

Первой идеей была установка Windows 10 в виртуальной машине. Дав пожить в вируалке Win10 несколько дней, можно было бы собрать на роутере с помощью tcpdump перечень IP-адресов, на которые Windows обращается и заблокировать их все в будущем. Однако часть адресов являются CDN-сетями и DNS-имена таких хостов в разное время будут разрешаться в разные IP. Следственно, лучше блокировать DNS-имена до разрешения в IP.

Внести DNS-имена в hosts-файл не достаточно, т.к. Windows такой трюк раскусывает в т.ч. с помощью механизма проверки работоспособности DNS-резолвинга. Ладно, разрешение DNS-имён оставим правильным, но заблокируем на маршрутизаторе транзитный трафик для разрешённых IP-адресов.

Для asuswrt-merlin решение будет состоять из двух, работающих независимо друг от друга частей:
  • часть, входящая в прошивку — блокировка нежелательного трафика с помощью (изначально пустого) набора ipset и правила iptables.
  • часть из Entware — сбор IP-адресов при разрешении DNS-имён средствами ipset-dns и занесение их в набор ipset.

Подразумевается, что у вас уже настроен внешний USB-носитель для работы Entware.

Владельцам роутеров с прошивкой Padavan'а снова повезло, у них функционал ipset-dns уже есть в составе dnsmasq и никаких внешних пакетов не требуется.

Поместите в /jffs/Win10tracking.txt список хостов, подлежащих блокировке. Список ниже я брал отсюда.

Код: Выделить всё

a.ads1.msn.com
a.ads2.msads.net
a.ads2.msn.com
a.rad.msn.com
a-0001.a-msedge.net
a-0002.a-msedge.net
a-0003.a-msedge.net
a-0004.a-msedge.net
a-0005.a-msedge.net
a-0006.a-msedge.net
a-0007.a-msedge.net
a-0008.a-msedge.net
a-0009.a-msedge.net
ac3.msn.com
ad.doubleclick.net
adnexus.net
adnxs.com
ads.msn.com
ads1.msads.net
ads1.msn.com
aidps.atdmt.com
aka-cdn-ns.adtech.de
a-msedge.net
apps.skype.com
az361816.vo.msecnd.net
az512334.vo.msecnd.net
b.ads1.msn.com
b.ads2.msads.net
b.rad.msn.com
bs.serving-sys.com
c.atdmt.com
c.msn.com
cdn.atdmt.com
cds26.ams9.msecn.net
choice.microsoft.com
choice.microsoft.com.nsatc.net
compatexchange.cloudapp.net
corp.sts.microsoft.com
corpext.msitadfs.glbdns2.microsoft.com
cs1.wpc.v0cdn.net
db3aqu.atdmt.com
df.telemetry.microsoft.com
diagnostics.support.microsoft.com
ec.atdmt.com
fe2.update.microsoft.com.akadns.net
feedback.microsoft-hohm.com
feedback.search.microsoft.com
feedback.windows.com
flex.msn.com
g.msn.com
h1.msn.com
i1.services.social.microsoft.com
i1.services.social.microsoft.com.nsatc.net
lb1.www.ms.akadns.net
live.rads.msn.com
m.adnxs.com
m.hotmail.com
msedge.net
msftncsi.com
msnbot-65-55-108-23.search.msn.com
msntest.serving-sys.com
oca.telemetry.microsoft.com
oca.telemetry.microsoft.com.nsatc.net
pre.footprintpredict.com
preview.msn.com
pricelist.skype.com
rad.live.com
rad.msn.com
redir.metaservices.microsoft.com
reports.wes.df.telemetry.microsoft.com
s.gateway.messenger.live.com
s0.2mdn.net
schemas.microsoft.akadns.net
secure.adnxs.com
secure.flashtalking.com
services.wes.df.telemetry.microsoft.com
settings-sandbox.data.microsoft.com
settings-win.data.microsoft.com
sls.update.microsoft.com.akadns.net
sqm.df.telemetry.microsoft.com
sqm.telemetry.microsoft.com
sqm.telemetry.microsoft.com.nsatc.net
static.2mdn.net
statsfe1.ws.microsoft.com
statsfe2.update.microsoft.com.akadns.net
statsfe2.ws.microsoft.com
survey.watson.microsoft.com
telecommand.telemetry.microsoft.com
telecommand.telemetry.microsoft.com.nsatc.net
telemetry.appex.bing.net
telemetry.microsoft.com
telemetry.urs.microsoft.com
view.atdmt.com
vortex.data.microsoft.com
vortex-bn2.metron.live.com.nsatc.net
vortex-cy2.metron.live.com.nsatc.net
vortex-sandbox.data.microsoft.com
vortex-win.data.microsoft.com
watson.live.com
watson.microsoft.com
watson.ppe.telemetry.microsoft.com
watson.telemetry.microsoft.com
watson.telemetry.microsoft.com.nsatc.net
wes.df.telemetry.microsoft.com
www.msftncsi.com

Для dnsmasq надо указать разрешать эти имена через наш отдельный резолвер. В /jffs/scripts/firewall-start внесите следующее содержимое:

Код: Выделить всё

#!/bin/sh

DNSMASQ_CFG=/jffs/configs/dnsmasq.conf.add
if [ ! -f $DNSMASQ_CFG ] || [ "$(grep Win10tracking $DNSMASQ_CFG)" = "" ];
then
  rm -f $DNSMASQ_CFG
  for i in `cat /jffs/Win10tracking.txt`;
  do
    echo "server=/$i/127.0.0.1#1919" >> >> $DNSMASQ_CFG
  done
  service restart_dnsmasq
fi

# Load ipset modules
lsmod | grep "ipt_set" > /dev/null 2>&1 || \
for module in ip_set ip_set_nethash ip_set_iphash ipt_set
do
  insmod $module
done

# Create ip set
if [ "$(ipset --swap Win10tracking Win10tracking 2>&1 | grep 'Unknown set')" != "" ];
then
  ipset -N Win10tracking iphash
fi

# Apply iptables rule
iptables-save | grep Win10tracking > /dev/null 2>&1 || \
  iptables -I FORWARD -m set --set Win10tracking src,dst -j DROP

И создайте для его автоматического запуска скрипт /opt/etc/init.d/S01ipset-dns со следующим содержимым:

Код: Выделить всё

#!/bin/sh

ENABLED=yes
PROCS=ipset-dns
ARGS="Win10tracking Win10tracking 1919 8.8.8.8"
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

. /opt/etc/init.d/rc.func

Не забудьте сделать созданные скрипты исполняемыми и перегрузите роутер:

Код: Выделить всё

chmod +x /jffs/scripts/firewall-start
chmod +x /opt/etc/init.d/S01ipset-dns
reboot


Проверить работоспособность решения можно следующим образом. Попытайтесь в браузере открыть один из перечисленных сайтов, например view.atdmt.com, затем проверьте, что набор ipset наполняется содержимым, у меня на текущий момент:

Код: Выделить всё

# ipset --list Win10tracking
Name: Win10tracking
Type: iphash
References: 1
Header: hashsize: 1024 probes: 8 resize: 50
Members:
37.29.19.96
65.55.252.92
37.29.19.89
131.107.255.255
37.29.19.73
191.232.139.253
191.232.139.254

Аватара пользователя
Александр Рыжов
Сообщения: 316
Зарегистрирован: 12 авг 2015, 13:14
Откуда: Смоленск

Сообщение Александр Рыжов » 25 авг 2015, 16:23

24/08/15 На дружественном форуме решение адаптировано для прошивок Padavan'a.

25/08/15 На asuswt-merlin, начиная с релизов старше 378.55 фича ipset активирована тоже и Entware уже не требуется. How-to здесь.

27/08/15 Решение адаптировано для OpenWrt.

28/08/15 Решение адаптировано для TomatoUSB.

15/01/16 Решение адаптировано для ZyXEL Keenetic с поддержкой OPKG.

vasek00
Сообщения: 5
Зарегистрирован: 26 авг 2015, 10:37

Сообщение vasek00 » 26 авг 2015, 10:44

Вопрос а не лучше использовать в место 127.0.0.1 например IP из локальной сети 192.168.1.254#60000 тогда

Код: Выделить всё

echo "server=/$i/192.168.1.254#60000" >> >> $DNSMASQ_CFG

пусть в локальной сети и "помирает"

Или использовать команду блокировки "address"

Код: Выделить всё

 
 address=/.a-msedge.net/127.0.0.1
 address=/.vo.msecnd.net/127.0.0.1

Аватара пользователя
Александр Рыжов
Сообщения: 316
Зарегистрирован: 12 авг 2015, 13:14
Откуда: Смоленск

Сообщение Александр Рыжов » 26 авг 2015, 12:29

vasek00, кажется вы не прочитали первый пост. Обратите внимание на второй абзац.

vasek00
Сообщения: 5
Зарегистрирован: 26 авг 2015, 10:37

Сообщение vasek00 » 26 авг 2015, 15:58

Механизм проверки работоспособности DNS-резолвинга - пройденный этап и был изучен еще с Vista, сам смотрел в то время.
Так же в данной статье не хватает еще и того что например

Код: Выделить всё

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NlaSvc

и куча всего что может писаться в реестр, раньше только создавались NetworkList-Profiles например.

Согласен да не прочитал внимательно данный пункт :

Код: Выделить всё

разрешение DNS-имён оставим правильным, но заблокируем на маршрутизаторе транзитный трафик для разрешённых IP-адресов

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

Код: Выделить всё

..... (тут не интересно) .....
Запрос - на адрес IP HTTP(80), HTTP:Request, GET /ncsi.txt
Ответ - HTTP:Response, HTTP/1.1, Status: Ok, URL: /ncsi.txt

теперь вопрос ответ не пришел, так как заблокируем на маршрутизаторе транзитный трафик ?

Например для ТВ (одной фирмы) создавали свой лок WEB сервер на нем размещали прошивки, тем самым заставляя ТВ использовать механизм обновления не с сервера компании а с лок.севрака WEB, который мог стоят в 1-5м. от ТВ.

Аватара пользователя
Александр Рыжов
Сообщения: 316
Зарегистрирован: 12 авг 2015, 13:14
Откуда: Смоленск

Сообщение Александр Рыжов » 26 авг 2015, 16:42

vasek00 писал(а):Источник цитаты Вопрос а не лучше использовать в место 127.0.0.1 например IP из локальной сети 192.168.1.254#60000 тогда

Код: Выделить всё

echo "server=/$i/192.168.1.254#60000" >> >> $DNSMASQ_CFG

пусть в локальной сети и "помирает"
С т.з. быстродействия это самый худший вариант, т.к. ответы будут приходить по таймауту. Тогда уж лучше использовать adsuck, мгновенно отвечающий NXDOMAIN (non existent domain) для заданного чёрного списка доменов.

vasek00 писал(а):только одно для проверки доступности интернета было :

Код: Выделить всё

..... (тут не интересно) .....
Запрос - на адрес IP HTTP(80), HTTP:Request, GET /ncsi.txt
Ответ - HTTP:Response, HTTP/1.1, Status: Ok, URL: /ncsi.txt

теперь вопрос ответ не пришел, так как заблокируем на маршрутизаторе транзитный трафик ?

Например для ТВ (одной фирмы) создавали свой лок WEB сервер на нем размещали прошивки, тем самым заставляя ТВ использовать механизм обновления не с сервера компании а с лок.севрака WEB, который мог стоят в 1-5м. от ТВ.
Не понял в чём состоит вопрос. Интересуетесь как теперь будет работать Network Connectivity Status Indicator? Или почему я не называю транзитным трафик между LAN-портами роутера?

vasek00
Сообщения: 5
Зарегистрирован: 26 авг 2015, 10:37

Сообщение vasek00 » 28 авг 2015, 10:23

Это не вопрос, тем более интересоваться там не чему, а ответ на действие по блокировки транзитного трафика предложенного вами
разрешение DNS-имён оставим правильным, но заблокируем на маршрутизаторе транзитный трафик для разрешённых IP-адресов

просто констатирую факт, что Windows не только проверяет IP адрес нужного ей сервера через запрос DNS но и его доступность делая запрос и получая ответ, а уже далее можно и информацию отсылать.
Так что же произойдет если ответ не пришел - думаете на этом все, что у нее Windows нет никаких альтернативных вариантов/путей.

Аватара пользователя
Александр Рыжов
Сообщения: 316
Зарегистрирован: 12 авг 2015, 13:14
Откуда: Смоленск

Сообщение Александр Рыжов » 28 авг 2015, 10:51

vasek00 писал(а):Так что же произойдет если ответ не пришел - думаете на этом все, что у нее Windows нет никаких альтернативных вариантов/путей.
Разумеется, я не могу это знать. Однозначно MS не станет упрощать для нас пути блокировки слежки.

У предложенного в первом посте способа куча изъянов. Он не работает для компьютеров, перемещающихся между несколькими сетями. Он блокирует все виртуальные хосты на перечисленных IP вне зависимости от того относятся ли они к слежке или нет. Из-за алгоритма поведения dnsmasq блокируются все поддомены на указанном домене, к примеру, вместе с доменом сбора информации msftncsi.com блокируется домен http://www.msftncsi.com, используемый в NCSI. На старых ядрах, как во всех MIPS-роутерах Asus, включая RT-N66U, ipset работает исключительно с IPv4-адресами.

Я отнюдь не говорю о том, что в первом посте описан идеальный вариант. Я изложил подход, который до этого момента на домашних роутерах не использовался.

Nite2
Сообщения: 16
Зарегистрирован: 27 авг 2015, 13:38

Сообщение Nite2 » 31 авг 2015, 14:06

А я на буржуйских сайтах читал, что с точки зрения быстродействия и затрат ресурсов правильнее всего заменять не на 127.0.0.1, а на 0.0.0.0. Тогда сетевой стек махом понимает, что адрес инвалидный, и вообще никуда ничего не отсылает и не ждет ответа. Причем тема была как раз про зарезание трафика Win10. То есть, если режешь сбор информации от Win10, такая замена проканывает.

mookhin
Сообщения: 9
Зарегистрирован: 13 ноя 2015, 23:53

Сообщение mookhin » 06 дек 2015, 21:54

Александр Рыжов писал(а):
25/08 На asuswt-merlin, начиная с релизов старше 378.55 фича ipset активирована тоже и Entware уже не требуется. How-to здесь


Тогда чую, что для RT-N16 (с последней прошивкой .50) все ж Entware нужОн! Если здеся соблюсти (через ipset в dnsmasq.conf с регистрацией и DROP'ом iptables) то немного непонятно каким образом это должно выглядеть. ipset-dns сидит на порте, указанном при запуске S01ipset-dns. Чайниковский вопрос: как посмотреть список зарегистрированных/блокированных адресов силами iptables без ipset?


Вернуться в «Прошивки OpenWrt/DD-WRT/AsusWrt/TomatoUSB/Wive-NG/Padavan/"от Энтузиастов "»

Кто сейчас на конференции

Всего 0 посетителей :: 0 зарегистрированных, 0 скрытых и 0 гостей (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (121) здесь было 18 май 2016, 18:19

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей