Актуальность блокировки посещений запрещенных ресурсов затрагивает любого админа, которому могут официально предъявить невыполнение закона или распоряжения соответствующих органов.



Зачем изобретать велосипед тогда, когда есть специализированные программы и дистрибутивы для наших задач, например: Zeroshell, pfSense, ClearOS.

Еще один вопрос оказался у начальства: А есть ли у используемого продукта сертификат безопасности нашего государства?

У нас был опыт по работе с перечисленными дистрибутивами:

  • Zeroshell — разработчики даже подарили на 2 года лицензию, но оказалось что интересующий дистрибутив нелогично для нас выполнял критическую для нас функцию;
  • pfSense — уважение и почет, одновременно скучно, привыкание к командной строке файрвола FreeBSD и не достаточно удобно для нас (думаю дело привычки, но это оказалось не «тем путем»);
  • ClearOS — на нашем железе оказалось очень медленно, до серьезного тестирования не смогли дойти, вот и зачем такие тяжелые интерфейсы?
  • Ideco SELECTA. Про продукт «Айдеко» отдельный разговор, интересный продукт, но по политическим соображениям не для нас, а еще хочется «укусить» их по поводу лицензии на тот же линукс, Roundcube и т.п. С чего они взяли, что «напилив» интерфейс в Python и отобрав права суперпользователя они могут продавать законченный продукт составленный из разработанных и доработанных модулей интернет сообщества распространяемых по GPL&etc.

Понимаю, что сейчас в мою сторону посыпятся негативные возгласы с требованиями детально обосновать свои субъективные ощущения, но хочу сказать что этот узел сети также является балансировщиком трафика на 4 внешних канала к сети Интернет, причем у каждого канала есть свои особенности. Еще краеугольным камнем стала необходимость работать одному из нескольких сетевых интерфейсов в разных адресных пространствах, и я готов признать, что применять везде где надо и не надо VLANы я не готов. В пользовании есть устройства типа TP-Link TL-R480T+ — ведут себя не идеально, в общем со своими нюансами. Эту часть на Linux получилось вменяемо настроить благодаря оф.сайту Ubuntu IP-Балансировка: объединяем несколько интернет-каналов в один. Причем каждый из каналов может «упасть» в любой момент, как и подняться. Если интересует скрипт, который работает на данный момент (а это стоит отдельной публикации) — пишите в комментариях.

Рассматриваемое решение не претендует на уникальность, но хочется задать вопрос: «А зачем на предприятии приспосабливаться под сторонние сомнительные продукты с серьезными аппаратными требованиями когда можно рассмотреть альтернативный вариант?».

Если в РФ есть список Роскомнадзора, в Украине — приложение к Решению Совета НацБезопасности (напр. вот), то на местах руководители тоже не спят. Например, нам был передан список запрещенных сайтов, по мнению руководства ухудшающих производительность труда на рабочем месте.

Общаясь с коллегами на других предприятиях, на которых по умолчанию запрещены все сайты и только по запросу с разрешения начальника можно получить доступ к конкретному сайту, уважительно улыбнувшись, подумав и «покурив над проблемой» пришло понимание того, что жизнь все-таки хороша и мы начали свой поиск.

Имея возможность не только аналитически посмотреть, что пишут в «книгах домохозяек» про фильтрацию трафика, но и посмотреть что происходит на каналах разным провайдеров мы подметили следующие рецепты (любые скрины немного обрезаны, прошу понять просить):
Провайдер 1 — не заморачивается и навязывает собственные ДНС сервера и прозрачный прокси-сервер. Ну что?.. зато у нас есть доступ туда куда надо (если нам это надо :))
Провайдер 2 — считает что его верхний провайдер должен об этом думать, техподдержка верхнего провайдера даже призналась почему я не могу открыть необходимый мне не запрещенный сайт. Я думаю что картинка вас развеселит :)



Как оказалось, они имена запрещенных сайтов переводят в айпи адреса и блокируют именно IP (не беспокоит их то, что на этом IP адресе может размещаться и 20 сайтов).
Провайдер 3 — пропускает трафик туда, но обратно по маршруту его не пускает.
Провайдер 4 — запрещает все манипуляции с пакетами в указанном направлении.
А что делать с ВПН (браузеру Opera уважение) и плагинами для браузеров? Играясь по-началу с узловым Mikrotik у нас даже появился ресурсоемкий рецепт на L7, от которого в последствии пришлось отказаться (запрещенных названий может быть и побольше, печально становится когда кроме своих прямых обязанностей по маршрутам, на 3х десятках выражений загрузка процессора PPC460GT уходит в 100%).

