LINUX.ORG.RU
ФорумAdmin

Как сделать чтобы одни устройства в сети имели полный доступ по https, а другие по белому списку доменов?

 , , , ,


0

1

Всем привет!

В сети есть несколько устройств, есть доступ в Интернет. Нужно сделать, чтобы у одного устройства был доступ в Интернет без каких-либо ограничний, в то время как у остальных устройств доступ по https был лишь к белому списку доменов (несколько сайтов) и по расписанию (например 5 дней в неделю - доступ лишь к разрешенным сайтам, по выходным - полный доступ в Интернет), по протоколам отличным от https доступ также не ограничен. Роутер Keenetic Giga II. Не уверен, что можно на нем это всё настроить, поэтому рекомендации по роутеру тоже приветствуются (главное, чтобы настройка сего дела не была уж слишком муторной).

PS: еще момент, который мне не ясен. При формировании белого списка сайтов хотелось бы указывать домены, а не IP, поскольку IP у сайтов могут меняться, и не хотелось бы их постоянно править.



Последнее исправление: noutbuk_papicha (всего исправлений: 2)

Я юзаю dnsmask. Он выдает IP в призязке к MAC-адресу тех компьютеров что имеют права (IP<x.x.x.100). Остальные получают (IP>x.x.x.100). Все ходят через сквид.

anonymous
()

Технически-теоретически загоняешь при резолвинге домены в IPSetы и блокируешь кому не надо.

Фактически-практически ты обречен, ничего ты никому не заблокируешь. Административные проблемы техническими решениями, вот это все.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от Legioner

Сложность из-за расписания? В принципе от него готов отказаться. Вроде бы задача ходить в Интернет только на белый список сайтов довольно часто встречается, думал, что есть уже решение и для домашних роутеров (которое легко и просто настраивается). Сейчас у меня есть на проработку такой вариант: на роуетере Keenetic настроить 2 сегмента сети (для одного доступен весь Интернет, для второго - с ограничениями). В том сегменте, что с ограничеями, прописать свои DNS (заранее настрою OpenDNS с белым списком сайтов). Вроде бы должно сработать.

noutbuk_papicha
() автор топика

На Keenetic можно добавить сервис SkyDNS, он такое вроде бы умеет делать.

anonymous
()
Ответ на: комментарий от anonymous

Да, но только можно ли сделать так, чтобы трафик от одних устройств шел через SkyDNS (то есть доступ возможен только на «разрешенные» сайты), а от других не через него (обычный полный доступ в Интернет)

noutbuk_papicha
() автор топика
Ответ на: комментарий от noutbuk_papicha

Сложность из-за HTTPS с доменами. Несложно банить по IP. А вот чтобы банить домены, нужно отслеживать начало HTTPS-соединения, вытаскивать оттуда название домена, в общем для роутера это сложно, особенно если хочется сохранения адекватной скорости.

Через DNS можешь попробовать. Обходится, конечно, очень просто, но если тебе хватит, то без проблем.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

Да, но кажется нагуглил, что такое можно сделать в микротике:

«Создаем списки Для настройки фильтрации нам понадобятся минимум два списка: список доменов и список пользователей. С доменами понятно, это те сайты, к которым мы хотим запретить доступ или, наоборот, разрешить. Создаются такие списки просто: IP - Firewall - Address Lists где добавляем новый адрес, в поле Name вписываем имя листа, если это первая запись, либо выбираем его из выпадающего списка. В поле Address указываем IP-адрес или доменное имя ресурса, при указании доменного имени в список будут внесены все IP-адреса сайта, и они будут обновляться с периодичностью указанной в TTL домена.»

взял отсюда - https://interface31.ru/tech_it/2019/10/nastroyka-chernogo-i-belogo-spiskov-v-routerah-mikrotik.html

то есть, как я понимаю, достаточно просто указать домен, а уже роутер сам для него ip-адреса определит и пользователь это сам не настривает

noutbuk_papicha
() автор топика

