Архив метки: Windows 8

Windows Firewall: Создать правило для Яндекс-диск

Скорее всего Яндекс диск использует установщик Squirrel. Я точно не уверен, но, при установке/обновлении этой программы, создаётся папка вида 1.2.34.5678, которая расположена примерно тут:

C:\Users\<USER>\AppData\Roaming\Yandex\YandexDisk2\3.2.27.4886\YandexDisk2.exe 

Правилам Sorfware Restriction Policies (SRP) это не проблема, т.к. они понимают маски (wildcards), поэтому следующее правило пути сработает:

C:\Users\*\AppData\Roaming\Yandex\YandexDisk2\?.?.??.????\YandexDisk2.exe 

Для Брандмауэра Windows (Windows Defender Firewall with Advanced Security) маски не работают, поэтому в принципе невозможно создать правило, которое бы разрешало выход в интернет для данного приложения (Яндекс-диска), т.к. после каждого обновления путь к файлу меняется (меняется название папки).

Если нет возможности разрешать доступ по имени файла (пути), то придётся разрешать по другим «уникальным» параметрам. В данном случае это будет адрес. Сложность в том, что это облачное хранилище, а не какой-то отдельный сервер. В данном случае политика фаервола была настроена на блокировку всех входящих и исходящих соединений. Естественно были созданы правила белого списка с разрешениями по пути. Поскольку правила для Яндекс-диска не было, в логи попал такой адрес:

213.180.204.127

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

route:          213.180.192.0/19

Здесь мы получим подобный результат, но нам нужна строчка Owner CIDR.

Этот диапазон есть и в официальном списке айпишников Яндекса. Так что возможно в будущем придётся правило дополнить.

 

В общем, чтобы не прописывать для правила все 8190 адресов из пула, можно указать эту запись в качестве правила:

New-NetFirewallRule -DisplayName "Yandex Disk (IP)" -Direction Outbound -Protocol "TCP" -RemoteAddress "213.180.192.0/19" -RemotePort "443" | Out-Null
Чтобы не запускать каждый раз Яндекс-диск для проверки корректности введённой IPv4 подсети, можно проверить доступность адреса через PowerShell:

Test-NetConnection -Port 443 -ComputerName 213.180.204.127
ComputerName     : 213.180.204.127
RemoteAddress    : 213.180.204.127
RemotePort       : 443
InterfaceAlias   : Ethernet 1
SourceAddress    : 192.168.1.6
TcpTestSucceeded : True

Если правило не сработало и соединение заблокировано было бы такое сообщение:

WARNING: TCP connect to (213.180.204.127 : 443) failed

ComputerName           : 213.180.204.127
RemoteAddress          : 213.180.204.127
RemotePort             : 443
InterfaceAlias         : Ethernet 1
SourceAddress          : 192.168.1.6
PingSucceeded          : True
PingReplyDetails (RTT) : 5 ms
TcpTestSucceeded       : False

 

Итоговое правило

В процессе отловил ещё один адрес, который не входил в первое правило, так что пришлось дополнить его ещё одним диапазоном. На текущий момент таких уже два (пока два):

New-NetFirewallRule -DisplayName "Yandex Disk" -Description "Yandex Disk (IP range)" -Direction Outbound -Protocol "TCP" -RemoteAddress @("213.180.192.0/19","87.250.224.0/19") -RemotePort "443" | Out-Null

Если так пойдёт и дальше, наверное придётся добавить весь список диапазонов:

5.45.192.0/18
5.255.192.0/18
37.9.64.0/18
37.140.128.0/18
45.87.132.0/22
77.88.0.0/18
84.252.160.0/19
87.250.224.0/19
90.156.176.0/22
93.158.128.0/18
95.108.128.0/17
100.43.64.0/19
141.8.128.0/18
178.154.128.0/18
185.32.187.0/24
199.21.96.0/22
199.36.240.0/22
213.180.192.0/19