.

Что стало понятно:
ДНС на 127.0.0.1 абсолютно не панацея, современные версии браузеров таки позволяют обходить подобные траблы. Ограничить всех пользователей урезанными правами нельзя, и нельзя забывать об огромном количестве альтернативных ДНС. Интернет не статичен, и кроме новых ДНС адресов, запрещенные сайты покупают новые адреса, изменяют домены верхнего уровня, могут добавить/удалить символ в своем адресе. Но все же имеет право жить что-то типа:

ip route add blackhole 1.2.3.4

Вполне действенным было бы получение списка IP адресов из списка запрещенных сайтов, но по указанным выше соображениям мы перешли к соображениям о Iptables. Существовал уже живой балансировщик на CentOS Linux release 7.5.1804.

Интернет у пользователя должен быть быстрым, а Браузер не должен ждать полминуты, заключая что данная страница не доступна. После долгих поисков мы пришли к такой модели:
Файл 1 -> /script/denied_host, список запрещенных названий:

test.test
blablabla.bubu
torrent
porno

Файл 2 -> /script/denied_range, список запрещенных адресных пространств и адресов:

192.168.111.0/24
241.242.0.0/16

Файл-скрипт 3 -> ipt.sh, выполняющий работу с ipables:

# считываем полезную информацию из перечней файлов
HOSTS=`cat /script/denied_host | grep -v '^#'`
RANGE=`cat /script/denied_range | grep -v '^#'`
echo "Stopping firewall and allowing everyone..."
# сбрасываем все настройки iptables, разрешая то что не запрещено
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
#решаем обновить информацию о маршрутах (особенность нашей архитектуры)
sudo sh rout.sh
# циклически обрабатывая каждую строку файла применяем правило блокировки строки
for i in $HOSTS; do
sudo iptables -I FORWARD -m string --string $i --algo bm --from 1 --to 600 -p tcp -j REJECT --reject-with tcp-reset;
sudo iptables -I FORWARD -m string --string $i --algo bm --from 1 --to 600 -p udp -j DROP;
done
# циклически обрабатывая каждую строку файла применяем правило блокировки адреса
for i in $RANGE; do
sudo iptables -I FORWARD -p UDP -d $i -j DROP;
sudo iptables -I FORWARD -p TCP  -d $i -j REJECT --reject-with tcp-reset;
done

Применение sudo обусловлено тем, что у нас есть небольшой хак для управления через WEB интерфейс, но как показал опыт использования такой модели сроком более года, то WEB не так уж и нужен. После внедрения было желание перечень сайтов завести в БД и т.п. Количество заблокированных хостов более 250 + десяток адресных пространств. Действительно есть проблема при переходе на сайт по https соединению, как и системного администратора у меня есть претензии к браузерам :), но это частные случаи, большинство срабатываний к отсутствию доступа к ресурсу всё таки на нашей стороне, так же успешно блокируем Opera VPN, плагины типа friGate и телеметрию от Майкрософт.

