LINUX.ORG.RU

Безопасность read-only системы


0

3

Хочу «заморозить» состояние своего домашнего ПК. Как показывает опыт, системные обновления для меня, обычного пользователя, либо не видны, либо что-то ломают. «Улучшения» в офисных пакетах сомнительны. Быстродействия, несмотря на заверения, обновления тоже не приносят. Кроме того, из-за глюков программ настройки /home тоже иногда ломаются. Было однажды, что пришлось пересесть со старого openoffice на новый libreoffice, потому что openoffice просто перестал сглаживать шрифты как я привык. Хотя при этом я никаких настроек не менял. Другой пример еще со времен ubuntu (года 2-3 назад). После обновления системы /home тупо сломался и я не имел прав даже войти туда. Причем это именно /home, т.к. я отформатировал системный раздел, установил debian, а проблема осталась. Таким образом, /home также необходимо заморозить.

Планирую реализовать так: / монтировать только на чтение, /home - либо целиком на чтение, а документы перенести на раздел в rw, либо убрать атрибут w у настроек. Firefox, возможно, запускать в песочнице (правда, я не знаю, может ли песочница обмениваться файлами с системой, никогда не пробовал).

Есть ли у вас подобный опыт? Как предложите реализовать? И насколько можно считать такую настройку безопасной?

Deleted

Можешь вообще на cd-r ключевые директории записать. Но нафига тебе это? Хорошая надежная защита это та, которая защищает от конкретной атаки.

soomrack ★★★★★
()
Ответ на: комментарий от soomrack

Вот меня и интересует, какие конкретно атаки могут быть успешны на системе, смонтированной только для чтения?

Deleted
()
Ответ на: комментарий от Deleted

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

soomrack ★★★★★
()
Ответ на: комментарий от Deleted

Вот меня и интересует, какие конкретно атаки могут быть успешны на системе, смонтированной только для чтения?

Любая. Если злоумышленник получит root, что мешает ему сделать mount -w /

IPR ★★★★★
()
Ответ на: комментарий от leave

Было несколько линукс-десктопов из нескольких сотен для спама в irc. Управлялось всё из какой-то латино-страны. Инфа 100%.

IPR ★★★★★
()
1 февраля 2014 г.
Ответ на: комментарий от soomrack

У меня вопрос. В связи с тем, что обновление со squeeze до wheezy - нереальный головняк, а с нуля все делать не хочу, все же сделал read-only систему (компьютер выполняет в основном офисные задачи, зачем ему новые функции). При этом (содержимое fstab):

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
tmpfs           /tmp            tmpfs   defaults,noexec,nosuid,nodev 0 0
UUID=f50b5158-410c-4dcb-91ca-2f1f42be099a	/	ext4	defaults,noatime,ro,errors=remount-ro	0       1
UUID=b5b1ebbe-9343-4d66-a8ab-15c612a30b06	/media	ext4	defaults,noexec,nosuid	0	2
UUID=546bcb2d-8408-458e-a25a-85503c917de0	/home	ext4	defaults,noexec,nosuid,nodev	0	2
UUID=3d66a9b5-da45-43bf-b2fc-f4f1224e5b37	/var	ext4	defaults,noexec,nosuid,nodev	0	2
UUID=7039e776-8ee7-4769-abcf-5ac90e567b06	/tmp	ext4	defaults,noexec,nosuid,nodev	0	2
UUID=38e8da84-1cc6-4d1a-aea5-9c092710d31d	/usr/local/bin	ext4	defaults	0	2
/swapfile none swap sw 0 0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
Как видно, я перенес /var, /tmp, /media, /usr/local/bin на отдельные разделы и везде где можно, поставил noexec,nosuid,nodev. В принципе, еще можно перекомпилировать umount с удаленной функцией remount, но я пока не стал заморачиваться. telnet и ssh на машине нет. Итак, вопрос. Каким образом чужой код / хакер сможет проникнуть на мой комп?

Deleted
()
Ответ на: комментарий от IPR

Разгребать зависимости надо. Новые пакеты часто вносят не ту функциональность, к которой я привык. Яркий пример - Alt+Tab в wheezy теперь отображает приложения вертикально. Не смертельно, но неприятно.

Deleted
()
Ответ на: комментарий от Deleted

Каким образом чужой код / хакер сможет проникнуть на мой комп?

Можно эксплуатировать уязвимость в браузере, флеш-плагине или любой другой уязвимой программе, работающей с интернетом, таким образом выполнить код на компе жертвы. Этот код может создать какой-нибудь вредоносный скрипт в любом месте, доступном на запись, и выполнить его (от этого noexec не спасёт, а при определённых обстоятельствах не нужны даже места, доступные на запись). Также он может прописать какой-нибудь скрипт в автозагрузку (в хомяке пользователя).

gentoo_root ★★★★★
()

Не думаю, что это добавит безопасности. Вытащить пользовательские данные одноразовым трояном — не мешает. Руткитам — смысл их бояться на домашней машине?

Присоединяюсь к советующим прямые руки.

x3al ★★★★★
()
Ответ на: комментарий от Deleted

Каким образом чужой код / хакер сможет проникнуть на мой комп

/dev/disk/by-uuid/f50b5158-410c-4dcb-91ca-2f1f42be099a, вполне писабелен для dd. Перемонтировать для чтения и записи можно даже если у моунта не будет соответствующей опции. noexec так же не панацея. Мильены путей.

naszar
()
Ответ на: комментарий от gentoo_root

таким образом выполнить код на компе жертвы.

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

naszar
()
Ответ на: комментарий от gentoo_root

А каким образом можно соединиться с компом без ssh и telnet? Я в сетевом инструментарии плохо разбираюсь.

Deleted
()
Ответ на: комментарий от x3al

А есть ли вариант безгеморройного обновления дебиана на новую стабильную версию (без установки с нуля)? sudo apt-get update && sudo apt-get dist-upgrade приводит к самым разнообразным глюкам - интернет плохо работает, umount падает с ошибкой. И это при том, что в процессе обновления мне только предлагалось удержать или обновить существующие конфиги, и всё.

Deleted
()

Как показывает опыт, системные обновления для меня, обычного пользователя, либо не видны

вот когда у тебя будет РЕШЕТО, то увидишь.

«Улучшения» в офисных пакетах сомнительны. Быстродействия, несмотря на заверения, обновления тоже не приносят. Кроме того, из-за глюков программ настройки /home тоже иногда ломаются. Было однажды, что пришлось пересесть со старого openoffice на новый libreoffice, потому что openoffice просто перестал сглаживать шрифты как я привык. Хотя при этом я никаких настроек не менял. Другой пример еще со времен ubuntu (года 2-3 назад). После обновления системы /home тупо сломался и я не имел прав даже войти туда. Причем это именно /home, т.к. я отформатировал системный раздел, установил debian, а проблема осталась. Таким образом, /home также необходимо заморозить.

убунтопроблемы.

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

я использую обычные unix-like песочницы, ФФ запускаю sudo. УМВР.

emulek
()
Ответ на: комментарий от naszar

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

У меня в генте нет -fstack-protector, может быть, отдельные пакеты с ним и собираются, но не вся система.

Есть ссылочка, где код выполняется не переполнением?

Я специально конкретных примеров не приводил, чтобы просто показать, что сделать кучу всего в read-only недостаточно для безопасности, потенциально может найтись такая дыра, от которой read-only на файловой системе не спасёт. Это не было руководство, как взломать подобную систему на практике.

gentoo_root ★★★★★
()
Ответ на: комментарий от Deleted

А каким образом можно соединиться с компом без ssh и telnet?

Да самым обыкновенным, после того, как какой-то вредоносный код запустить на машине жертвы удалось, тут уже не проблема соединиться с компом. Либо этот вредоносный код начинает слушать порт и все данные перенаправлять в/из /bin/sh, таким образом любой подключившийся сможет выполнять удалённо команды и получать ответы; либо же этот вредоносный код пытается подключиться к серверу атакующего и делает то же самое (выполняет удалённо полученные команды). А лучше всего, если этот вредоносный код просто пишет в любое записываемое место на ФС и запускает скриптик, который собственно и занимается remote shell'ом.

По сути, первый вариант — это реализация чего-то похожего на telnet.

gentoo_root ★★★★★
()
Последнее исправление: gentoo_root (всего исправлений: 1)
Ответ на: комментарий от gentoo_root

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

Какие конкретно вещи позволят обойти noexec,nosuid? Если /bin/bash <скрипт>, то для этого надо сначало установить подключение к компьютеру, чтобы к этому самому bash получить доступ.

Deleted
()

