Блокировка интернета при проведении ВсОШ в Москве: различия между версиями
Dkirienko (обсуждение | вклад) (Настройка для Windows) |
Dkirienko (обсуждение | вклад) (→Настройка Windows 10 и Windows 11: Правка скриптов настройки для Windows) |
||
Строка 1: | Строка 1: | ||
Строка 148: | Строка 149: | ||
В Windows 10 будем использовать стандартный файрвол Windows Defender ("Защитник Windows"). | В Windows 10 будем использовать стандартный файрвол Windows Defender ("Защитник Windows"). | ||
Для этого нужно создать | Для этого нужно создать powershell-скрипт следующего содержания.<syntaxhighlight lang="powershell"> | ||
# | # Устанавливаем policy для пакетов по умолчанию - Block | ||
New-NetFirewallRule -DisplayName "Olymp Allow | Set-NetFirewallProfile -DefaultInboundAction Block | ||
New-NetFirewallRule -DisplayName "Olymp Allow | 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 - | 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 - | 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 - | 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 - | 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 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 | 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 Outbound" -Direction Outbound -Action Allow -Protocol ICMPv4 | ||
New-NetFirewallRule -DisplayName "Olymp Allow ICMP Inbound" -Direction Inbound -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 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 Local Network" -Direction Inbound -Action Allow -RemoteAddress 10.0.0.0/8 | ||
# | # Разрешаем доступ к конкретным сайтам | ||
New-NetFirewallRule -DisplayName "Olymp Allow | New-NetFirewallRule -DisplayName "Olymp Allow olympiads.ru" -Direction Outbound -Action Allow -RemoteAddress 194.58.88.173 | ||
New-NetFirewallRule -DisplayName "Olymp Allow | New-NetFirewallRule -DisplayName "Olymp Allow olympiads.ru" -Direction Inbound -Action Allow -RemoteAddress 194.58.88.173 | ||
New-NetFirewallRule -DisplayName "Olymp Allow marketplace.visualstudio.com" -Direction Outbound -Action Allow -RemoteAddress 13.107.42.18 | |||
New-NetFirewallRule -DisplayName "Olymp Allow | New-NetFirewallRule -DisplayName "Olymp Allow marketplace.visualstudio.com" -Direction Inbound -Action Allow -RemoteAddress 13.107.42.18 | ||
New-NetFirewallRule -DisplayName "Olymp Allow | |||
</syntaxhighlight>Сохраните этот скрипт в файле с расширением ps1, например, '''block-internet.ps1''', запустите его под администратором. | </syntaxhighlight>Сохраните этот скрипт в файле с расширением ps1, например, '''block-internet.ps1''', запустите его под администратором. | ||
Обратите внимание, что все создаваемые правила начинаются со слова Olymp. Благодаря этому можно отфильтровать только эти правила и для снятия ограничений удалить только правила, которые начинаются со слова Olymp. Для этого создайте и запустите следующий PowerShell-скрипт.<syntaxhighlight lang="powershell"> | Обратите внимание, что все создаваемые правила начинаются со слова Olymp. Благодаря этому можно отфильтровать только эти правила и для снятия ограничений удалить только правила, которые начинаются со слова Olymp. Для этого создайте и запустите следующий PowerShell-скрипт.<syntaxhighlight lang="powershell"> | ||
Set-NetFirewallProfile -DefaultInboundAction NotConfigured | |||
Set-NetFirewallProfile -DefaultOutboundAction NotConfigured | |||
Get-NetFirewallRule | Where-Object { $_.DisplayName -like "Olymp*" } | Remove-NetFirewallRule | Get-NetFirewallRule | Where-Object { $_.DisplayName -like "Olymp*" } | Remove-NetFirewallRule | ||
</syntaxhighlight> | </syntaxhighlight> |
Версия 15:51, 4 октября 2024
Эта статья описывает необходимые настройки фильтрации интернета при проведении школьного и муниципального этапов всероссийской олимпиады школьников в Москве, если такая фильтрация осуществляется на каждом компьютере при помощи файрвола на каждом компьютере. В статье описаны настройки для систем МОС-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 |
Необходим для работы тестирующей системы МЭШ и "Магазина приложений" МОС |
olympiads.ru | 194.58.88.173 | Сайт городской предметно-методической комиссии ВсОШ по информатике |
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
# olympiads.ru
ip daddr 194.58.88.173 accept
# Репозитории МОС для возможности установки пакетов
# os.mos.ru, repo.os.mos.ru
ip daddr 37.230.149.17 accept
# school.mos.ru
ip daddr 94.79.51.81 accept
ip daddr 94.79.51.82 accept
ip daddr 94.79.51.83 accept
# Магазин расширений для vscode
# 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 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 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
Сохраните этот скрипт в файле с расширением ps1, например, block-internet.ps1, запустите его под администратором. Обратите внимание, что все создаваемые правила начинаются со слова Olymp. Благодаря этому можно отфильтровать только эти правила и для снятия ограничений удалить только правила, которые начинаются со слова Olymp. Для этого создайте и запустите следующий PowerShell-скрипт.
Set-NetFirewallProfile -DefaultInboundAction NotConfigured
Set-NetFirewallProfile -DefaultOutboundAction NotConfigured
Get-NetFirewallRule | Where-Object { $_.DisplayName -like "Olymp*" } | Remove-NetFirewallRule