Точно в вашем изложении задача не реализуема. Поэтому остается только предполагать, что можно сделать и насколько это будет соответствовать вашим ожиданиям. Дальше только теория, кинетика под рукой нет, поэтому по точным командам не подскажу.
1. Прибиваем ip хоста «которому можно всё и всегда» к мак адресу. Не знаю куда это писать, на отнопике /etc/ethers. Не путать с выдачей с dhcp!
2. firewall Разрешаем транзитные пакеты от хоста «которому можно всё и всегда»
3. firewall Разрешаем транзитные пакеты от всех в локалке на адреса назначения из «белого списка» на порт 443/tcp. Тут есть нюанс, я не знаю умеет ли кинетик при добавлении правила получать ip по имени хоста. Если нет то, перед добавлением получаем ip и его добавляем.
4. firewall Запрещаем транзитные пакеты от всех в локалке на порт 443/tcp.
5. Пункт 3 прописываем в крон. Периодичность зависит от кол-ва хостов. Если не убер огромный то раз в сутки.
6. Прописываем в cron задачи добавления/удаления правила из п.4 в зависимости от требуемого результата запретить/разрешить.

ЗЫ Вы явно пытаетесь реализовать полную фигню.

anc ★★★★★
()
Ответ на: комментарий от anc

В целом, то что вы описали, уже может работать. Функционал с расписаниями не особо нужен, слишком сложно и костыльно с ним, изкаробки нигде такого нет, так что нафиг. Или как вариант пропишу свои DNS.

noutbuk_papicha
() автор топика
Ответ на: комментарий от noutbuk_papicha

Расписание нужно однозначно. ip может меняться. А добавить как раз очень легко, в кинетике насколько я помню крон работает.

anc ★★★★★
()
Ответ на: комментарий от noutbuk_papicha

Ну это ваше решение обходится вагоном и маленькой тележкой вариантов. Т.е. запрет для полных даунов или пожилых людей. А с учетом вашего расписания посмею предположить, что ум у пользователей очень даже живинький. Хотя если цель топика: развитие подрастающего поколения, то «сойдет для сельской местности».

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

Да, в кинетике нужно будет, но выше я писал, что вроде как микротик такое сам умеет (то есть просто домен добавляешь в список, а он уже сам определяет/обновляет IP-адреса). Не уверен, что правильно понял, что это так работает, но вроде бы так

noutbuk_papicha
() автор топика
Ответ на: комментарий от noutbuk_papicha

Да, вы всё правильно поняли.

anc ★★★★★
()
Ответ на: комментарий от anc

Не будем сюда пользователей приплетать. В задаче я про них не писал, и думать о них не нужно (в т.ч. называть «полными даунами»)

noutbuk_papicha
() автор топика
Ответ на: комментарий от noutbuk_papicha

Нет. В первую очередь думать нужно как раз о тех против кого это направлено.
Тут как и золото хранилищами. Если вы хотите заныкать слиток золота в Сахаре, то самое надежное просто прикопать его, а не строить вокруг него форт нокс.

anc ★★★★★
()
Ответ на: комментарий от noutbuk_papicha

не. тем более с sky-DNS вообще халява

anonymous
()
Ответ на: комментарий от anc

В первую очередь думать нужно как раз о тех против кого это направлен

у меня почти лет 10 висело в школе решение из 1 поста (пока нас на ростелеком не загнали).

школьники не вломали…

:)

anonymous
()

действительно squid лучшее решение:
не надо привязываться к мак-ip адресам, пароль логин, и всё, проще администрировать не нужно по офису носится
он научался https разбирать и блочить (я с ним 2004 году возился)
минусы:
нужна отдельная машинка через которую весь интернет пойдёт, в современных реалях это большой поток,
ещё одна единая точка отказа,
ну и не все програмы могут через прокси ходить, можно конечно сделать прозрачный прокси, но тут мы придём опять мак-ip адресам индивидуальной настройке рабочего места.
плюсы появится статистика кто что куда, но нужна ли она, я на руководящих, без камер и сквида знал что не хотел знать

s-warus ★★★
()
Последнее исправление: s-warus (всего исправлений: 1)
Ответ на: комментарий от s-warus

из-за HTTPS прозрачная прокся хреновый вариант

anonymous
()

Присоединяюсь к тем, кто рекомендует squid.