Простейший сценарий: внезапно публикуется какая-нибудь критическая уязвимость в одной из либ нижнего уровня. Все обновятся кроме тебя.
Как постригание твоей системы в r/o спасёт от внезапно появившейся уязвимости?

blexey ★★★★★
()
Ответ на: комментарий от blexey

А каким образом эта уязвимость меня затронет? Захочет подменить библиотеки - система ro. Захочет свой код залить - выполнение приложений на разделах запрещено.

Deleted
()
Ответ на: комментарий от Deleted

Ты не понял. В одной из либ, которая есть и в твоей системе, внезапно находят многолетнюю уязвимость. А ты однажды признал свою систему вместе с ней стабильной и безопасной, накрыл всё r/o и не обновляешься.

Ближайший пример: недавние ботнеты из роутеров, в которых, казалось-бы, тоже всё стабильно, безопасно, r/o и хрен кем и когда обновляется.

blexey ★★★★★
()
Последнее исправление: blexey (всего исправлений: 1)
Ответ на: комментарий от Deleted

Какие конкретно вещи позволят обойти noexec,nosuid? Если /bin/bash <скрипт>, то для этого надо сначало установить подключение к компьютеру, чтобы к этому самому bash получить доступ.

Я же несколько раз уже описал типичный сценарий: выполнить свой код на компьютере жертвы, который уже сохранит на диск скрипт и выполнит его интерпретатором (от этого не спасёт noexec, ещё, кажется, работал способ для бинарников — запуск через /lib/ld-linux.so.2, но не знаю точно, работает ли сейчас). Для того же, чтобы изначально выполнить свой код на компе жертвы, есть множество способов: это может быть программа на flash или java, выполненная в браузере, это может быть просто дыра в браузере. Не уверен, что flash и java позволят сохранить файл на диск так просто, но в них тоже могут быть дыры или баги.

gentoo_root ★★★★★
()

И насколько можно считать такую настройку безопасной?

Божественная защита. Хацкеры поломают тебе машину через уязвимость твоего говна мамонта, узнают твой пароль и будут бесчинствовать в tmpfs

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

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от gentoo_root

Я же несколько раз уже описал типичный сценарий

Я ваш сценарий в целом понял, но не понимаю детали, а именно, как хакер устанавливает связь с машиной при отсутствующих ssh и telnet.

и выполнит его интерпретатором

Ну а все-таки, чтобы добраться до интерпретатора, надо как-то сессию с машиной установить. А как это сделать при отсутствующем ssh-server? Впарить трояна, который все равно не запустится на noexec разделах?

Deleted
()
Ответ на: комментарий от Deleted

при отсутствующих ssh и telnet

У тебя же есть браузер.

Ну а все-таки, чтобы добраться до интерпретатора, надо как-то сессию с машиной установить. А как это сделать при отсутствующем ssh-server?

Даже дополнения к браузеру будет достаточно.

drake
()
Ответ на: комментарий от Chaser_Andrey

Но как? Как вы умудряетесь ломать системы?

Например CVE-2011-0996. Существовала достаточно долго. ТС с его ro вполне мог бы от нее отхватить. Тут основная опасность в том, что пока добрый дядя не найдет и не отрепортит уязвимость и не сделает ее публичной, злодейки в своем узком кругу будут ея безвозбранно юзать.

naszar
()
Ответ на: комментарий от Deleted

как хакер устанавливает связь с машиной при отсутствующих ssh и telnet.

См. мой комментарий выше. У злодейки в данном случае будет шелл и никакие ro и noexec его не остановят.

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

naszar
()
Ответ на: комментарий от Deleted

Какие конкретно вещи позволят обойти noexec,nosuid? Если /bin/bash <скрипт>, то для этого надо сначало установить подключение к компьютеру, чтобы к этому самому bash получить доступ.

ты делишь на ноль: для «обойти noexec,nosuid» нужен доступ к шеллу. Для /bin/sh скрипт тоже нужен шелл, а вот noexec,nosuid этому никак НЕ помешают.

noexec немножко затруднит действия злоумышленника тогда, когда он захочет поднять свои права до суперпользователя, т.е. ПОСЛЕ взлома системы. Т.е. конечно он нужен на компе секретарши, но не более того.

emulek
()
Ответ на: комментарий от naszar

См. мой комментарий выше. У злодейки в данном случае будет шелл и никакие ro и noexec его не остановят.

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

ППКС

emulek
()

как приходится извращаться людям, не осилившим ФС со снапшотами и клонами

anonymous
()
Ответ на: комментарий от naszar

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

если не злить «узкий круг злодеек», то они не полезут. А вот всякие пионеры — эти всегда лезут. Но они дебилы, и используют давно закрытые дыры, надеясь на мудака-одмина, который не обновляется.

emulek
()
Ответ на: комментарий от anonymous

как приходится извращаться людям, не осилившим ФС со снапшотами и клонами

одминов локалхоста никто не спрашивал.

emulek
()
Ответ на: комментарий от Deleted

снапшоты переводят поломки системы и такие вот желания из разряда проблем в разряд минутного дела

anonymous
()

Куча софта будет глючить, т.к. не рассчитаны на RO-хомяк.

Более правильно будет делать немножко по-другому. При загрузке запоминать состояние ФС, при выключении восстанавливать его (кроме ~/Documents например). Как вариант - при загрузке монтировать /home/user как RAM-память и копировать туда старое содержимое, ~/Documents симлинком на RW-раздел цеплять. Может быть есть какие-то многоуровневые ФС, которые будут изменения выносить на один раздел (RAM), а так читать с RO-раздела, при этом системе это всё будет видеться как один раздел, это было бы идеально, но не подскажу, есть ли это.

Legioner ★★★★★
()
Ответ на: комментарий от naszar

Гм... я не таком «ломать» говорил. :)

В смысле, как они умудряются делать систему неработоспособной (через апдейты, установку пакетов), да ещё и часто и регулярно?

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

В смысле, как они умудряются делать систему неработоспособной (через апдейты, установку пакетов), да ещё и часто и регулярно?

они

this

Даже в Debian'е не могут решить: ставить systemd или нет. Пока голос разума победил, хоронить рано. Остальное УГ — самое время.

А разгадка проста: каждый тянет одеяло на себя.

emulek
()
Ответ на: комментарий от Chaser_Andrey

хватит уже ныть. Сам иди спать. Я и так выспался.

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

emulek
()
Ответ на: комментарий от Deleted

А если браузер и почтовик посадить в песочницу?

Смотря какая песочница. Всё равно в ней должно быть место, куда можно писать (браузеру кучу данных надо где-то хранить), поэтому ничего не мешает атакующему положить свой скрипт туда, данные пользователя вне песочницы, конечно, будут в большей безопасности, и в автозапуск скрипт уже не пропишется, а если из этой песочницы вообще никак нельзя достучаться наружу, чтобы дёрнуть интерпретатор, и в самой песочнице noexec, то мне кажется, что простого способа закрепиться там не будет. Главное, чтобы песочница не имела никакого доступа наружу, иначе смысла в ней не будет.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

В общем, поставил новую систему с нуля. Ставил сначала debian, однако, в нем нет проприетарных компонентов, в результате чего после входа в сеанс отказывала графика, я не мог даже переключиться на консоль. Перезагрузиться я тоже не мог, потому что отсутствовал firmware-nonfree. Приходилось вырубать через кнопку питания. Тупизна. Поставил новый crunchbang. Итого где-то часов 6 просидел (с учетом того, что у меня еще не было инструкции по настройке/установке до того состояния, что было раньше) против также примерно 6 часов неудачного обновления (первый раз просто закончилось место, исправление пакетов ничего не дало, второй раз система выдавала разнообразные глюки). В общем жаль, что каждый раз дистрибутив проще поставить с нуля (хотя, если есть скрипт/инструкция, это можно сделать за пару часов). Даже та простыня на debian.org, посвященная обновлению, предполагает, что обновление идет с «чистой» системы, сторонние пакеты/репы рекомендуется предварительно удалить/убрать из конфигов.

Deleted
()
Ответ на: комментарий от Deleted

Кстати, не могу не воспользоваться случаем, чтобы не пнуть процесс установки дебиана. Справка на русском не влезает в экран, при этом ни ее размеры никак не изменить, ни пролистать. На этапе установки предлагалось загрузить проприетарный компонент (firmware), но предлагалось это сделать только почему-то со скаченного мной первого компакт-диска. Сеть он при этом еще не видел (ну и где тут логика?).

Deleted
()
Ответ на: комментарий от Deleted

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

Deleted
()
Ответ на: комментарий от drake

У тебя же есть браузер.

А если это lynx? Или еще лучше - lynx в песочнице? :)

Deleted
()
Ответ на: комментарий от gentoo_root

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

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