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

Материал из IT в школе
Перейти к навигацииПерейти к поиску
Основная статья
(Начало статьи - вводная информация.)
 
(Основная статья)
Строка 1: Строка 1:


Типичной задачей при проведении олимпиад, тестирований, экзаменов и т.д. может быть ограничение доступа в интернет к одному или нескольким сайтам. Рассмотрим решение этой задачи с использованием iptables - стандартных для Linux правил обработки сетевых пакетов.
Типичной задачей при проведении олимпиад, тестирований, экзаменов и т.д. может быть ограничение доступа в интернет к одному или нескольким сайтам. Рассмотрим решение этой задачи с использованием iptables - стандартных для Linux правил обработки сетевых пакетов.


Достоинства использования iptables на рабочих станциях:
Достоинства использования iptables на рабочих станциях:  
 
*Готовое решение, не требует установки дополнительного ПО.
*Не требует наличия маршрутизатора, прокси-сервера и т.д, может быть реализовано в любом компьютерном классе.
 
Недостатки использования iptables: 
 
*Фильтрация производится на каждом компьютере, поэтому требуется настройка каждого компьютера (но может быть выполнена скриптами с использованием ssh).
*Фильтрация производится по IP-адресу, поэтому если разрешается доступ к какому-либо сайту, то будет открыт и доступ ко всем сайтам на том же IP-адресе.
*Если у сайта изменился IP-адрес, то необходимо обновить правило фильтрации.
 
