The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Предотвращение запуска Wine любым пользователем
Данная заметка не является способом запрещения запуска Windows-приложений
из-под Wine, она служит лишь целью предотвращения запуска Wine любым
пользователем, который не желает случайно это сделать.

Простейший пример, связанный с безопасностью: известно, что крайне нежелательно
запускать Windows приложения из-под  пользователя root, ибо Wine в этом случае
имеет доступ ко всем ресурсам компьютера. Учитывая так же, что
Windows-приложения в Wine могут выполнять любые команды Unix, то можно
представить масштаб возможных проблем при запуске вредоносного ПО.

Решение крайне простое. В домашней директории пользователя достаточно создать
пустой файл ".wine" (без кавычек). В этом случае запуск Wine приведёт к ошибке:

   # wine stduviewer.exe

   wine: /root/.wine is not a directory

Никакие другие действия выполнять больше не нужно.
 
11.07.2013 , Автор: Artem S. Tashkinov
Ключи: wine, root, limit / Лицензия: CC-BY
Раздел:    Корень / Пользователю / Wine

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Аноним (-), 22:29, 11/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • –1 +/
    man wine
    WINEPREFIX
     
     
  • 2.19, Аноним (-), 19:07, 13/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Первую строку хоть осиль.
    Я понимаю, что никто не читает ничего кроме кода и цифр, но все таки
     

  • 1.2, demimurych (ok), 22:38, 11/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    спасибо.  
    поржал.

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

     
     
  • 2.11, konst (??), 20:51, 12/07/2013 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +1 +/
    > спасибо.
    > поржал.
    > Автор даю наколочку
    > почитать про права которые можно устанавливать. Особенно посмотреть в сторону прав на
    > выполнение,
    > и как их можно ставить для групп пользователей.

    Про права root'а почитайте.

     
     
  • 3.20, demimurych (ok), 09:14, 14/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Ога.
    Особенно про то как созданные пустой .wine остановит рута от заупка самого wine а
     
     
  • 4.21, konst (??), 01:35, 15/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Ога.
    > Особенно про то как созданные пустой .wine остановит рута от заупка самого
    > wine а

    Вы, видимо, новичок в linux. Просто опыта не хватает.
    На Ваш вопрос ответ: ДА. Остановит. А почему? - Вам лучше догадаться самому.

     
     
  • 5.22, konst (??), 01:39, 15/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    >> Ога.
    >> Особенно про то как созданные пустой .wine остановит рута от заупка самого
    >> wine а
    > Вы, видимо, новичок в linux. Просто опыта не хватает.
    > На Ваш вопрос ответ: ДА. Остановит. А почему? - Вам лучше догадаться
    > самому.

    PS. Ответ содержится в авторском небольшом тексте.

     
  • 2.13, mihalych (ok), 22:01, 12/07/2013 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > спасибо. поржал.

    Удобно ли копытами на клавиатуре печатать, а?

     
     
  • 3.50, Аноним (-), 16:24, 22/10/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    А то!
     

  • 1.3, daemontux (?), 09:28, 12/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    Может просто не ставить wine на боевые сервера и не давать пароль рута всем подряд?
     
     
  • 2.9, past (?), 12:16, 12/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    И не только на сервера!
    Самый верный способ предотвращения запуска... - снести вайн.
     
  • 2.17, konst (??), 03:30, 13/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Может просто не ставить wine на боевые сервера и не давать пароль
    > рута всем подряд?

    Лет 15-5 назад иногда приходилось ставить wine и на "боевые серверы" (ради некоей проги). Нынче все проще (слава Богу). Производители железок/драйверов/софта теперь учитывают и linux.

    А вот давать/не_давать пароль рута всем подряд - это личное демократическое дело. Не будем вмешивать сюда политику. :)


     
  • 2.29, Иван Иванович Иванов (?), 01:48, 18/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Может просто не ставить wine на боевые сервера и не давать пароль
    > рута всем подряд?

    На desktop у вас Windows, да? Всё ясно.

     
     
  • 3.38, Alan Cox (?), 16:34, 22/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • –1 +/
    Топор - лучшее средство от проблем!

    Описали бы лучше:

    "Предотвращение запуска компьютера любым пользователем"
    "Предотвращение запуска компьютера имея рутовый пароль"
    "Предотвращение запуска компьютера имея доступ к рубильнику на трансфрматорной подстанции и рутовый пароль"
    "Предотвращение запуска компьютера имея ГОЛОВУ"

     
     
  • 4.39, konst (ok), 03:05, 23/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Топор - лучшее средство от проблем!
    > Описали бы лучше:
    > "Предотвращение запуска компьютера любым пользователем"
    > "Предотвращение запуска компьютера имея рутовый пароль"
    > "Предотвращение запуска компьютера имея доступ к рубильнику на трансфрматорной подстанции
    > и рутовый пароль"
    > "Предотвращение запуска компьютера имея ГОЛОВУ"

    Описали бы лучше, как заставить комментаторов предварительно ВНИМАТЕЛЬНО прочитать сабж.
    (хотя бы первую строку)

     
     
  • 5.44, Alan Cox (?), 14:02, 29/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    А зачем пользователь случайно ставит WINE и не желает её случайно запускать?

    Ещё и случайно под рутом и слуайно на сервере!

    Или это случайный пользователь?


    на абсурдный совет - абсурдный комент

    А потом из-за случайных пользователей случайные перебои в работе серверов возникают.


    Спасибо за случайный совет :)

     

  • 1.4, Igor (??), 11:07, 12/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    Или что-то вроде такого:
    mv /usr/bin/wine /usr/bin/nowine ; chmod -x /usr/bin/nowine

     
     
  • 2.41, askh (ok), 00:41, 27/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    А зачем? Это не позволит достичь поставленных автором целей, и, вообще говоря, первое же обновление Wine вернёт его на место.
     

  • 1.5, qqq (??), 11:10, 12/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    Гы.
    А вот почти правильное решение:
    mount -o remount,noexec /home (ну или mount -u -o noexec /usr/home)
    chgrp wine /usr/bin/wine (chgrp wine /usr/local/bin/wine)
    chmod 550 /usr/bin/wine (chmod 550 /usr/local/bin/wine)

    перемонтирование /home с noexec - "защитит" от установки wine в домашний каталог

    Можно ещё добавить специальную группу для использования компиляторов.

     
     
  • 2.28, Злыдень (??), 01:47, 18/07/2013 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > Гы.
    > А вот почти правильное решение:
    > mount -o remount,noexec /home (ну или mount -u -o noexec /usr/home)
    > chgrp wine /usr/bin/wine (chgrp wine /usr/local/bin/wine)
    > chmod 550 /usr/bin/wine (chmod 550 /usr/local/bin/wine)
    > перемонтирование /home с noexec - "защитит" от установки wine в домашний каталог
    > Можно ещё добавить специальную группу для использования компиляторов.

    Откройте для себя LD_PRELOAD.

    СпИцИалисты по безопасности.

    Уволил бы вас сразу за такое "решение".

     
     
  • 3.35, Аноним (-), 21:06, 18/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    А по подробнее, что LD_PRELOAD может противопоставить noexec?
     
  • 3.36, Аноним (-), 21:17, 18/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    $ cd ~/tmp
    $ gcc -fPIC -c -o test.o -x c - <<EOF
    #include <stdio.h>
    void _init(void) { printf( "TEST\n" ); }
    EOF
    $ gcc test.o -shared -nostdlib -lgcc -o libtest.so
    $ mount | grep ~/tmp
    none on /home/x/tmp type tmpfs (rw,noexec,nosuid,nodev,size=2g,uid=1000,gid=1000,mode=0700)
    $ LD_PRELOAD=~/tmp/libtest.so uname
    ERROR: ld.so: object '/home/x/tmp/libtest.so' from LD_PRELOAD cannot be preloaded: ignored.
    Linux
    $ su -c "mount -o remount,exec /home/x/tmp"
    Password:
    $ mount | grep ~/tmp
    none on /home/x/tmp type tmpfs (rw,size=2g,uid=1000,gid=1000,mode=0700)
    $ LD_PRELOAD=~/tmp/libtest.so uname
    TEST
    Linux
     
     
  • 4.37, Иван Иванович Иванов (?), 14:21, 20/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Уговорили :)

    $ cd tmp
    $ wget http://www.win.tue.nl/~aeb/linux/hh/fixelf.c
    $ cp /usr/bin/bc /tmp
    $ gcc fixelf.c -o fixelf
    $ ./fixelf bc
    # mount -o remount,noexec /tmp
    $ mount | grep tmp
    tmpfs on /tmp type tmpfs (rw,noexec,nosuid,nodev)
    $ /lib/ld-linux.so.2 ./fixelf.out
    bc 1.06.95
    Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type 'warranty'.

     
     
  • 5.43, Аноним (-), 09:47, 29/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    В какой среде это надо выполнять? Apparmor или SELinux надо при этом отключать?
    У меня упрямо выдает:
    error while loading shared libraries
     
     
  • 6.48, Иван Иванович Иванов (?), 12:58, 01/08/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Default CentOS 6.4 i686, SeLinux=disabled.

    Не вижу смысла в нём на домашней машине - не хочу за непонятные плюсы терять производительность.

     
  • 2.30, XoRe (ok), 12:24, 18/07/2013 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Как это поможет от запуска рутом?
     

  • 1.6, qqq (??), 11:13, 12/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    Гы номер 2:
    пользователь потом сделает у себя в каталоге rm -f .wine и будет счастлив, даже без WINEPREFIX:
    Маленькая демонстрация:

    igorr:~>ls -ld QQQQ
    ----------  1 root  wheel  0 12 jul 11:12 QQQQ
    igorr:~>pwd
    /usr/home/igorr
    igorr:~>id
    uid=1001(igorr) gid=1001(igorr) groups=1001(igorr)
    igorr:~>rm -f QQQQ
    igorr:~>ls -ld QQQQ
    ls: QQQQ: No such file or directory

     
     
  • 2.7, qqq (??), 11:15, 12/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +2 +/
    А теперь нужно принести извинения: там в заметке сказано, что защита не от запуска wine, а "защита" от случайного запуска wineю
     

  • 1.8, Igor (??), 11:23, 12/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    Ну смотрите, по логике, если wine будет иметь имя, которое знаете только вы сами, то уже вероятность случайного запуска из-за внешних программ упадет в разы. Или нет?
     
     
  • 2.14, mihalych (ok), 22:11, 12/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Да, да. Согласен, давайте и rm переименуем. А то вдруг в батнике вендовом кто-то пропишет bash -c rm -rf /
     
  • 2.27, Злыдень (??), 01:46, 18/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    У меня wine как обработчик *.exe прописан ... ну?
     

  • 1.15, mihalych (ok), 22:20, 12/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    Имхо нужно патчить вайн, чтобы от рута не запускался. Раньше он и сам отваливался с предупреждением о том, что от рута так низзя. Сейчас вроде и от рута работает. А фокус с файликом - это костыль в чистом виде. Это можно легко обойти.
     
     
  • 2.16, konst (??), 02:48, 13/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Имхо нужно патчить вайн, чтобы от рута не запускался. Раньше он и
    > сам отваливался с предупреждением о том, что от рута так низзя.
    > Сейчас вроде и от рута работает. А фокус с файликом -
    > это костыль в чистом виде. Это можно легко обойти.

    Для desktop - очень даже нормальное решение. Сам я wine не пользую, но понимаю, что часто возникает ситуация, когда у тебя запущено несколько xterm и в одном из них ты под root! и выполняешь команду, которую под root давать не стоит.

    Предложенное решение - это нормальное решение для домашних раб.станций, которые юзуют wine, и не хотят, чтобы wine "вдруг" запустился из под root.

     
  • 2.26, Злыдень (??), 01:43, 18/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Ещё раз для особо одарённых - это не _защита_, а предотвращение.
     
  • 2.42, askh (ok), 00:52, 27/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > это костыль в чистом виде. Это можно легко обойти.

    Это, скорее, как предохранитель на оружии — защита от собственной ошибки или неосторожности, а не для ограничения доступа.

     

  • 1.18, Аноним (-), 14:20, 13/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    Статью писал хакирЪ. Решил задачу путем нае....лова программы :).
     
  • 1.23, catgirl (?), 20:56, 16/07/2013 [ответить] [﹢﹢﹢] [ · · · ]      [к модератору]
  • +/
    Хорошее решение. Необычное и простое. To hack в чистом виде.
     
  • 1.24, pavlinux (ok), 20:25, 17/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    alias wine='[ "$EUID" == 0 ] && false';
     
     
  • 2.25, konst (ok), 21:07, 17/07/2013 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > alias wine='[ "$EUID" == 0 ] && false';

    это конечно проще команды touch ~/.wine :)


     
     
  • 3.33, pavlinux (ok), 14:16, 18/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    >> alias wine='[ "$EUID" == 0 ] && false';
    > это конечно проще команды touch ~/.wine :)

    $ export HOME=/tmp
    и пиcец, нету больше вашей /root/.wine

    $ export EUID=666
    bash: EUID: доступная только на чтение переменная

    Более того, есть переменная WINEPREFIX, которая чудно меняется на что приспичит.

    $ export WINEPREFIX=$HOME/.wineshit
    $ wine

    опа, и нам пох на touch ~/.wine;
    ---

    Поэтому ваш костыль нужно дорабатывать

    export WINEPREFIX=$HOME/.wine && readonly WINEPREFIX HOME && touch $WINEPREFIX;

     
  • 3.46, Аноним (-), 23:52, 29/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Это логичнее. Мы не надеемся на то, что поведение Wine останется прежним по отношению к файлику .wine, а делаем ровно то, что подразумеваем: проверяем EUID и в зависимости от него принимаем решение.
    Кстати, что вы будете делать, если в системе не один рут и у них не одна и та же домашняя директория? А что если WINEPREFIX вдруг определен?


    P.S.
    Предложенное решение показывало верный ход мыслей, но оно не до конца верно. Правильным будет что-то такое:

    alias wine='[ "$EUID" == 0 ] || /usr/bin/wine';

     
  • 2.49, Аноним (-), 07:40, 08/08/2013 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > alias wine='[ "$EUID" == 0 ] && false';

    #tcsh - или еще какой шел и увы и ах...

     

  • 1.31, erera22 (ok), 13:48, 18/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  [] []     [к модератору]
  • +/
    В этом топике - троллинг все, начиная от touch ~/.wine до /root/.wine.

    В противном случае, все еще печальнее.

     
     
  • 2.34, pavlinux (ok), 18:24, 18/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > В этом топике - троллинг все

    Поздравляю, ты - тролль!

     
  • 2.40, Аноним (-), 22:47, 25/07/2013 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Это троллинг вайна ;-)
     

  • 1.45, лопстер (?), 14:31, 29/07/2013 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    виндовое решение какоето :)
     
  • 1.47, Омский линуксоид (ok), 00:19, 30/07/2013 [ответить] [﹢﹢﹢] [ · · · ]      [к модератору]
  • +/
    Можно ещё Apparmor покрутить.
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру