Автор Тема: Два въпроса за Ubuntu Apache Jail & OpenSSH  (Прочетена 3882 пъти)

DarkLordTed

  • Напреднали
  • *****
  • Публикации: 29
    • Профил
Не разбирам много от Линукс, но имам желание да си подкарам един Ubuntu Server 10.04 с вграден LAMP. В смисъл дистрибуцията му още при инсталацията дава възможност да се избере LAMP. До тук добре, но сега искам да си подкарам Apache-то MySQL-a и PHP-то в chroot jail и тук се видях в едно малко приключение. Не знам разположението на файловете и директориите на въпросните защото LAMP-а ги инсталира сам и да е питал нещо било е преди доста време и не си спомням. Ако може малко помощ. Освен това доколкото схванах мога да имам само един jail в системата (ако не греша) има ли начин все пак да отделя MySQL-a си от Apache-то освен, че ще са стартирани от различни потребители и респективно достъпа им, ще е ограничен само до съответните. За SSH-а исках да попитам има ли начин да се комбинира ключа и изискването на парола (като имам в предвид да се насложи криптирането на сесията, а не само да иска някаква парола която ако падне ключа ще стане плейн текст).
Активен

dejuren

  • Напреднали
  • *****
  • Публикации: 1025
  • Distribution: Ubuntu, RedHat
  • Window Manager: lxde KDE4
    • Профил
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #1 -: Dec 29, 2011, 18:21 »
Може малко помощ, но ще е повече абстрактна, не напълно конкретна (няма да инсталирам ЛАМП, от сега да се разберем). И така Убунту като дериват на Дебиан ползва неговата пакетна система. Списък на всички инсталирани пакети може да получиш така:
Код:
dpkg -l

Списък дали конкретни пакети са инсталирани така:
Код:
dpkg -l | egrep "apache|mysql"

Списък на файловете и мястото им принадлежащи на определен пакет така:
Код:
dpkg -L apache

По въпроса за chroot не мога да ти помогна, но мога да ти дам друга идея - виртуализация на машините, една виртуална отива за Apache, една за MySQL и т.н. Печелиш възможност за бързо въстановяване - копираш файла на виртуалната от бекъп, а по въпроса за изолацията между виртуалните и между тях и хоста въобще няма да споменавам. Убунту минимал заема 1.3 Гб, да кажем 2Гб, като отделиш данните на MySQL на отделен виртуален диск (по-голям разбира се) може да имаш отделен бекъп на системата и данните. Недостатък на това (ако може така да се каже) е необходимостта от повече РАМ на машината, тя се заделя за всяка виртуална машина поотделно и се "губи" за физическия хост.

От въпросът ти за ssh не мога да разбера много, би ли уточнил какво имаш предвид?
« Последна редакция: Dec 29, 2011, 18:23 от dejuren »
Активен

http://webchat.freenode.net/?channels=ubuntu-bg
The quieter you become, the more you are able to hear.
Две седмици цъкане с мишката спестяват два часа четене на документацията.

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #2 -: Dec 30, 2011, 21:00 »
...(като имам в предвид да се насложи криптирането на сесията, а не само да иска някаква парола която ако падне ключа ще стане плейн текст).

Това и аз не го разбрах, я разясни.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

DarkLordTed

  • Напреднали
  • *****
  • Публикации: 29
    • Профил
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #3 -: Dec 31, 2011, 21:30 »
Първо искам да благодаря за това, че се отзовахте защото честно казано не очаквах някой да отговори. За SSH-а имах в предвид следното: Аз ползвам PuTTY за достъп от Windows към Linux като от това което съм чел останах с впечатление, че ако ползвам ключ то паролата ми за лог-ване в Линукс-а ми става едва ли не излишна. Това би означавало, че Линукс-а ми дефакто става толкова защитен колкото и Windows-а защото пробие ли някой Windows-a ще достигне и до ключа за Linux-a. Вярно, е че има и keyphrase, но той само забавя. Затова се питах има ли начин системата да работи както си работи без ключ и върху криптирането което има когато се ползва парола да се насложи това за ключ. Тоест примерно имам connection криптирана с AES примерно и с парола и върху това да може да се подсили с вторично криптиране например с 3DES което е да речем вече зависещо от ключа. Сега да се върна малко на темата за Jail-a. За съжаление не мога да си позволя излишен разход на RAM памет. Добре де аз по друг начин но все пак мисля, че намерих кое къде е. Принципно къде може да се намери хубав пример за това как се прави jail от който ама наистина няма как да се излезе?
Активен

spec1

  • Напреднали
  • *****
  • Публикации: 230
    • Профил
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #4 -: Dec 31, 2011, 22:26 »
  Ако държиш да ползваш  jail -ове, е добре да се насочиш към
  FreeBSD  .Там е доста добре реализирано,има и добра
  документация.
      Все пак смятам, че виртуализацията ще ти свърши също добра
 работа, както ти подсказаха и колегите.  XEN  например използва
 достатъчно ефективно паметта.
Активен

dejuren

  • Напреднали
  • *****
  • Публикации: 1025
  • Distribution: Ubuntu, RedHat
  • Window Manager: lxde KDE4
    • Профил
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #5 -: Dec 31, 2011, 22:36 »
Първо на въпрос №2: http://www.cyberciti.biz/tips/chroot-apache-under-rhel-fedora-centos-linux.html - пример трепач. Това което се променя в твоя случай е командите rpm/yum се променят на dpkg/apt-get, но гледам описанието не е толкова насочено в инсталиране на това-онова, а към конфигурация, така че ще се справиш.

Въпрос първи - ти си отговорил сам правилно тук:
 
Това би означавало, че Линукс-а ми дефакто става толкова защитен колкото и Windows-а защото пробие ли някой Windows-a ще достигне и до ключа за Linux-a. Вярно, е че има и keyphrase, но той само забавя.
Точно така, сигурността на система е равна на сигурността на най-слабото и звено. Т.е. от системата ти ползвам виндовс за логин в линух всичко това е сигурно толкова, колкото е сигурен виндовс. Това обяснява и защо масово в българския интернет се набляга на ползване на пароли, измисляне на хубави пароли и почти не се използват ключове - защото изглежда всички ползват виндовс работни станции. Ключовете ти ще са подарък за всеки троян или снифър който се е промъкнал до виндовс-а. За да дам пример за обратното аз ползвам компютри изключително под линух, и паролите си ползвам само за да изпълня нещо със sudo. Всичко останало са логини, scp и sftp с ключ. Ключовата фраза не "само забавя", а се ползва най-вече в комбинацията със ssh-agent, който помни зададената фраза веднаж между две сесии или за определено време, след изтичането на което трябва да се въведе наново. През останалото време достъпа до сървърите става с ключа, запомнен от агента. Сигурността в случая е колкото е сигурен лаптопа ми (под убунту 10.04 в момента), съчетана с вероятността да го откраднат, защото не съм криптирал диска + крадецът му трябват моите ключове и данни, не лаптопа който да продаде и/или преинсталира.

На твоя въпрос криптиране на едно върху криптиране с друго - няма голям смисъл. Съвременните алгоритми на криптиране изискват години за пробиване на един ключ. Едва ли някой би заделил толкова ресурси за пробиване на твоя ключ, все пак не вярвам да работиш за Иранската ядрена програма, или швейцарска банка. Но мога да ти предложа вариант - ползвай парола за влизане през PuTTY до определен хост, така няма да има начин да ти откраднат ключа във виндовс. На този хост (jump point) си направи ключ, който да ползваш за логин към другите линух хостове, който да изисква хубава ключова фраза, и от него работи с ssh-agent и ssh key forwarding - много по-лесно, бързо и удобно е. Погледни какво сме обсъждали също в този пост: http://www.linux-bg.org/forum/index.php?topic=41517.0 Следващия сайт е чудесно описание за ssh key forwarding: http://unixwiz.net/techtips/ssh-agent-forwarding.html  А идеалният случай - откажи се от виндовс на работната станция :D
Активен

http://webchat.freenode.net/?channels=ubuntu-bg
The quieter you become, the more you are able to hear.
Две седмици цъкане с мишката спестяват два часа четене на документацията.

DarkLordTed

  • Напреднали
  • *****
  • Публикации: 29
    • Профил
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #6 -: Jan 01, 2012, 02:12 »
Още веднъж благодаря на всички ви!
ЧЕСТИТА НОВА ГОДИНА !
Ще прочета малко повече за XEN (защото срам не срам - никога не съм го чувал) Освен това ще прочета примера за chroot jail-а който ми е пратил dejuren както и по-подробно постингите в ssh attack - аз го бях прегледал преди време, но отгоре отгоре и не до края. И ако има нещо друго ще пиша извинявам се за офтопика, но все пак ми се искаше да ви благодаря!
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #7 -: Jan 01, 2012, 03:18 »
Първо, ЧНГ.

Цитат
Това би означавало, че Линукс-а ми дефакто става толкова защитен колкото и Windows-а защото пробие ли някой Windows-a ще достигне и до ключа за Linux-a. Вярно, е че има и keyphrase, но той само забавя.

Забавя, забавя, ама колко да забавя. John the ripper примерно на моята машина (quad-core phenom2, 3.2GHz) го троши с около 130 хиляди опита в секунда. Това е доста малко. Абсолютно непрактично за bruteforce-ване от страна на един индивид или някаква малка/средно голяма организация. Ако си избереш хубав passphrase, мисля нещата ще са наред.

Цитат
Затова се питах има ли начин системата да работи както си работи без ключ и върху криптирането което има когато се ползва парола да се насложи това за ключ. Тоест примерно имам connection криптирана с AES примерно и с парола и върху това да може да се подсили с вторично криптиране например с 3DES което е да речем вече зависещо от ключа.

Мисля, че малко омесваш понятията. SSH е чуден протокол, доста комплексен. Целите, които гони са няколко, не само конфиденциалност на връзката (която се постига със симетрична криптография, като например AES), но и защита против MiTM атаки (която се постига чрез HMAC стойности към всеки пакет) - и в случая когато ползваш ключове - цели и сигурна автентикация. Тези трите са съвсем отделни неща. Конкретният проблем с автентикацията няма да се реши ако решиш да криптираш връзката с още един симетричен алгоритъм с различен (споделен) ключ. Първо, ако толкова държиш да си имаш още един механизъм за автентикация със споделен ключ, няма нужда да криптираш връзката с него - има си challenge-response механизми. Но и при това положение, твоят проблем не се решава - ако някой ти хакне windows машината, нищо не му пречи да ти инсталира keylogger и да разбере това което въвеждаш. За проблемът, който бориш има други решения - примерно онези token-и на RSA Security, или пък някаква биометрия. Всичко това струва пари и време и надали целта оправдава средствата в твоя случай.

Цитат
За съжаление не мога да си позволя излишен разход на RAM памет. Добре де аз по друг начин но все пак мисля, че намерих кое къде е. Принципно къде може да се намери хубав пример за това как се прави jail от който ама наистина няма как да се излезе?

chroot jail-а на практика не води до особено повишени изисквания към RAM паметта. Към мястото на харддиска евентуално, защото може да се наложи да копираш определени библиотеки или изпълними файлове в jail директорията.

chroot също така никога не е бил замислян с идеята да бъде security мярка, странно колко хора вярват в обратното. Ако се сдобиеш с root права, ще "излезеш" и това е почти неминуемо. Ако става въпрос за някаква публична услуга те съветвам да използваш дистрибуция, която интегрира някакво MAC решение като SELinux или Apparmor относително успешно (последното за да си спестиш страшно много усилия). Няма да минеш без доста пипане, особено ако става въпрос за уеб приложение, но това е далеч по-добро решение. Идеята да не можеш да ходиш извън някаква директория, не е много добра по отношение на сигурността - защото сама по себе си не те ограничава какво _можеш_ да правиш в рамките на jail-а. И пак казвам - има доста начини да излезеш оттам сдобиеш ли се с root-ски права. Най-простият е да mount-неш procfs някъде - оттам можеш да ходиш във всяка текуща директория на всеки процес, без значение дали е jail-нат или не.



« Последна редакция: Jan 01, 2012, 03:21 от gat3way »
Активен

"Knowledge is power" - France is Bacon

DarkLordTed

  • Напреднали
  • *****
  • Публикации: 29
    • Профил
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #8 -: Jan 02, 2012, 01:08 »
Цитат
Забавя, забавя, ама колко да забавя. John the ripper примерно на моята машина (quad-core phenom2, 3.2GHz) го троши с около 130 хиляди опита в секунда. Това е доста малко. Абсолютно непрактично за bruteforce-ване от страна на един индивид или някаква малка/средно голяма организация. Ако си избереш хубав passphrase, мисля нещата ще са наред.

Цитат
... ако някой ти хакне windows машината, нищо не му пречи да ти инсталира keylogger и да разбере това което въвеждаш.

Навярно си прав. Имах спомен, че е възможно да се пробие, но не намерих нищо в нет-а по този въпрос и може да съм в грешка. Така или иначе поради редица причини при мен keylogger-a е малко по-безопасният сценарии.

Цитат
chroot jail-а на практика не води до особено повишени изисквания към RAM паметта. Към мястото на харддиска евентуално, защото може да се наложи да копираш определени библиотеки или изпълними файлове в jail директорията.

Не си ме разбрал правилно това за RAM-паметта беше свързано с предложението на dejuren

