«Дайте интернет, но чтобы безопасно и что бы было вчера готово!»
В любой компании наступает момент, когда безопасность говорит: «Хватит». Хватит пускать пользователей в интернет с их рабочих станций, где лежит бухгалтерия, документы и доступы к базам.
Задача прилетела мега-классическая: нужно обеспечить доступ к внешним веб-ресурсам для 200 сотрудников, но изолировать этот процесс от внутренней сети. Вариантов было немного:
- Поставить каждому второй ПК (дорого, супер-тупо, стол как и бюджет, не резиновый).
- VDI (VDI на 200 персон ради браузера? Оверкилл).
- Обскурные решения которыми заполнены просторы интернетов.
- Terminal Server (RDS) + RemoteApp. Наш выбор.
Почему «по талонам»? Потому что Chrome — это уже давно не браузер. Это операционная система, которая преиодически показывает сайты. И если дать ей волю на терминальном сервере, она съест всю оперативку, закусит процессором и попросит добавки.
Архитектура: Строим «загон» для Хрома. Мы не стали изобретать велосипед и развернули классическую ферму на базе Windows Server 2022.
Connection Broker: Мозг операции, балансирует нагрузку.
Session Hosts: Рабочие лошадки, где, собственно, и крутится Chrome.
СХД: Профили пользователей (об этом ниже).
Спойлер
@Тут я хотел бы вставить скриншот из диспетчера серверов со списком хостов но ИБ строго сказала «А-та-та так делать!».@
Битва за ресурсы: Chrome vs RAM Главный враг терминального сервера — это современный веб. Один открытый YouTube в 4K может положить сессию целого отдела. Что мы сделали, чтобы сервер не умер в первый же день:
GPO для Chrome — наше всё. Мы использовали официальные ADMX-шаблоны от Google.
Отключение аппаратного ускорения. В виртуалке без vGPU оно только мешает, создавая лишнюю нагрузку на CPU.
Блокировщик рекламы (uBlock Origin). Это не вопрос комфорта, это вопрос выживания. Баннеры и трекеры жрут трафик и ресурсы процессора. Мы внедрили расширение принудительно через политики.
Управление вкладками. Расширения типа The Great Suspender помогают выгружать неактивные вкладки из памяти.
Боль с кэшем. Хранить профили локально на хостах в ферме нельзя — юзера каждый раз может кинуть на новый сервер. Roaming Profiles — медленно. Мы остановились FSLogix.
Тут же первая проблема: Кэш Хрома растет бесконечно. За месяц профиль может раздуться до 5–10 ГБ.
Быстрофикс который стал постоянным решением: Настроили политику очистки кэша при выходе или перенаправили папку кэша в temp, который чистится. «Интернет по талонам» не предполагает хранения истории мемов за пять лет.
Безопасность: RemoteApp создает иллюзию, что приложение работает локально. Но мы-то знаем, что юзверь находится внутри сервера. Чтобы любопытные пользователи не начали изучать файловую систему сервера через «Сохранить как…»:
Скрытие дисков: Через GPO скрыли диски C: и D: сервера.
AppLocker: Разрешен запуск только chrome.exe. Даже если они умудрятся скачать «super_game.exe», запустить они его не смогут.
Буфер обмена: Ограничили копирование файлов между сессией и локальным ПК, чтобы исключить утечку документов.
Факапы и выводы Конечно, без приключений не обошлось.
В первый день забыли настроить таймауты, и «висячие» сессии съели все лицензии. Настроили — радуемся.
Кто-то нашел сайт, который майнит крипту в браузере, и один хост ушел в 100% CPU. настроили аллертинг и заодно обновили black-list.
Итог: Ферма живет, 200 пользователей ходят в интернет, внутренняя сеть в безопасности. Нагрузка на техподдержку снизилась: если у юзера «глючит интернет», мы просто сбрасываем его сессию, а не чистим всякое на его компьютере. Хотя все же мне кажется что наиболее лучшим решением мог быть дополнительный слой защиты в виде разнообразные NGFW, HP Wolf Security, RBI и иже с ними, но это уже совсем другая история…