1) На router-е или firewall-е запретить всем устройствам доступ в интернет, кроме белого списка и прокси сервера на squid.
2) Всем пользователям, которых нужно ограничить прописать прокси-сервер в настройках, чтобы был доступ к «разрешенному» интернету.
3) Настроить «SSL Bumping» как на squid-сервере, так и прописать сертификаты на клиентах для того, чтобы можно было регулировать https-траффик.

beka
()
Ответ на: комментарий от beka

P.S. постановка задачи в топике - «запретить все, разрешить список» - мне очень нравится. Но в последнее время, все чаще вижу задачу - «запретить список, разрешить все» - Знаю несколько мест (стартапы в Кремниевая долине) где в рабочее время iptables тупо «режет» подсеть фейсбука.

beka
()
Ответ на: комментарий от beka

без подмены сертификатов ни как (ответ знаю, но всё равно, как-то влом, будет сертификаты на планшеты-телефоны тащить), думал всё таки имя домена можно вытащить, ведь виртуал хосты apache и nginx как-то до расшифровки понимают какой куда тянуть

s-warus ★★★
()
Последнее исправление: s-warus (всего исправлений: 1)
Ответ на: комментарий от beka

P.S. постановка задачи в топике - «запретить все, разрешить список» - мне очень нравится.

Вы точно полностью прочитали задачу в топике?

anc ★★★★★
()
Ответ на: комментарий от anc

Вы точно полностью прочитали задачу в топике?

«5 дней в неделю - доступ лишь к разрешенным сайтам».

Понятно, что «deny all, allow whitelist» действует только 5 дней в неделю, кроном в остальное время меняем конфигурацию squid-а...

beka
()
Ответ на: комментарий от s-warus

думал всё таки имя домена можно вытащить, ведь виртуал хосты apache и nginx как-то до расшифровки понимают какой куда тянуть

Сервер понимает куда идет запрос через механизм SNI, в котором доменное имя идет до шифра. Если не ошибаюсь squid можно настроить чтобы он принимал решения о блокировке именно по SNI (т.е. без подмены), но старый способ с сертификатамы по мне надежнее

beka
()
Последнее исправление: beka (всего исправлений: 1)
Ответ на: комментарий от beka

«5 дней в неделю - доступ лишь к разрешенным сайтам».

точки в конце нет, дочитайте это предложение до конца.

кроном в остальное время меняем конфигурацию squid-а...

Просто пять! Легких путей не ищем. Похоже сквид вы если и конфигурировали, то исключительно методом копипасты.

anc ★★★★★
()
Ответ на: комментарий от beka

спасибо что вчитались в мой неграмотный вопрос, поняли и ответили.

s-warus ★★★
()
Последнее исправление: s-warus (всего исправлений: 1)
Ответ на: комментарий от anc

Просто пять! Легких путей не ищем. Похоже сквид вы если и конфигурировали, то исключительно методом копипасты.

sed-ом deny all заменить на allow all и перезапустить сквид.

это же не винда с реестром?

s-warus ★★★
()
Последнее исправление: s-warus (всего исправлений: 1)
Ответ на: комментарий от s-warus

очевидно, anc имел в виду, что сам squid поддерживает «time based» правила и использовать их правильнее, чем то что я предложил (по крону перезапустить squid)

beka
()
Ответ на: комментарий от beka

да, про 5 дней в неделю всё правильно поняли. осталось мне только научиться работать со сквидом (никогда с ним деола не имел, даже не знаю что это)

noutbuk_papicha
() автор топика
Ответ на: комментарий от noutbuk_papicha

про сквид у лиссяры www.lissyara.su много толковой информации, несмотря на то, что там bsd

anonymous
()

Запустить sniproxy с примерно таким файлом настроек:

user daemon

pidfile /var/run/sniproxy.pid

error_log {
    syslog daemon
    priority notice
}

listen 0.0.0.0 60443 {
    protocol tls
    table https_hosts

    access_log {
        filename /var/log/sniproxy/https_access.log
        priority notice
    }
}

table https_hosts {
    ^(.+\.)?linux\.org\.ru$ *:443
    ^(.+\.)?opennet\.ru$ *:443
}

на маршрутизаторе соединения на порт 443 перенаправить на порт 60443 компьютера с запущенным sniproxy, после этого по https будут доступны только linux.org.ru и opennet.ru

No
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.