Цитат
По въпроса за chroot не мога да ти помогна, но мога да ти дам друга идея - виртуализация на машините, една виртуална отива за Apache, една за MySQL и т.н.

А що се отнася до това:
Цитат
chroot също така никога не е бил замислян с идеята да бъде security мярка, странно колко хора вярват в обратното. Ако се сдобиеш с root права, ще "излезеш" и това е почти неминуемо.

Чел съм тази статия
http://www.linux-bg.org/cgi-bin/y/index.pl?page=news&key=396990685

и добре знам, че chroot по принцип НЕ е средство за сигурност. Но от друга страна съм чел и тази

http://www.linuxsecurity.com/content/view/117632/49/

, а в нея се казва:

if there is no root user defined within the chroot environment, no SUID binaries, no devices, and the daemon itself dropped root privileges right after calling chroot() call (like in the code below), breaking out of chroot appears to be impossible.

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

DarkLordTed

  • Напреднали
  • *****
  • Публикации: 29
    • Профил
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #9 -: Jan 02, 2012, 01:46 »
Извинявам се, че пак пиша, но чак сега се сетих да попитам. На много места където пише за Apache Chroot Jail има примери как това може да се постигне с помоща на mod_chroot. С него изглежда доста по-лесно, но аз съм свикнал, че обикновено когато нещо е лесно то не е най-добрият вариант. Та да попитам какво представлява този mod_chroot може ли да се изгради сигурен chroot jail за apache с него или най-добре човек сам да си се мъчи да си натъкми всичко?
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #10 -: Jan 02, 2012, 01:56 »
Цитат
if there is no root user defined within the chroot environment, no SUID binaries, no devices, and the daemon itself dropped root privileges right after calling chroot() call (like in the code below), breaking out of chroot appears to be impossible

Статията въобще не разглежда варианта да качиш и изпълниш някакъв kernel експлойт, който ти дава въпросните root-ски права.  Сега не казвам, че няма да направиш живота на атакуващите по-сложен, но не разчитай на това. Дори и да не стане така, има един сериозен проблем ако лошият може да качва и изпълнява binaries в chroot-натата среда - въпросните могат да отварят сокети. Това твърде вероятно ще ти bypass-не повечето firewall правила. Ако става въпрос за уеб приложение и атакуващият се сдобие с достъп до mysql базата и има късмет да има и FILE привилегии, ще може да чете и пише файлове извън chroot-а (точно от това аз лично съм се възползвал в рамките на една новогодишна изненада за едни хора отдавна, когато толкова ми е бил акъла ).

Сега от друга страна нищо не ти пречи и да считаш, че chroot-ването на разни публични услуги ще ти върже гащите, вероятно ще откаже доста хора да си играят, но аз поне не бих разчитал само на това.
Активен

"Knowledge is power" - France is Bacon

n00b

  • Напреднали
  • *****
  • Публикации: 1248
  • Distribution: OSX
  • Window Manager: 10.6, 10.8, 10.9
  • Live to hack, hack to live.
    • Профил
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #11 -: Jan 02, 2012, 02:08 »
Като наскоро изпатил си от подобна гимнастика - не митологизирай jail-a и chroot-a.

Всичко може да се хакне - просто малко повечко опити и/или късмет (едното не зависи от другото).

За debian гледам има туул за целта:
http://wiki.debian.org/Debootstrap

А аз навремето намерих подобен такъв:
http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/

Скрипта ти прави отделен chroot и ти слага всичко вътре.

---

И сега отделно - ако това не те отказа досега си помисли как само ще обновяваш системата, или ще качваш нови пакети. Не е проблем да се подкара, но си представи че утре PHP цъфне с нова версия и как ще подкараш на вече работещия chroot новия пакет (нови зависимости, библиотеки и цял нов набор от проблеми).
Активен

mobilio - професионални мобилни приложения

DarkLordTed

  • Напреднали
  • *****
  • Публикации: 29
    • Профил
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #12 -: Jan 02, 2012, 12:25 »
Пак казвам аз не разбирам от Линукс и не знам дали не говоря пълни глупости, но си представях нещата по следният начин. Мислех, си че мога да направя jail в него да поместя Apache, MySQL и PHP. Да забраня достъпа за писане с изключение на MySQL файла касаещ базата. Също така си мислех, че мога да пусна кронов процес който на известни интервали прави копия на базата данни извън jail-a и проверява за промени файловете в jail-a (всички, без MySQL файла касаещ базата включително сайтовете) и ако има такива вдига тревога, създава копие на променените файлове извън jail-a за анализ на проблема. Автоматично подновява всичко в jail-а като за MySQL базата данни би трябвало да се погрижа аз. Също така се надявах, че това няма да пречи на нормалната ми работа през ssh-а. Пак казвам не знам дали съм прав в предположенията си - просто от това което знам останах с такова впечатление.

