Заблокировать весь исходящий трафик для пользователя, использующего приложения Wine

1511
kktsuri

Добрый день,

Я использую много приложений WINE под Linux, которые работают просто отлично, но одну вещь, которую я специально ищу сейчас, - это заблокировать их доступ к Интернету (исходящий), за исключением очень немногих винных приложений.

Я обнаружил, что могу создать нового пользователя в системе и запретить весь исходящий трафик для интерфейса Ethernet с Iptables, а затем просто использовать этого пользователя всякий раз, когда я хочу запускать приложения WINE, которые я хочу заблокировать. Вот так:

iptables -I OUTPUT -o ethX -m owner --uid-owner UserB -j DROP 

Однако, ради этого примера, допустим, я хочу иметь одно приложение WINE, которое подключается к Интернету ... для простоты, давайте использовать Firefox в WINE (как пример).

Итак, я буду использовать UserA, у которого есть Интернет, чтобы запускать Firefox в WINE, и UserB, чтобы запускать любое другое приложение WINE и блокировать его.

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

И наконец, мой вопрос: позволяет ли WINE приложениям отправлять трафик самостоятельно? Как WINE работает в сети? Потому что, если приложение отправляет само по себе, то пакеты будут иметь пользовательский UUid, и он будет легко отброшен. Но если приложение использует что-то вроде ... wineserver или некоторого другого демона для связи, а затем демон отправляет фактический сетевой трафик ... который, очевидно, потерпит неудачу, потому что пакет не будет иметь UUID UserB.

Как я могу быть уверен? Большинство приложений, которые я хочу заблокировать, - это приложения, которым я не «доверяю» сама по себе, даже если они просто отправляют тривиальные данные, я просто параноик. Они молчат об этом, очевидно, поэтому я не могу легко контролировать это, насколько мне известно. Так что, если есть способ контролировать это и посмотреть, работает ли он (или простое подтверждение от того, кто знает), это было бы здорово.

Кто-нибудь знает, как WINE это делает? Или, если есть что-то еще, я должен сделать, чтобы заблокировать все исходящие приложения WINE на UserB от какого-либо исходящего доступа. Или достаточно просто блокировать все пакеты UserB?

Огромное спасибо!

ОБНОВИТЬ:

Похоже, что wineserver является отдельным для каждого WINEPREFIX, поэтому для тех, кто знает, что это такое, я считаю, что просто создавая разные WINEPREFIX для каждого из двух пользователей, один с Интернетом, а другой без, все проблемы должны быть решены ,

Я не уверен на 100%, блокирует ли он какой-либо путь к выходу, но этого должно быть достаточно, так как большинство приложений Windows даже не подозревают, что они работают на Liunx, так как же они могут выйти из него? Если только они не очень большие вредоносные вредоносные программы.

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

И просто создайте сценарий оболочки для запуска приложений для каждого пользователя. например, один для доступа в Интернет и один без.

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

4

1 ответ на вопрос

0
glapworth

Depending on which version of the kernel you have running on your box, you can take advantage of network namespaces. To launch a process with it's own empty network namespace use the unshare tool, e.g. unshare -n wine

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