Блокировка интернета при проведении ВсОШ в Москве: различия между версиями

Материал из IT в школе
Перейти к навигацииПерейти к поиску
(Добавил online.olimpiada.ru в список хостов.)
(Добавил в скрипт для МОС-12 reject на все остальные соединения на порт 80 и 443.)
Строка 1: Строка 1:




Строка 196: Строка 194:
         ip daddr 91.221.70.4 accept
         ip daddr 91.221.70.4 accept


        # Это правило делает reject на все остальные соединения
        # на порт 80 (http) и 443 (https), в результате
        # браузер не будет ждать загрузки недоступных ресурсов
        tcp dport 80 reject
        tcp dport 443 reject
     }
     }
}
}

Версия 19:23, 7 октября 2024


При проведении муниципального этапа ВсОШ по информатике в Москве места проведения должны фильтровать доступ в интернет по указанным правилам. Фильтрация может быть осуществлена на сетевом оборудовании (роутера), но при отсутствии роутера фильтрация осуществляется на каждом компьютере.

Эта статья описывает необходимые настройки фильтрации интернета при проведении муниципального этапов всероссийской олимпиады школьников в Москве. В статье описаны настройки для систем МОС-12 и Windows. Фильтрацию можно реализовать на МОС-10 используя правила из этой статьи и инструкцию Блокировка интернета в МОС при помощи iptables.

Список необходимых хостов из этой статьи может дополняться и меняться. Перед муниципальным этапом необходимо использовать актуальный список.

До проведения муниципального этапа рекомендуется провести проверку фильтрации при проведении любого школьного этапа ВсОШ, а также при проведении школьного этапа ВсОШ по информатике в Москве.

После настройки фильтрации необходимо проверить, что данные сайты открываются в браузере, другие сайты (например, ya.ru, vk.com, gmail.com, web.telegram.org) - не открываются.

Список необходимых разрешённых хостов

На каждом компьютере должен быть открыт доступ:

  • Для всех соединений, находящихся в состоянии 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.151.58 Необходим для авторизации в МЭШ. Сам сайт login.mos.ru открывать не нужно, он делает редирект на mos.ru
online.olimpiada.ru 46.235.186.69

46.235.188.68

78.41.110.69

93.93.88.23

Резервная тестирующая система
vos.olimpiada.ru 185.178.208.183 Сайт ВсОШ в Москве
всош.цпм.рф 185.30.228.25 Сайт ВсОШ в Москве (xn--b1ayi3a.xn--l1afu.xn--p1ai)
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 в статье Блокировка интернета в МОС-12 при помощи nftables

В МОС-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.151.58 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

        # online.olimpiada.ru
        ip daddr 46.235.186.69 accept
        ip daddr 46.235.188.68 accept
        ip daddr 78.41.110.69 accept
        ip daddr 93.93.88.23 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

        # Это правило делает reject на все остальные соединения
        # на порт 80 (http) и 443 (https), в результате
        # браузер не будет ждать загрузки недоступных ресурсов
        tcp dport 80 reject
        tcp dport 443 reject
    }
}

Затем выполните команды для включения файрвола под root

# systemctl enable nftables
# systemctl start nftables

Для отключения фильтрации выполните команды

# systemctl disable nftables
# systemctl stop nftables

Настройка Windows 10 и Windows 11

В Windows 10 будем использовать стандартный файрвол 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.151.58
New-NetFirewallRule -DisplayName "Olymp Allow login.mos.ru" -Direction Inbound -Action Allow -RemoteAddress 212.11.151.58
New-NetFirewallRule -DisplayName "Olymp Allow online.olimpiada.ru" -Direction Outbound -Action Allow -RemoteAddress 46.235.186.69,46.235.188.68,78.41.110.69,93.93.88.23
New-NetFirewallRule -DisplayName "Olymp Allow online.olimpiada.ru" -Direction Inbound -Action Allow -RemoteAddress 46.235.186.69,46.235.188.68,78.41.110.69,93.93.88.23
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" на правильный путь к скрипту). Параметр -NoExit можно убрать, тогда окно PowerShell будет закрываться после исполнения скрипта.

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

Исполнение этого скрипта снимает все установленные ограничения. Его также нужно запускать с правами администратора, рекомендуется создать на рабочем столе два ярлыка для запуска под администратором - ддя блокировки и разблокировки интернета.