Блокировка интернета при проведении ВсОШ в Москве
Эта статья описывает необходимые настройки фильтрации интернета при проведении школьного и муниципального этапов всероссийской олимпиады школьников в Москве, если такая фильтрация осуществляется на каждом компьютере при помощи файрвола на каждом компьютере. В статье описаны настройки для систем МОС-12 и Windows-10.
Список необходимых разрешённых хостов
На каждом компьютере должен быть открыт доступ:
- Для всех соединений, находящихся в состоянии Established или Related, то есть для уже открытых соединений.
- DNS-протокол: TCP и UDP, порт 53.
- ICMP-протокол, входящие и исходящие соединения, для тестирования сети командой ping.
- Входящие соединения по протоколу TCP на порт 22 - если используется ssh-сервер, запущенный на компьютере, для удалённого управления им.
- Все соединения на localhost, для работы локальных приложений.
Также должны быть разрешены исходящие соединения на следующие адреса.
Имя хоста | IP-адрес | Зачем нужен |
---|---|---|
10.0.0.0/8 | Локальная сеть ДОНМ для доступа ко всем ресурсам, для простоты конфигурирования | |
school.mos.ru | 94.79.51.81
94.79.51.82 94.79.51.83 |
Необходим для работы тестирующей системы МЭШ и "Магазина приложений" МОС |
uchebnik.mos.ru | 94.79.51.83 | Необходим для работы тестирующей системы МЭШ |
login.mos.ru | 212.11.153.6 | Необходим для авторизации в МЭШ |
vos.olimpiada.ru | 185.178.208.183 | Сайт ВсОШ в Москве |
всош.цпм.рф | 185.30.228.25 | Сайт ВсОШ в Москве |
olympiads.ru | 194.58.88.173 | Сайт городской предметно-методической комиссии ВсОШ по информатике |
mc.yandex.ru | 87.250.250.119
87.250.251.119 93.158.134.119 77.88.21.119 |
Метрика яндекса, если заблокировать, то браузер будет долго загружать страницу |
os.mos.ru
repo.os.mos.ru |
37.230.149.17 | Репозитории МОС, для установки пакетов, если возникнет необходимость доставить приложения. |
marketplace.visualstudio.com | 13.107.42.18 | Магазин расширений для VSCode |
ms-vscode.gallerycdn.vsassets.io | 68.232.34.200 | Необходим для скачивания расширений для VSCode |
ms-vscode.gallery.vsassets.io | 13.107.6.175 | Необходим для скачивания расширений для VSCode |
az764295.vo.msecnd.net | 152.199.19.160 | Необходим для скачивания расширений для VSCode |
it-help-school.ru | 91.221.70.4 | Этот сайт, для доступа к техническим инструкциям |
Настройка МОС-12
В МОС-12 можно записать в файл /etc/sysconfig/nftables.conf следующий набор правил:
# Эта команда сбрасывает все правила, иначе новые правила будут добавляться к ранее установленным
flush ruleset
table ip filter {
chain input {
# Правила обработки входящих пакетов
# По умолчанию ставим правило drop для пакетов
type filter hook input priority 0; policy drop;
# Принимаем пакеты всех установленных соединений
ct state established,related accept
# Принимаем пакеты на 22 порт (для управления компьютером по ssh)
tcp dport 22 accept
# Принимаем входящий ping
icmp type echo-request accept
# Принимаем все пакеты с этого компьютера (на lo-интерфейс)
iif lo accept
}
chain output {
# Правила обработки исходящих пакетов
# По умолчанию ставим правило drop для пакетов
type filter hook output priority 0; policy drop;
# Разрешаем все установленные соединения
ct state established,related accept
# Разрешаем соединения на порт 53 для работы DNS
tcp dport 53 accept
udp dport 53 accept
# Разрешаем соединения на этот же компьютер (lo-интерфейс)
oif lo accept
# Далее идёт белый список сайтов, к которым должен быть открыт доступ
# Вся локальная сеть 10.*.*.* на всякий случай целиком
ip daddr 10.0.0.0/8 accept
# school.mos.ru, uchebnik.mos.ru
ip daddr 94.79.51.81 accept
ip daddr 94.79.51.82 accept
ip daddr 94.79.51.83 accept
# login.mos.ru
ip daddr 212.11.153.6 accept
# mc.yandex.ru
ip daddr 87.250.250.119 accept
ip daddr 87.250.251.119 accept
ip daddr 93.158.134.119 accept
ip daddr 77.88.21.119 accept
# vos.olimpiada.ru
ip daddr 185.178.208.183 accept
# всош.цпм.рф
ip daddr 185.30.228.25 accept
# olympiads.ru
ip daddr 194.58.88.173 accept
# os.mos.ru, repo.os.mos.ru
ip daddr 37.230.149.17 accept
# marketplace.visualstudio.com
ip daddr 13.107.42.18 accept
# ms-vscode.gallerycdn.vsassets.io
ip daddr 68.232.34.200 accept
# ms-vscode.gallery.vsassets.io
ip daddr 13.107.6.175 accept
# az764295.vo.msecnd.net
ip daddr 152.199.19.160 accept
# it-help-school.ru
ip daddr 91.221.70.4 accept
}
}
Затем выполните команды для включения файрвола под root
# systemctl enable nftables # systemctl start nftables
Для отключения фильтрации выполните команды
# systemctl disable nftables # systemctl stop nftables
Настройка Windows 10 и Windows 11
В Windows 10 будем использовать стандартный файрвол Windows Defender ("Защитник Windows").
Для этого нужно создать powershell-скрипт следующего содержания.
# Устанавливаем policy для пакетов по умолчанию - Block
Set-NetFirewallProfile -DefaultInboundAction Block
Set-NetFirewallProfile -DefaultOutboundAction Block
# Разрешаем весь трафик для службы dnscache
New-NetFirewallRule -DisplayName "Olymp Allow dnscache service" -Direction Outbound -Action Allow -Service "dnscache"
New-NetFirewallRule -DisplayName "Olymp Allow dnscache service" -Direction Inbound -Action Allow -Service "dnscache"
# Открываем порт 53 для работы DNS
New-NetFirewallRule -DisplayName "Olymp Allow DNS Outbound" -Direction Outbound -Action Allow -Protocol UDP -RemotePort 53
New-NetFirewallRule -DisplayName "Olymp Allow DNS Inbound" -Direction Inbound -Action Allow -Protocol UDP -RemotePort 53
New-NetFirewallRule -DisplayName "Olymp Allow DNS Outbound TCP" -Direction Outbound -Action Allow -Protocol TCP -RemotePort 53
New-NetFirewallRule -DisplayName "Olymp Allow DNS Inbound TCP" -Direction Inbound -Action Allow -Protocol TCP -RemotePort 53
# Разрешаем трафик на localhost
New-NetFirewallRule -DisplayName "Olymp Allow Localhost Inbound" -Direction Inbound -Action Allow -RemoteAddress 127.0.0.1
New-NetFirewallRule -DisplayName "Olymp Allow Localhost Outbound" -Direction Outbound -Action Allow -RemoteAddress 127.0.0.1
# Разрешаем ICMP (ping)
New-NetFirewallRule -DisplayName "Olymp Allow ICMP Outbound" -Direction Outbound -Action Allow -Protocol ICMPv4
New-NetFirewallRule -DisplayName "Olymp Allow ICMP Inbound" -Direction Inbound -Action Allow -Protocol ICMPv4
# Разрешаетм доступ к локальной сети 10.0.0.0/8
New-NetFirewallRule -DisplayName "Olymp Allow Local Network" -Direction Outbound -Action Allow -RemoteAddress 10.0.0.0/8
New-NetFirewallRule -DisplayName "Olymp Allow Local Network" -Direction Inbound -Action Allow -RemoteAddress 10.0.0.0/8
# Разрешаем доступ к конкретным сайтам
New-NetFirewallRule -DisplayName "Olymp Allow school.mos.ru" -Direction Outbound -Action Allow -RemoteAddress 94.79.51.81,94.79.51.82,94.79.51.83
New-NetFirewallRule -DisplayName "Olymp Allow school.mos.ru" -Direction Inbound -Action Allow -RemoteAddress 94.79.51.81,94.79.51.82,94.79.51.83
New-NetFirewallRule -DisplayName "Olymp Allow login.mos.ru" -Direction Outbound -Action Allow -RemoteAddress 212.11.153.6
New-NetFirewallRule -DisplayName "Olymp Allow login.mos.ru" -Direction Inbound -Action Allow -RemoteAddress 212.11.153.6
New-NetFirewallRule -DisplayName "Olymp Allow vos.olimpiada.ru" -Direction Outbound -Action Allow -RemoteAddress 185.178.208.183
New-NetFirewallRule -DisplayName "Olymp Allow vos.olimpiada.ru" -Direction Inbound -Action Allow -RemoteAddress 185.178.208.183
New-NetFirewallRule -DisplayName "Olymp Allow vsosh.cpm.rf" -Direction Outbound -Action Allow -RemoteAddress 185.30.228.25
New-NetFirewallRule -DisplayName "Olymp Allow vsosh.cpm.rf" -Direction Inbound -Action Allow -RemoteAddress 185.30.228.25
New-NetFirewallRule -DisplayName "Olymp Allow olympiads.ru" -Direction Outbound -Action Allow -RemoteAddress 194.58.88.173
New-NetFirewallRule -DisplayName "Olymp Allow olympiads.ru" -Direction Inbound -Action Allow -RemoteAddress 194.58.88.173
New-NetFirewallRule -DisplayName "Olymp Allow mc.yandex.ru" -Direction Outbound -Action Allow -RemoteAddress 87.250.250.119,87.250.251.119,93.158.134.119,77.88.21.119
New-NetFirewallRule -DisplayName "Olymp Allow mc.yandex.ru" -Direction Inbound -Action Allow -RemoteAddress 87.250.250.119,87.250.251.119,93.158.134.119,77.88.21.119
New-NetFirewallRule -DisplayName "Olymp Allow marketplace.visualstudio.com" -Direction Outbound -Action Allow -RemoteAddress 13.107.42.18
New-NetFirewallRule -DisplayName "Olymp Allow marketplace.visualstudio.com" -Direction Inbound -Action Allow -RemoteAddress 13.107.42.18
New-NetFirewallRule -DisplayName "Olymp Allow ms-vscode.gallerycdn.vsassets.io" -Direction Outbound -Action Allow -RemoteAddress 68.232.34.200
New-NetFirewallRule -DisplayName "Olymp Allow ms-vscode.gallerycdn.vsassets.io" -Direction Inbound -Action Allow -RemoteAddress 68.232.34.200
New-NetFirewallRule -DisplayName "Olymp Allow ms-vscode.gallery.vsassets.io" -Direction Outbound -Action Allow -RemoteAddress 13.107.6.175
New-NetFirewallRule -DisplayName "Olymp Allow ms-vscode.gallery.vsassets.io" -Direction Inbound -Action Allow -RemoteAddress 13.107.6.175
New-NetFirewallRule -DisplayName "Olymp Allow az764295.vo.msecnd.net" -Direction Outbound -Action Allow -RemoteAddress 152.199.19.160
New-NetFirewallRule -DisplayName "Olymp Allow az764295.vo.msecnd.net" -Direction Inbound -Action Allow -RemoteAddress 152.199.19.160
New-NetFirewallRule -DisplayName "Olymp Allow it-help-school.ru" -Direction Outbound -Action Allow -RemoteAddress 91.221.70.4
New-NetFirewallRule -DisplayName "Olymp Allow it-help-school.ru" -Direction Inbound -Action Allow -RemoteAddress 91.221.70.4
Сохраните этот скрипт в файле с расширением ps1, например, block-internet.ps1.
Этот скрипт нужно запускать с правами администратора. Для этого нужно запустить PowerShell с правами администратора, например, найти в меню "Пуск" Windows PowerShell, сделать правый клик мышью и выбрать "Запуск от имени администратора". Затем в консоли PowerShell ввести полный путь и имя этого скрипта.
Можно создать ярлык, чтобы скрипт всегда запускался от администратора. Для этого нужно создать новый ярлык, например, на рабочем столе: правый клик мышью - Создать - Ярлык.
В поле "Укажите расположение объекта" нужно вписать (заменим "C:\users\student\block-internet.ps1" на правильный путь к скрипту).
powershell.exe -ExecutionPolicy Bypass -NoExit -File "C:\users\student\block-internet.ps1"
Затем откройте свойства ярлыка, нажмите "Дополнительно" и поставьте галку "Запуск от имени администратора".
Обратите внимание, что все создаваемые правила начинаются со слова Olymp. Благодаря этому можно отфильтровать только эти правила и для снятия ограничений удалить только правила, которые начинаются со слова Olymp. Для этого создайте и запустите следующий PowerShell-скрипт, который удаляет все установленные правила и правила для обработки пакетов "по умолчанию".
Set-NetFirewallProfile -DefaultInboundAction NotConfigured
Set-NetFirewallProfile -DefaultOutboundAction NotConfigured
Get-NetFirewallRule | Where-Object { $_.DisplayName -like "Olymp*" } | Remove-NetFirewallRule
Его также нужно запускать с правами администратора.