pf OpenBSD: отключите доступ к сети для данного пользователя, за исключением ssh.

Файл является inode с метаданными, среди которых список, указателей туда, где можно найти данные.

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

Все те ссылки, те имена файлов указывают на тот же файл. Нет того, который является оригиналом и другими, которые являются ссылками. Они - все точки доступа в тот же файл (тот же inode) в дереве каталогов. Когда Вы получаете размер файла (lstat системный вызов), Вы получаете информацию (что метаданные упомянули выше), сохраненный в inode, это не имеет значения, какое имя файла, которые связываются, Вы используете для обращения к тому файлу.

В отличие от этого, символьные ссылки являются другим файлом (другой inode), чье содержание является путем к конечному файлу. Как любой другой файл, те символьные ссылки должны быть связаны с каталогом (должен иметь имя), таким образом, можно получить доступ к ним. У Вас может также быть несколько ссылок на символьные ссылки, или другими словами, символьным ссылкам можно дать несколько имен (в одном или нескольких каталогах).

$ touch a
$ ln a b
$ ln -s a c
$ ln c d
$ ls -li [a-d]
10486707 -rw-r--r-- 2 stephane stephane 0 Aug 27 17:05 a
10486707 -rw-r--r-- 2 stephane stephane 0 Aug 27 17:05 b
10502404 lrwxrwxrwx 2 stephane stephane 1 Aug 27 17:05 c -> a
10502404 lrwxrwxrwx 2 stephane stephane 1 Aug 27 17:05 d -> a

Выше номера документа 10486707 регулярный файл. Две записи в текущем каталоге (один с именем a, один с именем b) свяжитесь с ним. Поскольку число каналов равняется 2, мы знаем, что нет никакого другого названия того файла в текущем каталоге или любом другом каталоге. Номер документа 10502404 является другим файлом, на этот раз символьной ссылки типа, связанной дважды с текущим каталогом. Его содержание (цель) является относительным путем "a".

Обратите внимание, что, если бы 10502404 был связан с другим каталогом, чем текущий, он обычно указывал бы на другой файл в зависимости от того, как к нему получили доступ.

$ mkdir 1 2
$ echo foo > 1/a
$ echo bar > 2/a
$ ln -s a 1/b
$ ln 1/b 2/b
$ ls -lia 1 2
1:
total 92
10608644 drwxr-xr-x   2 stephane stephane  4096 Aug 27 17:26 ./
10485761 drwxrwxr-x 443 stephane stephane 81920 Aug 27 17:26 ../
10504186 -rw-r--r--   1 stephane stephane     4 Aug 27 17:24 a
10539259 lrwxrwxrwx   2 stephane stephane     1 Aug 27 17:26 b -> a

2:
total 92
10608674 drwxr-xr-x   2 stephane stephane  4096 Aug 27 17:26 ./
10485761 drwxrwxr-x 443 stephane stephane 81920 Aug 27 17:26 ../
10539044 -rw-r--r--   1 stephane stephane     4 Aug 27 17:24 a
10539259 lrwxrwxrwx   2 stephane stephane     1 Aug 27 17:26 b -> a
$ cat 1/b
foo
$ cat 2/b
bar

Файлы не имеют никаких имен, связанных с ними кроме в каталогах, которые связывают их. Место, занятое их именами, является записями в тех каталогах, оно составляется в размере файла / использование диска каталогов.

Вы заметите, что системный вызов для удаления файла unlink. Таким образом, Вы не удаляете файлы, Вы удаляете связь с ними с каталогами, в которых на них ссылаются. После того, как несвязанный с последним каталогом, который имел запись в данный файл, тот файл затем уничтожается (как долго, поскольку никакому процессу не открыли его).

4
03.03.2015, 19:19
3 ответа

Я думаю, что вы ищете AUTHPF.

http://www.openbsd.org/faq/pf/authpf.html

authpf (8) - это пользовательская оболочка для аутентификации шлюзов. Аутентифицирующая шлюз похож на обычный сетевой шлюз (A.k.a. Маршрутизатор), за исключением того, что пользователи должны сначала аутентифицироваться на воротах, прежде чем он позволит пройти через него. Когда оболочка пользователя установлена ​​в / usr / sbin / authpf (то есть вместо установки оболочки пользователя в ksh (1), csh (1), и т. Д.), и пользовательских журналов в использовании ssh, authpf сделает необходимые изменения в Active PF (4) Начинка, так что трафик пользователя передается через фильтр и / или переведен с использованием сетевого адреса перевода или перенаправления. Как только пользователь выходит из системы или их сеанс отключен, AUTHPF удалит любые правила, загруженные для пользователя, и убить какие-либо состоятельные соединения, которые пользователь открыт. Из-за этого способность пользователя проходить трафик через шлюз только во время того, как пользователь остается открытой сессией SSH.

# macros
wifi_if = "wi0"
ext_if  = "fxp0"
dns_servers = "{ 10.0.1.56, 10.0.2.56 }"

table <authpf_users> persist

# filter
block drop all

pass out quick on $ext_if inet proto { tcp, udp, icmp } \
   from { $wifi_if:network, $ext_if }

pass in quick on $wifi_if inet proto tcp \
   from $wifi_if:network to $wifi_if port ssh

pass in quick on $wifi_if inet proto { tcp, udp } \
   from <authpf_users> to $dns_servers port domain

anchor "authpf/*" in on $wifi_if
3
27.01.2020, 20:57

Я не могу дать вам общий план А потом, надеюсь, кто-то другой может заполнить детали.

Похоже, вам нужно будет делать следующее:

  1. Создать Chroot
  2. как-то разрешить только один интерфейс для него.
  3. Затем посмотрите на очередь вспомогательную очередь для этого интерфейса или запишите ваши правила PF на этом интерфейсе.

Честно говоря, я думаю, что будет легче с FreeBSD тюрьмы, но у вас, вероятно, не имеет этого варианта.

Это может быть не большая часть ответа, но, надеюсь, он укажет вас в правильном направлении. Я бы опубликовал это как комментарий, но я думаю, что это слишком долго.

0
27.01.2020, 20:57

Брандмауэры обычно смотрят на сетевые пакеты. Они могут видеть, откуда приходят пакеты, но разве это как-то не раскрыто пакетной самоанализацией, они не знают, кто несет ответственность за эти пакеты.

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

0
27.01.2020, 20:57

Теги

Похожие вопросы