Цитат
Статията въобще не разглежда варианта да качиш и изпълниш някакъв kernel експлойт, който ти дава въпросните root-ски права.
Понеже явно не съм в час - има ли начин ако лошият се е докопал до root нещо да го спре? Аз бях решил, че стигне ли до там битката е загубена. И затова честно казано дали ще ми падне jail-a след това въобще не съм се интересувал.

Добре де ако jail-a не става дайте друга идея освен виртуализацията - нея така и така ще я разгледам като възможност. Искам просто като направя сървъра и да си заспи - да нямам по него какво да правя повече - освен да актуализирам разни PHP и HTML файлове и базата. Като портове на този етап всичко е затворено с изключение на 80-ти за Web-а. Дайте идея как да стане ама наистина брониран. Очевидно, е че в интернет е пълно със сървъри и те все някак работят без да ги рутят.
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Два въпроса за Ubuntu Apache Jail & OpenSSH
« Отговор #13 -: Jan 02, 2012, 12:53 »
Цитат
Понеже явно не съм в час - има ли начин ако лошият се е докопал до root нещо да го спре? Аз бях решил, че стигне ли до там битката е загубена. И затова честно казано дали ще ми падне jail-a след това въобще не съм се интересувал.

Дам, има. В SELinux, всеки процес си има контекст. Примерно apache сървъра ти работи като httpd_t. Ако файловата система ти е правилно label-ната, няма почти никакво значение с какъв uid работи apache процеса, няма да може да пипа файлове които не трябва да пипа. Дори да качиш някакъв PHP шел, да изпълниш някакъв експлойт, който ти ескалира правата до root-ски, контекстът ти продължава да е httpd_t. Примерно няма да можеш да четеш и пишеш в /etc/shadow, въпреки че имаш root-ски привилегии и файла е writable от root. Няма да можеш да трепеш/стартираш демони, няма да можеш да подменяш разни binaries в /usr/bin примерно. Имаш root-ски права, но не можеш да правиш нищо с тях.

Всъщност, със SELinux можеш да стигнеш и по-нататък. Има грубо казано "targeted" и "strict" policy-та. Обикновено хората ползват targeted policy където системните услуги работят в някакъв ограничен контекст и не могат да правят повече, отколкото им е нужно. Strict policy-тата confine-ват и потребителите, които се логват на системата. В този случай можеш да си преправиш policy-то така че root-ския акаунт да е абсолютно обезправен, да не може нищо да се прави през него, докато някакъв обикновен акаунт да е супер-господ и да може да прави всичко на системата - практическата стойност от това не е особено голяма, но е забавно как някой ще отдели сума ти време за да се сдобие със заветните root права и да установи че не може да направи нищо с тях.

Моят подход към SELinux (аз далеч не съм експерт и гледам да го направя по най-лесния начин) е да го ползвам на базата на дистрибуция, където е интегрирано относително успешно - примерно CentOS и на базата на това да си модифицирам нещата и да си променям label-ите по файловата система както ми изнася. В Debian също са се опитвали да го интегрират, но доста по-неуспешно.

Иначе не става без пипане. Примерно искаш да имаш PHP приложение, което се връзва до mysql база през TCP сокет. По дефолт такова нещо не е предвидено, трябва изрично да позволиш на httpd_t да ти отваря изходящи връзки на този порт.
« Последна редакция: Jan 02, 2012, 12:56 от gat3way »
Активен

"Knowledge is power" - France is Bacon

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
mod_security + chroot jail
Настройка на програми
Emooo 2 1310 Последна публикация Jan 08, 2005, 21:26
от Emooo
user в chroot jail
Хардуерни и софтуерни проблеми
Pulear 7 2560 Последна публикация Mar 05, 2006, 16:56
от Pulear
Openssh-server - не мога да го намеря под ubuntu 7
Настройка на програми
senser 4 1896 Последна публикация May 18, 2007, 16:47
от senser
как да stunnel или openssh мозила
Настройка на програми
bra337 20 5604 Последна публикация Jun 15, 2009, 15:02
от gat3way
"Включване" на MySQL в jail на apache
Настройка на програми
Breakfist 10 2202 Последна публикация Aug 11, 2010, 17:22
от romeo_ninov