Комментарии (18)


  1. MKMatriX
    15.10.2019 14:34

    А почему это блокирует Opera VPN, плагины типа friGate и телеметрию от Майкрософт? Добавили их адреса в черный список?


    1. avk013 Автор
      15.10.2019 14:39

      с правильными текстовыми файлами это действительно блокирует указанные сервисы, показана схема, а не детальный рецепт


      1. MKMatriX
        15.10.2019 14:44

        Меня не интересуют блокировки, а лишь способы сохранения своего доступа. Понятно что в фирму с ограничениями я не пойду, но вдруг начальство что придумает. Резюме: для меня ничего фатального, админы не часто обновляют список адресов vpn.


        1. avk013 Автор
          15.10.2019 14:55

          Отдельный туннель для себя можно сделать, я дополнительно игрался с конкретным IP в цепочке но прямо сейчас сказать не могу, у нас этот канал для всех, а «не все» пользуются альтернативным :)


  1. FNkey
    15.10.2019 14:40

    Зачем городить такой огород, когда можно было запретить весь трафик наружу через NAT, пускать пользователей только на http/-s через прокси (тот же squid) и уже на прокси делать черные списки?


    1. avk013 Автор
      15.10.2019 14:47

      приготовление прокси требует дополнительных затрат по памяти и быстродействию того же железа и дисков, не скрою возможно я «не умею их правильно готовить», но тонкие настройки ACL нас пока не интересуют, подмена сертификата тоже, согласен что в нашем варианте просто топорная работа.


      1. gecube
        16.10.2019 08:21

        В большом энтерпрайзе проблема решена даже прозрачным прокси с подменой сертификата. Все рабочие машины введены в домен или аналогично и везде разлит свой внутренний корневой. Видел такую схему неоднократно. Работает.
        На границе стоит какая-нибудь циска, Форти или CheckPoint, который и бдит за пользователя.
        У Вас же походу какой-то маленький энтерпрайз, раз приходится из говна и палок собирать схему.


        Ещё очень интересно влияние правил на производительность. Почему не ipset? Почему не bpf? Говорят, что они значительно снижают нагрузку на cpu и уменьшают латентность при обработке пакетов.


        Насчёт сертификата безопасности пассаж не понял. Т.е. микротики и тп-линки вкупе с центос Вы можете использовать, причем сертификатов у них нет и не одни быть, а коробку российского производства или от серьезного вендора позволить не можете? Очень странный подход, прямо скажу.


  1. kvazimoda24
    15.10.2019 20:07

    Как решаете вопрос посещения запрещённых сайтов с личных мобильных устройств сотрудников непользующихся фирменным Wi-Fi?


    1. avk013 Автор
      15.10.2019 20:32

      К примеру: как бороться со списыванием на коллоквиумах у студентов:)? Да, реально знаю случаи, когда ставили самодельные глушилки.
      Мы отвечаем только за свой фронт работ, на остальное — подписываются бумаги в кадрах :) и относится к информационной безопасности и ответственным за это человеком, могу только рассказать про общее негодование части коллектива, когда в некоторых случаях, включают спецсредства, как результат перестают работать беспроводные клавиатуры, wifi и т.п. но повторюсь, конкретно эти мероприятия вне нашего влияния — каждый занимается своей работой.


      1. kvazimoda24
        15.10.2019 21:32

        Я, конечно, не знаю в какой сфере трудится ваша компания, и вполне допускаю, что в некоторых случаях оправданы и глушилки, и запреты на любую стороннюю электронику на рабочем месте. Но так же сталкивался и с неоправданными перегибами со стороны руководства. Когда работа персонала зависит от количества клиентов, и если клиента нет, то у сотрудника практически нет работы, но руководство требовало и запретов доступа к некоторым сайтам, и установки на компьютеры клавиатурных логгеров… В результате, сотрудники сидели либо в телефонах прям на рабочем месте, либо, если руководство ещё и камеры мониторило, в туалете/раздевалке.


    1. dinarv
      16.10.2019 09:11

      а такой запрет вообще законен?
      кому какое дело, чем пользуется человек на личном устройстве с индивидуальным интернет-каналом?


      1. gecube
        16.10.2019 10:27

        Сдавать личные устройства связи на входе на предприятие ) ибо нефиг. Угроза ИБ. Я уж не говорю о том, если объект режимный в строгом смысле этого слова.


        1. dinarv
          16.10.2019 10:44

          ну про «сдавать» то понятно. но написано же про ограничение доступа в какие-то запрещенные ресурсы с личных устройств на рабочем месте.


      1. avk013 Автор
        16.10.2019 13:23

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


  1. Tibor128
    16.10.2019 07:41
    +1

    поздравляю Карл, Вы только что изобрели прокси


    1. avk013 Автор
      16.10.2019 09:24

      «Завтра Мы начинаем жить по новому» — стратегическое решение. «Сделай этакое, но чтобы работало и уже завтра» — будни говнокода.


  1. Minipyh
    16.10.2019 09:08

    у меня около 20 pfSense в пограничниках с балансировкой каналов. Не было ещё ни одной задачи с которой бы он не справился. А в файервол через CLI ходил лишь единожды забыв создать правило заранее. Вы батенька чушь несёте.


    1. avk013 Автор
      16.10.2019 09:13

      дело в руках, согласен, если у меня десяток линуксовых серверов, с разными дистрибутивами, то как раз, разбавить их FreeBSD это та самая изюминка, после которой меняется мировоззрение.