права доступа на сеть/интерфейс

12
H
На сайте с 15.02.2010
Offline
105
772

Гугль не помог, может тут гуру подскажут...

Существует ли в Linux такое понятие, как права доступа на интерфейс?

Конкретная цель:

десктопная машина с CentOS, при запуске стартует OpenVPN-клиент и маршрут по дефолту перестраивается - идёт через недоверенную сеть в туннель. Хотелось бы сделать так, чтобы этим туннелем мог пользоваться только рут и еще один пользователь, а остальные (гости) ходили "штатным" образом (через прокси в той же сети, где сама машина). Права на машину полные, на прокси и внутреннюю сеть - никаких (только сетевые реквизиты).

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

В NetworkManager видел что-то типа "только для этого пользователя", но через него настроить не получилось (не жрёт key на в какую) и его пришлось erase...

M
На сайте с 16.09.2009
Offline
278
#1

Как-то через iptables метить пакеты по uid/gid - и затем делать для них с tc отдельные правила роутинга.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
VO
На сайте с 27.07.2008
Offline
149
#2

>

hubbiton:
при запуске стартует OpenVPN-клиент и

Может просто убрать запуск у остальных юзеров? То есть, чтобы подключение запускалось при логине у нужных пользователей.

H
На сайте с 15.02.2010
Offline
105
#3
myhand:
Как-то через iptables метить пакеты по uid/gid - и затем делать для них с tc отдельные правила роутинга.

Насколько я понял - это единственное идеологически правильное, но самое сложное решение.

Из беглого чтения манов iptables понятно: можно дропать пакеты от определённого юзера, но как строить маршруты в зависимости от UID - пока даже идеи нет :(

Непонятно главное: если одновременно залогинены оба - какая таблица маршрутизации будет работать? Разве их может быть две одновременно?

V(o)ViK:
Может просто убрать запуск у остальных юзеров? То есть, чтобы подключение запускалось при логине у нужных пользователей.

А он как служба стартует еще до логина.

И, далее, что получится, если залогинен "привелигированный" пользователь, для которого нужен туннель и временно зашёл гость (без выхода предыдущего пользователя). У гостя туннель будет доступен в таком случае?

Или может еще какие варианты есть?

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

VO
На сайте с 27.07.2008
Offline
149
#4
hubbiton:
А он как служба стартует еще до логина.

Ну так измените тип запуска :) или правила маршрутизации меняйте при логине нужных пользователей.

У Вас пользователи в систему локально заходят?

H
На сайте с 15.02.2010
Offline
105
#5

Тип запуска менять идеологически неправильно, имхо.

Если с локальными пользователями еще можно как-то разрулить (не без шансов сломать мозг), то как быть с системными? Хотелось бы весь системный фоновой трафик (ntp, обновления и пр.) тоже через туннель гнать...

V(o)ViK:
У Вас пользователи в систему локально заходят?

Да, только локально. Вход по сети перекрыт напрочь.

Тут сейчас пошаманил с iptables, правило

-A OUTPUT -m owner --uid-owner user -j DROP

даёт результат: перекрывает кислород пользователю user напрочь. Добавить туда адрес vpn-сервера тоже не вопрос, ес-но.

Вот теперь думаю, как будет вести себя система в этом случае... Тут надо глубоко понять идеологию, а с этим тяжко :(

Если я перекрою юзеру доступ к туннелю - установит ли она для него свои маршруты, как были до поднятия туннеля? При том, что в это же время всем остальным пользователям (в т.ч системным) будут доступны туннель и, соответстственно, default gateway совсем другой.

Разве могут существовать две соверешенно разные таблицы маршрутизации одновременно?

I0
На сайте с 31.07.2012
Offline
7
id0
#6

Сделайте алиас для сетевого интерфейса и направляйте через него не доверенных пользователей.

H
На сайте с 15.02.2010
Offline
105
#7

🙅

За "левый" айпишник в сети могут вздрючить

G
На сайте с 27.01.2012
Offline
20
#8

Отвечая на вопрос относительно нескольких таблиц — это возможно. Список таблиц указывается в файле /etc/iproute2/rt_tables, но это не особо важно.

Вы можете настроить iptables таким образом, чтобы до интерфейса доходили пакеты только определенных пользователей. Что-то вроде

iptables -A OUTPUT  -i ppp0 -p tcp -m owner --uid-owner supauser -j ACCEPT
H
На сайте с 15.02.2010
Offline
105
#9

Точно ведь, чего я парюсь...

Пусть туннель будет поднят постоянно, просто гостям к нему доступ запрещу iptables.

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

До кучи пойду погуглю, как защитить настройки браузеров от изменения... Хотя, наверное, в линуксах достаточно на их конфиги права 400 поставить...

M
На сайте с 16.09.2009
Offline
278
#10
geeque:
Вы можете настроить iptables таким образом, чтобы до интерфейса доходили пакеты только определенных пользователей. Что-то вроде
iptables -A OUTPUT  -i ppp0 -p tcp -m owner --uid-owner supauser -j ACCEPT

Нет. Даже близко не "вроде". Нужно, чтобы пакеты не просто "доходили" - а доходили именно туда, куда нужно. Для этого правилами iptables не обойтись: нужно на основе маркировки пакетов в подобных правилах - менять роутинг. Примерно как опиали выше #2.

hubbiton:
Пусть туннель будет поднят постоянно, просто гостям к нему доступ запрещу iptables.
Тем более, что они должны ходить в инет через корпоративную проксю, которую я им в браузере и пропишу заранее. Если и уберут прокси - то вообще ничего не будет работать, как и в штатной винде.

Если это вариант - то, конечно. Выражайтесь яснее в следующий раз. Чтобы люди не думали, что вам каждому пользователю требуется организовать полноценное соединение с интернет.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий