LINUX.ORG.RU

Повышение безопасности с помощью многоэкземплярности директорий

 , , подключаемые модули


0

0
Если вы заинтересованы в защите от несанкционированного доступа к совместно используемым директориям (например, /tmp или /var/tmp), которые доступны на запись "всему миру", вам могут помочь подключаемые модули аутентификации Linux (PAM). При входе пользователей в систему модуль pam_namespace создаёт отдельное пространство имён. Это разделение выполняется на уровне операционной системы Linux, в результате пользователи оказываются защищены от нескольких типов атак. Эта статья предназначена для системных администраторов Linux. В ней показано, как с помощью PAM подключить механизм пространств имён.

>>> Подробности

★★★

Проверено: Shaman007 ()
Гм. А зачем это?

niels:~$ ls -la /tmp/ | grep X0
-r--r--r-- 1 root root 11 2008-05-14 10:24 .X0-lock
niels:~$ LANG=C rm /tmp/.X0-lock
rm: remove write-protected regular file `/tmp/.X0-lock'? y
rm: cannot remove `/tmp/.X0-lock': Operation not permitted
niels:~$ echo 123 > /tmp/test.test
niels:~$ cat /tmp/test.test
123
niels:~$ chmod 600 /tmp/test.test
niels:~$ sudo chown root.root /tmp/test.test
niels:~$ LANG=C cat /tmp/test.test
cat: /tmp/test.test: Permission denied

Я что-то пропустил в этой жизни?
Alan_Steel ★★
()
Ответ на: комментарий от Alan_Steel
Пропустил, в школе недоучился.

Операции "echo", "chmod", "chown" разнесены по времени. Если бы они выполнялись в одной транзакции, то и проблемы бы не было.

И ещё не учитываешь, что это ТЫ знаешь, что нужно сделать chmod, а ДРУГИЕ пользователи могут и не знать.

ximeric
()
подскажите где почитать про то как chroot к ssh прикрутить - входишь по ssh и попадаешь в свой chroot
anonymous
()
Ответ на: комментарий от Alan_Steel
Ну вот php, например, у многих хостеров скидывает по умолчанию сессии в /tmp в виде sess_<SID>. Т.е. любой пользователь может легко узнать чужой sid. И chmod не спасет :)
Chumka ★★★
()
Ответ на: комментарий от ximeric
Про школу аргумент мимо кассы.

Про разнесение по времени - никто не мешал мне создать пустой файл, сделать chmod, а уж потом писать туда что хочу.

Про пользователей... Давно последний раз писал ручками в /tmp? Мне всегда казалось, что туда пишут преимущественно программы. А там уже остаётся на откуп конкретного автора, что и как он туда пишет. У меня сейчас в /tmp нет ни одного файла, открытого на запись кому попало. Так что имхо особой проблемы нет.

Alan_Steel ★★
()
Ответ на: комментарий от Alan_Steel
> niels:~$ chmod 600 /tmp/test.test

Вот это Вы и пропустили. Точнее, не учитываете, что при создании временных файлов, почему-то, правилом хорошего тона считается оставлять права доступа на файл "какие получатся". Да и умаск отдельно взятые кретины меняют на что попало... :(

Sabitov
()
Ответ на: комментарий от Sabitov
У меня сейчас в /tmp 43 файла. Все они открыты на запись только владельцу. Есть несколько .lock файлов, с pid'ами внутри, они открыты всем на чтение, что логично. ЧЯДНТ?
Alan_Steel ★★
()
Ответ на: комментарий от anonymous
Ну, например, перебрав в скрипте домены и sidы залогиниться на какой-нибудь форум, а если сессия окажется админской, то вообще хорошо :)
Chumka ★★★
()
Ответ на: комментарий от robot12
> Мдя .. опять идею вынесли из Plan9 :) в котором для КАЖДОГО процесса свой namespace :)

Этож наоборот хорошо. Если постепенный переход в сторону Plan 9, с сохранением работоспособности софта и дальше будет - все от этого только выиграют.

skwish ★★
()
Ответ на: комментарий от Chumka
> Ну, например, перебрав в скрипте домены и sidы залогиниться на какой-нибудь форум ...

А можно с этого места поподробнее? Вот я захожу на сервак к своему хостеру и вижу кучу файлов типа sess_<SID> в /tmp. Как мне залогиниться на "какой-нибудь" форум? :)

anonymous
()
Ответ на: комментарий от adarovsky
>Чем не устраивает починка файла /etc/passwd? Там можно любой шелл задавать, в том числе и chroot :)

Можно Howto для тупых ???
anonymous
()
Ответ на: комментарий от Alan_Steel
>У меня сейчас в /tmp 43 файла. Все они открыты на запись только владельцу. Есть несколько .lock файлов, с pid'ами внутри, они открыты всем на чтение, что логично. ЧЯДНТ?

Ну значит вы молодец, можете взять с полки пирожок. А мы, простые люди, пожалуй воспользуемся этим нововведением.

Laz ★★★★★
()
Ответ на: комментарий от Chumka
>Ну, например, перебрав в скрипте домены и sidы залогиниться на какой-нибудь форум, а если сессия окажется админской, то вообще хорошо :)


Apache запущен для каждого домена под его uid:gid + многоэкземплярность.
пробуйте-пробуйте перебрать в скрипте домены и sidы :-)
Plazmid
()
Ответ на: комментарий от anonymous
1. SIDы знаете
2. Узнаете список сайтов/доменов на сервере. Цель атаки знаете.
3. Находите среди них допустим phpBB.
4. В post запросе поочередно подставляете все sid'ы

Chumka ★★★
()
Ответ на: комментарий от Alan_Steel
> Про разнесение по времени - никто не мешал мне создать пустой файл, сделать chmod, а уж потом писать туда что хочу.

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

> Давно последний раз писал ручками в /tmp?

Да, приходится периодически писАть в /tmp руками. И не всегда вспоминаешь о защите, особенно второпях. Если работают скрипты, то всегда использую mktemp.

> А там уже остаётся на откуп конкретного автора, что и как он туда пишет.

Вот именно. Ещё раз говорю - учитывай человеческий фактор, нет идеальных людей.

ximeric
()
Ответ на: комментарий от Plazmid
>Apache запущен для каждого домена под его uid:gid + многоэкземплярность

Это далеко не так. Апач у многих (самых-самых популярных %) работает от пользователя apache или www. Да и роли это не играет.

anonymous
()
Ответ на: комментарий от anonymous
>Apache запущен для каждого домена под его uid:gid + многоэкземплярность

Это далеко не так. Апач у многих (самых-самых популярных %) работает от пользователя apache или www. Да и роли это не играет.

Chumka ★★★
()
Ответ на: комментарий от ximeric
> На месте создаваемого файла может быть чужая символическая ссылка

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

Но ладно, согласен. Пусть будет. В любом случае лучше перебдеть, чем недобдеть ;)

Alan_Steel ★★
()
А в Слаке это работает?
dm1024 ★★★
()
Ответ на: комментарий от anonymous
Слишком у Вас много вопросов %) Это подозрительно, решили стать хакером.

Можно воспользоваться domainsdb.net (но он вроде закрылся).
www.domaintools.com. - тоже например. Тажке можно просто походить по серверу и посмотреть названия папок (маловероятно). Хотя Plesk например, дает такую возможность.
Chumka ★★★
()
в нетбсд для этой цели используются magic symlinks.
dilmah ★★★★★
()
Ответ на: комментарий от Chumka
>Да и роли это не играет.

если апач запущен на хостинге под apache\www для всех, то мы не только /tmp можем узреть, но и поглядеть файлы у домена соседа.

Какие-то не хорошие хостинги.

Plazmid
()
Ответ на: комментарий от Plazmid
>если апач запущен на хостинге под apache\www для всех, то мы не только /tmp можем узреть, но и поглядеть файлы у домена соседа

Боюсь, Вы понятия не имеете как устроены виртуальные хостинги. То о чем вы говорите, разделено на уровне прав доступа к файлам. CGI и FastCGI запускаются через suexec и этого достаточно. mod_php же работает с правами апача (www,nobody,apache) и файлы защищаются посредством open_basedir.

Chumka ★★★
()
Ответ на: комментарий от Alan_Steel
Вы коммерческие программы по *nix видели?
Они написаны так как-будто кроме них на сервере никого больше нет и не будет и часто работают из под root'a хотя им это нафиг не надо. Поубивал бы.
sdio ★★★★★
()
Ответ на: комментарий от anonymous
>Чем не устраивает починка файла /etc/passwd? Там можно любой шелл задавать, в том числе и chroot :)

Chroot environment кто создавать и обновлять будет для каждого пользователя ?
Делать больше нечего когда всего то надо /tmp и /var/tmp разделить.
szh ★★★★
()
Ответ на: комментарий от Chumka
> Слишком у Вас много вопросов %) Это подозрительно, решили стать хакером.

Да нет. Просто интересно, действительно ли можно так взломать сайт или только умозрительно... :)

> www.domaintools.com. - тоже например.

И что? Там какие-то тулзы типа пинга, nslookup, подбора доменных имен, еще какая-то хрень... А как узнать какие сайты хостятся на серваке? Вот возьмем конкретный сервер - fe57.masterhost.ru. Как? Хотя бы теоретически? :)

/капча: ranthed

