Зачем изобретать велосипед тогда, когда есть специализированные программы и дистрибутивы для наших задач, например: 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 | — запрещает все манипуляции с пакетами в указанном направлении. |
.
Что стало понятно:
ДНС на 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)
FNkey
15.10.2019 14:40Зачем городить такой огород, когда можно было запретить весь трафик наружу через NAT, пускать пользователей только на http/-s через прокси (тот же squid) и уже на прокси делать черные списки?
avk013 Автор
15.10.2019 14:47приготовление прокси требует дополнительных затрат по памяти и быстродействию того же железа и дисков, не скрою возможно я «не умею их правильно готовить», но тонкие настройки ACL нас пока не интересуют, подмена сертификата тоже, согласен что в нашем варианте просто топорная работа.
gecube
16.10.2019 08:21В большом энтерпрайзе проблема решена даже прозрачным прокси с подменой сертификата. Все рабочие машины введены в домен или аналогично и везде разлит свой внутренний корневой. Видел такую схему неоднократно. Работает.
На границе стоит какая-нибудь циска, Форти или CheckPoint, который и бдит за пользователя.
У Вас же походу какой-то маленький энтерпрайз, раз приходится изговна и палоксобирать схему.
Ещё очень интересно влияние правил на производительность. Почему не ipset? Почему не bpf? Говорят, что они значительно снижают нагрузку на cpu и уменьшают латентность при обработке пакетов.
Насчёт сертификата безопасности пассаж не понял. Т.е. микротики и тп-линки вкупе с центос Вы можете использовать, причем сертификатов у них нет и не одни быть, а коробку российского производства или от серьезного вендора позволить не можете? Очень странный подход, прямо скажу.
kvazimoda24
15.10.2019 20:07Как решаете вопрос посещения запрещённых сайтов с личных мобильных устройств сотрудников непользующихся фирменным Wi-Fi?
avk013 Автор
15.10.2019 20:32К примеру: как бороться со списыванием на коллоквиумах у студентов:)? Да, реально знаю случаи, когда ставили самодельные глушилки.
Мы отвечаем только за свой фронт работ, на остальное — подписываются бумаги в кадрах :) и относится к информационной безопасности и ответственным за это человеком, могу только рассказать про общее негодование части коллектива, когда в некоторых случаях, включают спецсредства, как результат перестают работать беспроводные клавиатуры, wifi и т.п. но повторюсь, конкретно эти мероприятия вне нашего влияния — каждый занимается своей работой.kvazimoda24
15.10.2019 21:32Я, конечно, не знаю в какой сфере трудится ваша компания, и вполне допускаю, что в некоторых случаях оправданы и глушилки, и запреты на любую стороннюю электронику на рабочем месте. Но так же сталкивался и с неоправданными перегибами со стороны руководства. Когда работа персонала зависит от количества клиентов, и если клиента нет, то у сотрудника практически нет работы, но руководство требовало и запретов доступа к некоторым сайтам, и установки на компьютеры клавиатурных логгеров… В результате, сотрудники сидели либо в телефонах прям на рабочем месте, либо, если руководство ещё и камеры мониторило, в туалете/раздевалке.
dinarv
16.10.2019 09:11а такой запрет вообще законен?
кому какое дело, чем пользуется человек на личном устройстве с индивидуальным интернет-каналом?gecube
16.10.2019 10:27Сдавать личные устройства связи на входе на предприятие ) ибо нефиг. Угроза ИБ. Я уж не говорю о том, если объект режимный в строгом смысле этого слова.
dinarv
16.10.2019 10:44ну про «сдавать» то понятно. но написано же про ограничение доступа в какие-то запрещенные ресурсы с личных устройств на рабочем месте.
avk013 Автор
16.10.2019 13:23кажется это больше юридический вопрос о договоренностях между работодателем и рабочим, условиях работы и правилах использования личных устройств
Minipyh
16.10.2019 09:08у меня около 20 pfSense в пограничниках с балансировкой каналов. Не было ещё ни одной задачи с которой бы он не справился. А в файервол через CLI ходил лишь единожды забыв создать правило заранее. Вы батенька чушь несёте.
avk013 Автор
16.10.2019 09:13дело в руках, согласен, если у меня десяток линуксовых серверов, с разными дистрибутивами, то как раз, разбавить их FreeBSD это та самая изюминка, после которой меняется мировоззрение.
MKMatriX
А почему это блокирует Opera VPN, плагины типа friGate и телеметрию от Майкрософт? Добавили их адреса в черный список?
avk013 Автор
с правильными текстовыми файлами это действительно блокирует указанные сервисы, показана схема, а не детальный рецепт
MKMatriX
Меня не интересуют блокировки, а лишь способы сохранения своего доступа. Понятно что в фирму с ограничениями я не пойду, но вдруг начальство что придумает. Резюме: для меня ничего фатального, админы не часто обновляют список адресов vpn.
avk013 Автор
Отдельный туннель для себя можно сделать, я дополнительно игрался с конкретным IP в цепочке но прямо сейчас сказать не могу, у нас этот канал для всех, а «не все» пользуются альтернативным :)