LINUX.ORG.RU

Пользователь без доступа в интернет

 


3

1

Моя задача: заблокировать программе в wine доступ в интернет.
Было решено сделать это через iptables для пользователя. Но я столкнулся с проблемами из-за неполных мануалов.
Инструкция
Создаём группу пользователей без интернета: «group_no_inet»

sudo groupadd group_no_inet

Имя пользователя: «user_no_inet»

Опции:

  • без домашнего каталога
  • оболочка командной строки bash
sudo useradd user_no_inet -M -g group_no_inet -s /bin/bash

Даём пользователю пароль:

sudo passwd user_no_inet

Блокировка интернета для группы:

sudo iptables -I OUTPUT 1 -m owner --gid-owner group_no_inet -j DROP

Сохранение правила:

iptables-persistent save

Запуск нужной программы (для теста):

sg group_no_inet firefox

Запуск нужной программы через Wine:

sg group_no_inet команда 

Конец инструкции

Здесь меня смущает:

  1. Команда
sudo iptables -I OUTPUT 1 -m owner --gid-owner group_no_inet -j DROP

в другом месте видел такую запись:

sudo iptables -A OUTPUT -p all -m owner --uid-owner user_no_inet -j DROP

Что из этого правильно? 2. Команда

sg group_no_inet firefox

Что такое «sg»? Терминал отвечает:

Использование: sg группа [[-c] команда]

Но что это значит? И здесь запуск программы осуществляется от группы, а не от пользователя. Блокировалась через iptables тоже группа, возникает вопрос - а зачем тогда создавать пользователя? Я только вчера начал разбираться с пользователями в линукс. И вообще команда

sg group_no_inet firefox

просит пароль, а я не пойму, что за пароль?


Команда

sudo iptables -I OUTPUT 1 -m owner --gid-owner group_no_inet -j DROP

в другом месте видел такую запись:

sudo iptables -A OUTPUT -p all -m owner --uid-owner user_no_inet -j DROP

Что из этого правильно?

Как я понимаю обе записи правильны, первая для всех пользователей группы, вторая для конкретного пользователя без учёта группы.

torvn77 ★★★★★
()
SG(1)                                                                                                                         User Commands                                                                                                                        SG(1)

NAME
       sg - execute command as different group ID

SYNOPSIS
       sg [-] [group [-c ] command]

DESCRIPTION
       The sg command works similar to newgrp but accepts a command. The command will be executed with the /bin/sh shell. With most shells you may run sg from, you need to enclose multi-word commands in quotes. Another difference between newgrp and sg is that some
       shells treat newgrp specially, replacing themselves with a new instance of a shell that newgrp creates. This doesn't happen with sg, so upon exit from a sg command you are returned to your previous group ID.

CONFIGURATION
       The following configuration variables in /etc/login.defs change the behavior of this tool:

       SYSLOG_SG_ENAB (boolean)
           Enable "syslog" logging of sg activity.

FILES
       /etc/passwd
           User account information.

       /etc/shadow
           Secure user account information.

       /etc/group
           Group account information.

       /etc/gshadow
           Secure group account information.

SEE ALSO
       id(1), login(1), newgrp(1), su(1), gpasswd(1), group(5), gshadow(5).
colok
()

Рекомендую воспользоваться firejail, чтобы не только доступ в интернет запретить, но и полноценная песочница.

anonymous
()
13 мая 2021 г.
Ответ на: комментарий от anonymous

Чтобы каждый раз как там обнаруживается уязвимость «эскалация привелегий», программа могла не только в интернет выйти, но и от рута поработать.

anonymous
()

Проще использовать sandbox. firejail --net=none выполняет задачу на ура. За одно можно и в другом ограничить софтину, если хочется (например сделать ей «виртуальный» хомяк без доступа к настоящему).

CrX ★★★★★
()

Очень жестко: запретить на уровне ядра пользователю создавать любые сетевые сокеты.

Настройки ядра Linux+Grsecurity https://en.m.wikibooks.org/wiki/Grsecurity/Appendix/Grsecurity_and_PaX_Configuration_Options#Deny_any_sockets_to_group

CONFIG_GRKERNSEC_SOCKET=y CONFIG_GRKERNSEC_SOCKET_ALL=y CONFIG_GRKERNSEC_SOCKET_ALL_GID=12345

Создаем группу для запрета сетевых соединений

groupadd -g 12345 no_net

Добавляем пользователя в группу для запрета сетевых соединений

usermod -a -G no_net vasya

anonymous
()

просит пароль, а я не пойму, что за пароль

Пароль группы, устаавливается через gpasswd

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