План статьи ====== Введение ====== В Российской Федерации действует ряд законов и постановлений, согласно которому операторы связи обязаны блокировать доступ к ряду ресурсов, нарушающих законы РФ и размещающие у себя пиратский контент, экстремистскую и сепаратистскую информацию. Для этого создан специальный регуляционный орган - Роскомнадзор. Этот государственный регулятор, помимо прочей своей деятельности, ведет реестр запрещенных сайтов на территории РФ. Каждый оператор связи обязан блокировать доступ к ресурсам из этого списка своими техническими средствами. В случае невыполнения такого предписания, операторам связи грозит немалый штраф или последующее лишении их лицензии. Для выполнения требований Роскомнадзора мы, команда MikBiLL, составили для вас небольшой план действий и программных средств, которые позволят вам автоматизировать процесс выгрузки, обработки и блокировки ресурсов, нарушающих законы РФ. ====== Настройка выгрузки РКН ====== У нас уже есть статья по настройке автоматизированной выгрузки данных из реестра запрещенных сайтов. Ознакомиться с ней вы можете здесь. [[mikbill:services:roskomnadzor|]] Повторюсь, что для работы этой выгрузки вам понадобится электронный ключ - eToken или другой, но с разрешенным его экспортом. Закрытые ключи не подходят, т.к. вам необходимо будет экспортировать ваш ключ с носителя, сконвертировать в другой контейнер и использовать его вместе с openssl на вашем сервере Linux. Также, согласно инструкции вам необходимо будет собрать openssl с поддержкой алгоритмов GOST. Как это сделать - описано в нашей инструкции здесь. [[http://wiki.mikbill.ru/mikbill/services/roskomnadzor?s[]=%D1%80%D0%BE%D1%81%D0%BA%D0%BE%D0%BC%D0%BD%D0%B0%D0%B4%D0%B7%D0%BE%D1%80#настройка_openssl_с_гостом_для_подписи_запросов|Настройка OpenSSL + GOST]] ====== 2) Блокировка по доменам. ====== Так как блокировка должна производиться путем запрещения доступа к определенным доменам, мы рекомендуем использовать для этого собственные ДНС сервера. В качестве производительного резолвера, мы рекомендуем Unbound DNS, который в три раза быстрее стандартного Bind и тратит куда меньше ресурсов на обработку запросов. Однако, вы можете использовать и любой другой ДНС сервер, по аналогии с алгоритмом, описанным далее. Базовая настройка Unbound описана здесь [[billing:nas_access_server:services:unbound_3xfast_dns|]] Свежую версию программы, а также официальную документацию вы можете посмотреть здесь [[https://www.unbound.net/|Официальный сайт Unbound]] 3) Настроим авторизацию по ключу между серваками с выгрузкой (биллингом) и днсами. Если у вас ДНС и биллинг на разных серверах, то вам понадобиться настроить авторизацию без пароля между сервером биллинга и этим ДНС, потому что файл выгрузки будет скачиваться туда с помощью rsync Если же у вас все на одном сервере, то пропустите этот шаг. Итак, приступим к настройке. 1) На сервере ДНС создадим ключ. $ ssh-keygen -t rsa Ключ паролем не защищаем, в этом нет необходимости! 2)Копируем ключ с ДНС сервера на биллинг ssh-copy-id -i ~/.ssh/id_rsa ЮЗЕР_ДЛЯ_RSYNC@IP биллинга В команде не забудьте верно указать ваши данные! 3) Коннектимся к биллингу с ДНСа с тем именем, что указали в предыдущем шаге. Не забывайте, что пользователи сами не создаются, поэтому вам необходимо создать его самому на обоих серверах перед генерацией ключа. ssh ЮЗЕР_ДЛЯ_RSYNC@IP_Билинга 4) Скриптами забираем и преобразовываем выгрузку в формат local-zone для unbound ====== Заглушка для запрещенных сайтов ====== Вместо страницы, которая находится в реестре запрещенных сайтов нужно показать пользователю уведомление, что это не просто сайт недоступен, а он заблокирован согласно требованию Роскомнадзора. Для этого нужна специальная страница-заглушка. Ее стоит настроить на nginx на 80 порт. Тогда трафик на запрещенные ресурсы не вызовет большой нагрузки на сервер с заглушкой. Итак, приступим. ===== Установка NGINX ===== Перед установкой рекомендуем подключить свежие репозитории для NGINX, взять которые можно из дистрибутива. для Centos yum install nginx для Debian apt-get install nginx ===== Начальная настройка NGINX ===== ==== Начальная настройка:Имя пользователя ==== Укажем правильно пользователя, от которого запускается nginx Centos - apache Debian - www-data ==== Начальная настройка:Потоки ==== Укажем количество потоков, в которое будет работать nginx Рекомендуется использовать от 2 потоков но не более, чем ядер CPU*2 Базовая настройка Nginx закончена. 6) Перехватим весь трафик 53 порта и отправим его на свои днсы чтобы абоненты не подменяли его 7) Выдадим абонентам свои днсы, которые будут блокировать список РКН показывая клиенту заглушку.