В данной заметке мы рассмотрим установку системы на несколько разделов по критерию опций монтирования.
Я использую для установки системы 4 раздела:/boot — требуется отдельный раздел если остальная часть системы устанавливается на software raid.
/ - основной раздел на котором расположены все исполняемые файлы, хотя он может быть тоже раскидан по разным разделам, но уже не по критерию опций монтирования.
/home — раздел домашних каталогов.
/var — раздел переменных сред, который обычно не содержит исполняемых файлов.
Итак я предлагаю вариант установки системы со следующими опциями монтирования (в моем примере это raspberry pi с установленным raspbian wheezy):
pavel@pspi ~ $ cat /etc/fstab
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults,ro,noexec 0 2
/dev/mmcblk0p2 / ext2 defaults,ro 0 1
/dev/mmcblk0p3 /var ext2 defaults,noexec 0 1
/dev/mmcblk0p5 /home ext2 defaults,noexec 0 1Для раздела /boot я применил опции ro,noexec, так как записывать в него и исполнять при работе системы не надо.
Для раздела / - опция ro — там содержатся исполняемые файлы, но они неизменяемы и записывать в раздел при нормальной работе ничего не требуется, только во время администрирования.
Раздел /home смонтирован с опцией noexec — это мое решение, чтобы пользователи не скачивали и не запускали программы из ненадежных источников.
Раздел /var смонтирован с noexec, так как обычно не содержит исполняемых файлов (за исключением /var/lib/dpkg) и выполнение тут не требуется.
Посмотрим какие у нас еще остались виртуальные fs с опцией exec:
pavel@pspi ~ $ mount | grep -v noexec
/dev/root on / type ext2 (ro,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=218636k,nr_inodes=54659,mode=755)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime,size=89160k)Попробуем внести для них записи в /etc/fstab, чтобы система попробовала их перемонтировать с нашими опциями:
devtmpfs /dev devtmpfs rw,noexec,relatime,size=218636k,nr_inodes=54659,mode=755
tmpfs /tmp tmpfs rw,noexec,nosuid,nodev,relatime,size=89160kи перезагрузим систему получив:
pavel@pspi ~ $ mount | grep -v noexec
/dev/root on / type ext2 (ro,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=218636k,nr_inodes=54659,mode=755)Не сработало для fs /dev - для нее добавим в /etc/rc.local:
mount /dev -o remount
и снова перезагрузим систему получив:
pavel@pspi ~ $ mount | grep -v noexec
/dev/root on / type ext2 (ro,relatime)Мы видим, что у нас все разделы смонтированы по возможности с noexec кроме /, который смонтирован readonly.
При администрировании системы я перемонтирую разделы:
pavel@pspi ~ $ sudo mount /var -o remount,exec
pavel@pspi ~ $ sudo mount / -o remount,rwПосле администрирования:
pavel@pspi ~ $ sudo mount / -o remount
pavel@pspi ~ $ sudo mount /var -o remountURL: http://www.tinyware.hostline.su/
Обсуждается: http://www.opennet.ru/tips/info/2919.shtml
Это конфигурация сервера для каких задач ?
Это призрачная защита, потому что файлы всё равно можно исполнять через . /path/to/script.shЕсли нужно огородить систему, используй SElinux (ну, или apparmor).
[Пример: У меня на сервере тихо работает уязвимая версия Joomla, зажатая SElinux. А у компании-хостера она жрала 100% CPU, за что хостинг отключили.]
Вы гордитесь тем, что не можете использовать нормальный цмс, или тем, что вам еще винт не отформатили, возможно, потому что шлют с вас спам. Если уж надо, то можно через обратную проксю запретить с внешних ip дырявые урлы, но через se, это фееричный идиотизм
Человек забил микроскопом гвоздь, а вы ему праздник пытаетесь испортить. Нехорошо.
Какие Вы нетерпимые. Это явно подорванное здоровье, поправляйте. Сделал человек, и хорошо.
man mount прочитал? красавчик, а не думал, что добавить команду перемонтирования в rw или exec перед тем как на раздел слить инфу и заразить системку не так уж сложно, хочешь секурности пиши на сд-р и грузись с них))
> man mount прочитал? красавчикАбсолютной защиты не существует. Но, как правило, для получения рута требуется запустить в системе сплоит, который прежде еще нужно записать. Одэев в ядро или в сервис от рута крайне мало, одэй же в непривилегированный процесс обломится с перемонтированием, записью и запуском.
Автору:
не забываем об опции "nosuid".
> непривилегированный процессв /bin /usr/bin кто попало тоже не пишет, в отличии от винды, линукс трудно ломануть даже имея шелл на нем, большенство "вирусятины" прилитевшие через кривую cms в апаче довольствуется возможностью отправлять спам сидя в памяти, так в чем прикол монтирования на ro.
Нет, ну конечно, когда мы ставим сервер в глухом лесу, в климатическом шкафу рядом с радиорелейкой, куда заглянуть в лучшем случае лет через 7 это имеет смысл, но не потому, что страшно, что сломают, а чтобы фс не глюканула, даже когда контроллер глюканет, но это "ох" какая редкость, когда надо слепить связь из того, что под столом завалялось))
> чтобы фс не глюканула, даже когда контроллер глюканетВ таком случае никакие опции монтирования ничего не гарантируют.
Очень даже гарантируют, поскольку система даже пытаться не будет писать на раздел, то есть и не запишет куда не надо, а прочитать не сможет - ну зависнет, ресет и делов то.
Кто интересуется, обновлена страничка http://tinyware.hostline.su/restrictcap.ko.html. В конце дописана информация, отвечающая на вопросы "Я все равно перемонтирую" и подобное. Без загрузки посмотреть патчи можно http://tinyware.hostline.su/TinyWare/release/src/linux-4.1.1.../
Если у меня работает Web сервер с CGI скриптами, то куда его надо положить?
а в чем смысл этого банального перечисления известных вещей? реклама сайта с булочками?
> (в моем примере это raspberry pi с установленным raspbian wheezy):...
> Раздел /home смонтирован с опцией noexec - это мое решение, чтобы
> пользователи не скачивали и не запускали программы из ненадежных источников.Чем же же тогда несчастным пользователям заниматься?
noexec не защищает от выполнения программ./var нельзя монтировать с noexec (сломаются post-inst и прочие скрипты из deb-пакетов)
Как выяснилось, /var нельзя даже с nodev монтировать — Debian installer не отрабоает.
Для полноты картины не хватает пересказа заклинания про noatime,nodiratime.
Он же собирается обновляться раз в год и перед этим все перемонтировать скриптом. Правда при этом вирусня в оперативке запишется и запустится =)
> noexec не защищает от выполнения программ.
> /var нельзя монтировать с noexec (сломаются post-inst и прочие скрипты из deb-пакетов)Эти опции для полетного режима. При установке пакетов надо перемонтировать в rw и exec все разделы.
> Как выяснилось, /var нельзя даже с nodev монтировать — Debian installer не
> отрабоает.Опции монтирования я добавляю в уже установленной системе. На этапе инсталлятора только деление на разделы.
> Для полноты картины не хватает пересказа заклинания про noatime,nodiratime.Полнота картины в книжке http://files.mail.ru/291D0F7807F6425E89C210C65003E278 . Локхарт Э. Антихакинг в сети. Трюки.pdf
http://pastebin.com/dY2htk7r - запуск произвольного шеллкода при наличии Python-a в стандартной комплектации. Зачем это нужно, если есть сам Python, и можно ли допилить скрипт до возможности запуска произвольного elf-файла, доступного для чтения - вопрос отдельный.
> http://pastebin.com/dY2htk7r - запуск произвольного шеллкода при наличии Python-a в стандартной
> комплектации. Зачем это нужно, если есть сам Python, и можно ли
> допилить скрипт до возможности запуска произвольного elf-файла, доступного для чтения
> - вопрос отдельный.Понятно что можно запускать сценарии например $bash /home/pavel/Downloads/script.sh или другими интерпретаторами. Но вопрос в другом - где способ заражения в один клик - скачал - кликнул - запустилось? Это защита от этого, а на от запрета все запускать. Ктому же запустить сценарий и получить повышенные привелегии меньше вероятно, это не бинарник.
Ну, так я же и пишу как из скрипта сделать бинарник даже в условиях noexec.
От скачал-кликнул-запустилось защищает скорее нормальный umask, из-за которого перед запуском нужно будет сначала поставить права на исполнение, что для скриптов, что для бинарников, да и сама эта проблема актуальна в основном для ведроида и винды.
А если же говорить о всяких дырах в флешплеере и иже с ним, то запуск такого скрипта вполне может неплохо помочь имеющему шелл, но не имеющему рута кульхацкеру в условиях noexec запустить локальный эксплойт, перехватить нажатия клавиш и вообще делать всё, что обычно.
Поэтому говорить о какой-то значительной практической пользе этой опции особого смысла нет и это просто перестраховка.
> Ну, так я же и пишу как из скрипта сделать бинарник даже
> в условиях noexec.Ты написал как питон заставить выполнить произвольный байткод, а не родной его диалект. Это плохо для питона, да. И что это дает по твоему? Вот я этот скрипт скачал, он не запускается сам по себе, я должен вызвать $python tvoy-script.py.
> От скачал-кликнул-запустилось защищаетДа втом то и дело что по клику не запустится, надо еще организовать выполнение.
скорее нормальный umask, из-за которого перед
> запуском нужно будет сначала поставить права на исполнение, что для скриптов,
> что для бинарников, да и сама эта проблема актуальна в основном
> для ведроида и винды.Тоже вариант, выбор значения umask важное дело.
> А если же говорить о всяких дырах в флешплеере и иже с
> ним, то запуск такого скрипта вполне может неплохо помочь имеющему шелл,
> но не имеющему рута кульхацкеру в условиях noexec запустить локальный эксплойт,
> перехватить нажатия клавиш и вообще делать всё, что обычно.Ну пока что у меня с noexec на home youtube в браузере не работает, а не адоб флэш мне что то запускает.
> Поэтому говорить о какой-то значительной практической пользе этой опции особого смысла
> нет и это просто перестраховка.Ну вобщем то да, это не панацея, дядька делал простую фичу, и она только то что есть.
Хорошо, а что, кроме payload-ов эксплойтов, запускается "само по себе"? Проблема со случайным скачиванием и запуском вредоносного elf-файла абсолютно надуманная, а проблемы, которые возникают у пользователей из-за такой заSHITы вполне реальны. При этом технически грамотный юзверь или даже обычный скрипт-кидди её легко обойдет, да и действительно нужна она только в определенном ряде специальных случаев, для proc, например.
В общем тут я вижу только бездумную копипасту (да ещё и ухудшениями, там то только про tmp говорили) команд из книжки, смыла в которой довольно мало.
> Хорошо, а что, кроме payload-ов эксплойтов, запускается "само по себе"? Проблема со
> случайным скачиванием и запуском вредоносного elf-файла абсолютно надуманная, а проблемы,
> которые возникают у пользователей из-за такой заSHITы вполне реальны. При этом
> технически грамотный юзверь или даже обычный скрипт-кидди её легко обойдет, да
> и действительно нужна она только в определенном ряде специальных случаев, для
> proc, например.
> В общем тут я вижу только бездумную копипасту (да ещё и ухудшениями,
> там то только про tmp говорили) команд из книжки, смыла в
> которой довольно мало.Книжку мне дали несколько дней назад. В ней я нашел некоторые те же мысли, до которых допетрил сам. В конце концов я эту проблемму вижу в том, что когда то это все было just for fun. А теперь люди с подходами инквизиторов или жаждой каких то идеальностей нарыли кучу проблемм. Компьютеры я считаю не для того. Не нравятся дедовские методы, ну что ж, значит вам не на мой сайт. Я тоже не глупый и в инсталляшке в /etc/motd оставил no warranty. И debian no warranty, и многое другое. Вопорос только в том сколько онкологии люди сделают себе и другим из за каких то дурацких компов.
P.s. дурак на английский переводится do cancer.
>[оверквотинг удален]
> же мысли, до которых допетрил сам. В конце концов я эту
> проблемму вижу в том, что когда то это все было just
> for fun. А теперь люди с подходами инквизиторов или жаждой каких
> то идеальностей нарыли кучу проблемм. Компьютеры я считаю не для того.
> Не нравятся дедовские методы, ну что ж, значит вам не на
> мой сайт. Я тоже не глупый и в инсталляшке в /etc/motd
> оставил no warranty. И debian no warranty, и многое другое. Вопорос
> только в том сколько онкологии люди сделают себе и другим из
> за каких то дурацких компов.
> P.s. дурак на английский переводится do cancer.Мне кажется, что книжки плана "100 профессиональных примеров по X" стоит читать только после того, как прочтешь о общих принципах того, как это всё работает, иначе комбинирование и экстраполяция изначально вполне адекватных советов может привести к откровенному маразму.
Я слабо понимаю, причём здесь жажда идеальностей и где вы здесь видите подход инквизиторов, а дальше в сообщении идёт вообще нечто маловразумительное, но в общем суть в том, что дело не в желании нагадить, а в том, что именно слабая техническая грамотность пользователей, лень и некомпетентность многих системных администраторов, ошибки программистов создаёт ту среду, в которой процветают злоумышленники, создающие вышеперечисленным товарищам эту твою "онкологию".
>[оверквотинг удален]
>> Не нравятся дедовские методы, ну что ж, значит вам не на
>> мой сайт. Я тоже не глупый и в инсталляшке в /etc/motd
>> оставил no warranty. И debian no warranty, и многое другое. Вопорос
>> только в том сколько онкологии люди сделают себе и другим из
>> за каких то дурацких компов.
>> P.s. дурак на английский переводится do cancer.
> Мне кажется, что книжки плана "100 профессиональных примеров по X" стоит читать
> только после того, как прочтешь о общих принципах того, как это
> всё работает, иначе комбинирование и экстраполяция изначально вполне адекватных советов
> может привести к откровенному маразму.Ну извини, я не маразматик. Я занимаюсь Linux ом 13 лет. Если хочешь, то на этом сайте просто перечислено "Чего мне не хватало в Unix" с точки зрения 13 летнего опыта. Остальным я доволен. У кого то список больше и они запиливают селинуксы с контейнерами, мне это не интересно.
> Я слабо понимаю, причём здесь жажда идеальностей и где вы здесь видите
> подход инквизиторов, а дальше в сообщении идёт вообще нечто маловразумительное, но
> в общем суть в том, что дело не в желании нагадить,Очень часто дело именно в этом, в желании нагадить. Человеку гадят ментально и он из чувства самозащиты начинает создавать какую нибудь офигенно сложную систему защиты, чем вызывает головняк у других. Люди, которым не попирали ментальные пермишены, обычно всем довольны и их устраивает все как есть. И линукс пушистый, и все люди братья.
> а в том, что именно слабая техническая грамотность пользователей, лень и
> некомпетентность многих системных администраторов, ошибки программистов создаёт ту среду,
> в которой процветают злоумышленники, создающие вышеперечисленным товарищам эту твою "онкологию".
13 лет администрирвания... и додуматься только до этого.. Это прям мемуары "путь черепахи"
/boot в vfat ? Зачем, спрашивается? То есть зачем вообще держать vfat в сервере?
> /boot в vfat ? Зачем, спрашивается? То есть зачем вообще держать vfat
> в сервере?Это пример с raspberry pi. там нужно vfat. Конечно на сервере vfat не надо, вы же не копипастеры.