===Настройка блокировки интернета===
Мы рассмотрим настройку iptables при помощи системы настройки [https://www.altlinux.org/Etcnet etcnet]. По умолчанию в М ОС сеть настраивается при помощи etcnet. Файлы настройки сети находятся в каталоге /etc/net.
 
Прежде всего необходимо включить файрвол в файле  /etc/net/ifaces/default/options. Необходимо изменить значение параметра CONFIG_FW на yes:
CONFIG_FW=yes                                                                                                                                                              
После этого необходимо отредактировать файлы из каталога /etc/net/ifaces/default/fw/iptables/filter. В этих файлах задаются правила для фильтрации входящих пакетов (INPUT) и исходящих пакетов (OUTPUT), а также для пересылаемых пакетов (FORWARD).
 
Цепочка FORWARD понадобится для настройки фильтрации на сетевых шлюзах. Если компьютер используется в качестве сетевого шлюза, то проходящие через него пакеты обрабатываются в цепочке FORWARD, и используя эту цепочку можно настроить фильтрацию трафика, например, для отдельного компьютерного класса на шлюзе, через который проходят эти пакеты, но настройках межсетевых шлюзов не является предметом этой статьи. Поэтому здесь мы ограничимся только цепочками INPUT и OUTPUT.
 
Допустим, мы хотим применить следующие правила.
 
*Ограничить доступ к сети интернет только одним сайтом, например, olympiads.ru
*Также необходимо обеспечить работу службы DNS, чтобы браузер и система могли определить IP-адрес данного сайта. DNS использует порт 53.
*Снаружи оставим доступ к данному компьютеру по SSH, чтобы сохранить возможность удалённого администрироваться. SSH использует порт 22.
*Также оставим возможность использования протокола ICMP для работы ping, например, чтобы можно было "пинговать" наш компьютер.
 
Определим адрес сайта olympiads.ru при помощи команды host:
# host olympiads.ru
olympiads.ru has address 194.58.88.173
olympiads.ru mail is handled by 10 mf1.nic.ru.
Запишем в файл  '''/etc/net/ifaces/default/fw/iptables/filter/INPUT''' следующий текст:
-P DROP
-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-p tcp --dport 22 -j ACCEPT
-p udp --dport 22 -j ACCEPT
-p icmp -j ACCEPT
Здесь первая строка "-P DROP" указывает политику обработки пакетов "по умолчанию" - входящие пакеты будут сброшены. Затем идёт набор правил, заканчивающихся действием "-j ACCEPT". Пакеты, удовлетворяющие этим правилам, будут приняты. Во второй строчке задаётся правило для принятия всех пакетов уже установленных соединений. В третьей и четвёртой строках - правила для входящих пакетов, отправленных по протоколам tcp и udp (опции -p tcp и -p udp) на порт 22 (опция --dport 22 задаёт порт назначения (destination) пакета). Пятая строка разрешает пакеты по протоколу icmp, то есть ping-запросы.
 
Запишем в файл  '''/etc/net/ifaces/default/fw/iptables/filter/OUTPUT''' следующий текст:
-P DROP
-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-d 194.58.88.173 -j ACCEPT
-p tcp --dport 53 -j ACCEPT
-p udp --dport 53 -j ACCEPT
Здесь всё аналогично, в третьей строке мы разрешаем все исходящие пакеты на адрес 194.58.88.173. При необходимости открыть доступ к другим адресам добавьте аналогичные строчки. Можно также открыть адрес к некоторой сети, например, так -d 10.0.0.0/8 откроет доступ к группе локальных IP-адресов. В строках 4 и 5 откроем соединения на исходящие порты 53 для того, чтобы работала служба DNS.
 
Для того, чтобы изменения вступили в силу, нужно перезагрузить компьютер или перезапустить поддержку сети:
# systemctl restart network
Если настройка выполняется удалённо, то может быть полезен скрипт, который выполняет все указанные выше действия. Слово "END" в этом скрипте - это указатель на конец выводимого текста, оно не будет записано в данные файлы.
#!/bin/bash
# Исправляем файл /etc/net/ifaces/default/options
sed 's/^CONFIG_FW=.*/CONFIG_FW=yes/' -i /etc/net/ifaces/default/options
# Записываем настройки в цепочку INPUT
cat << END > /etc/net/ifaces/default/fw/iptables/filter/INPUT
-P DROP
-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-p tcp --dport 22 -j ACCEPT
-p udp --dport 22 -j ACCEPT
-p icmp -j ACCEPT
END
 
# Записываем настройки в цепочку OUTPUT
cat << END > /etc/net/ifaces/default/fw/iptables/filter/OUTPUT
-P DROP
-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-d 194.58.88.173 -j ACCEPT
-p tcp --dport 53 -j ACCEPT
-p udp --dport 53 -j ACCEPT
END
# Перезапускаем сеть
systemctl restart network


* Готовое решение, не требует установки дополнительного ПО.
=== Отключение блокировки интернета ===
* Не требует наличия маршрутизатора, прокси-сервера и т.д, может быть реализовано в любом компьютерном классе.
Чтобы отключить блокировку, можно выполнить одно из двух действий.


Недостатки использования iptables:
Первый способ. Записать в файл /etc/net/ifaces/default/options параметр CONFIG_FW=no


* Фильтрация производится на каждом компьютере, поэтому требуется настройка каждого компьютера (но может быть выполнена скриптами с использованием ssh).
Можно сделать командой
* Фильтрация производится по IP-адресу, поэтому если разрешается доступ к какому-либо сайту, то будет открыт и доступ ко всем сайтам на том же IP-адресе.
sed 's/^CONFIG_FW=.*/CONFIG_FW=no/' -i /etc/net/ifaces/default/options
* Если у сайта изменился IP-адрес, то необходимо обновить правило фильтрации.
Тогда у вас сохранятся файлы с цепочками INPUT и OUTPUT, и вы можете не меняя конфигурацию iptables просто включать или выключать работу iptables, меняя параметр CONFIG_FW в указанном файле.


Второй способ. Не отключать фильтрацию как таковую, а просто очистить цепочки с правилами. Можно сделать командами
echo -n > /etc/net/ifaces/default/fw/iptables/filter/INPUT
echo -n > /etc/net/ifaces/default/fw/iptables/filter/OUTPUT
В любом случае нужно перезапустить сеть:
systemctl restart network
[[Категория:МОС]]
[[Категория:МОС]]

Навигация