anonymous
()
Ответ на: комментарий от anonymous
Вот это для Вас: http://www.xakep.ru/magazine/xA/092/056/2.asp Там написано, как domaintools использовать.

>Вот возьмем конкретный сервер - fe57.masterhost.ru. Как? Хотя бы теоретически?

Я и говорю только теоретически. На практике я не буду это делать и Вам не советую. И еще ps: сайты лежат не на fe57.masterhost.ru, а на be57.masterhost.ru

Chumka ★★★
()
Ответ на: комментарий от Chumka
>Боюсь, Вы понятия не имеете как устроены виртуальные хостинги.

Может быть, может быть...

но вот пример
http://www.opennet.ru/base/dev/apache_php_as_cgi.txt.html
suEXEC позволяет запускать скрипты от имени владельца сайта и
соответственно создавать/менять файлы, принадлежащие ему. Поэтому нет
необходимости назначать право записи группе и тем более всем. К
сожалению проблема с чтением чужих файлов остаётся.


Т.е. -> К сожалению проблема с чтением чужих файлов остаётся.
Plazmid
()
Ответ на: комментарий от skwish
будет постепенный переход в сторону сборника костылей и подпорок с последующем забвением план9
anonymous
()
Ответ на: комментарий от Chumka
> Вот это для Вас: http://www.xakep.ru/magazine/xA/092/056/2.asp Там написано, как domaintools использовать.

Спасибо.

> сайты лежат не на fe57.masterhost.ru, а на be57.masterhost.ru

Да, правильно. :) Кстати, domainsdb.net вроде бы работает, но на нем сейчас интересная вывеска: "Внимание ! На сервере с базой доменов произошел сбой raid-массива в результате которого базы были утеряны. Работа сайта возобновится при первой же возможности. Спасибо за понимание" :)

anonymous
()
Ответ на: комментарий от ximeric
>Операции "echo", "chmod", "chown" разнесены по времени. Если бы они выполнялись в одной транзакции, то и проблемы бы не было.

а так:

touch file
chmod 600 file
echo 123 > file
alt0v14 ★★★
()
Ответ на: комментарий от Plazmid
!Запуск скрипта из suexec почти не отличается от запуска скрипта со своим uid,gid.

Вы можете прочитать файлы пользователя в его домашней директории, даже если у них права 666? Не можете. Почему? Потому что права на домашнюю директорию 700 или 750.

Chumka ★★★
()
Ответ на: комментарий от Plazmid
>Т.е. -> К сожалению проблема с чтением чужих файлов остаётся.

похоже они её решили. Ну да ладно мы вместо suexec используем itk.

Plazmid
()
здравствуй новый геморрой, и как теперь анализировать почему у пользователя по какой-то причине нет доступа к /tmp? залезить на сервер, посмотреть что все в порядке с /tmp, потом делать grep -r tmp /etc, да? не тру.

по поводу сессий php: php_admin_value session.save_path, php_admin_value upload_tmp_dir по-моему еще никто не отменял, тем более, у вменяемы людей есть еще php_admin_value open_basedir в который / ну никак не попадает.

borisych ★★★★★
()
А что по этому поводу думает Патрег? =)
magesor ★☆
()
Ответ на: комментарий от borisych
>по поводу сессий php: php_admin_value session.save_path, php_admin_value upload_tmp_dir по-моему еще никто не отменял

По умолчанию значение стоит в /tmp. Некоторые пользователи могут поменять это в .htaccess. но, к сожалению, пользуются немногие. Достаточно заглянуть в /tmp на любом хостинге и посмотреть сколько там сессий лежит.

>у вменяемы людей есть еще php_admin_value open_basedir в который / ну никак не попадает

Это тут cовсем не причем. sid сессии можно узнать вообще без php.

Chumka ★★★
()
Ответ на: комментарий от Chumka
>По умолчанию значение стоит в /tmp. Некоторые пользователи могут поменять это в .htaccess. но, к сожалению, пользуются немногие. Достаточно заглянуть в /tmp на любом хостинге и посмотреть сколько там сессий лежит

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

borisych ★★★★★
()
Ответ на: комментарий от adarovsky
>Чем не устраивает починка файла /etc/passwd? Там можно любой шелл задавать, в том числе и chroot :)

Дело в том что в /etc/passwd указан /bin/bash и он запускается УЖЕ с правами пользователя которым входишь, а для chroot нужны права root... В голову приходит только идея писать какую-то спец программу на которую ставить suid и которая быдет запускать chroot... Может есть простое и всеми давно используемое решение ???
anonymous
()
Со мной был реальный случай, когда на форум удалось войти под админским аккаунтом благодаря известному id. Только я добрый - сказал админу про косяк)
ASTAROT
()
Ответ на: комментарий от kmeaw
>sshd_config: ChrootDirectory

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