Boris A Dolgov: А кто у Вас может выполнять что-то под nobody? Обычные пользователи не должны. Возможно, это дырявый phpMyAdmin и его надо обновить. rlimit и lve поможет снизить потребление ресурсов этими скриптами. Часто если открывать коннекты им запрещено, они начинают зависать в бесконечном цикле и потреблять cpu.
Ну... у меня еще есть пара серверов на которых все пользователи , а точнее их сайты из под nobody работают .... понимаю, что проблема больше в этом, нежели в самом noexec ;))) но все же :D
---------- Добавлено 23.09.2013 в 12:58 ----------
seolancer: Кажется я понял, в чем у Вас проблема. Все php-скрипты пользователей у Вас выполняются от пользователя апач. А скрипты у школоло обычно дырявые. И в результате Вы не можете найти того, кто запускает что-то из tmp. Если это так, то Вам нужно не tmp фиксить, а пользователей переводить на работу от своего имени, т.к. хакер может залить скрипт в любую директорию пользователя, у которой будет доступ на запись, а потом просто запустить скрипт с другим путем. Неужели не сталкивались со скриптами, у которых путь "/".
Сталкивались, только вот в "/" положить не могут точно, а в "/tmp" пожалуйста, вы правильно поняли в чем проблема. Я знаю путь решения с переводом всех на свои UID, но если бы это все было так просто как хочется, я бы даже тему не создавал, есть куча проектов, есть старое PHP , есть старый апач, который работает и работает и работает много лет, он конечно обновлен, но вот перейти сейчас просто на suPHP - будет весьма напряжно, надо будет во первых мильен прав расставить правильно что бы у всех все заработало, а во вторых надо будет пересборкой заниматься половины установленного, да и в общем-то не факт что потом после апгрейда того же php 5.2 -> 5.3 у всех будет все в порядке.... этот путь мне известен и у меня так работают почти все сервера.... но есть и другие :D
WapGraf: Romka_Kharkov, я описал конкретно только про perl, который упоминался ранее.
Возможно я и неверно понял суть задачи. Как правило с помощью noexec защищают временную директорию сервера, а не пользователя. Я так понял что речь идет об опасности, что пользователь может запускать не свое.
На каждого пользователя создавать noexec?
Вы вообще не услышали меня, еще раз поясняю, есть обычная папка /tmp В которую валятся сессии апача и прочее... прочее.... есть пользователи с ssh (и без него) доступом, допустим те кто с ним, вообще могут делать это без проблем, а те кто без доступа - заливают файл от имени апача....
Итого, при установленном noexec на раздел /tmp фиксируется только флаг +x .... но если запускать интерпритатор перл и передавать ему файл на вход, как показано в первом посте - noexec получается "за бортом"......
Для проверки сделайте следующее:
создайте /tmp/a.pl, потом установите на него 755, ну и ессесно смонтируйте /tmp с noexec после чего попробуйте от любого юзера выполнить сценарий путем cd /tmp ; ./a.pl , А после этого путем /usr/bin/perl /tmp/a.pl , вот тогда вы поймете о чем я . :)
---------- Добавлено 23.09.2013 в 00:59 ----------
Boris A Dolgov: Настраивать серверы так, чтобы запущенный perl-скрипт (как и бинарник, как и php-скрипт, как и пользователь в ssh) не мог никому навредить.
Закрыть в iptables коннекты на 25 порт не от почтового сервера и слишком много коннектов на чужие серверы, хранить пользователей в chroot/jail/cagefs, выделять им ресурсы через rlimit/cgroups/lve.
Конкретно в моем случае, есть нечто похожее, файрвол закрывает очень много на выход если не все, по этому запущенные демоны не представляют угрозы и не листят порты для хакеров, но они запущены и в данном конкретном случае фиг понятно от какого пользователя, так как любой от nobody заливает в /tmp и крутит там )))) я вот недавно сервер анализировал выловил штук 5 таких вот запущенных демонов, а не обратил внимание ранее именно по тому, что они ничего не могли листить и тому подобное, просто обратил внимание не процессы и полез посмотреть ))) а у меня в /tmp там уже набор "юного хакера" :)
Glueon - перечитайте что я написал, причем тут root ?
WapGraf - или я что-то не понял или вам тоже перечитать надо, клиент заходит например в ssh (который доступен) или заливает через веб файлик в /tmp, а потом его выполняет из под себя или из под апача... Ваш пример не совсем поясняет что произошло, я могу сейчас предположить в /tmp лежит файлик a.pl который принадлежит руту, так че вы его от юзера запускать пытаетесь?
Boris A Dolgov - а у вас какие есть предложения по сути вопроса?
vapetrov: Гм... Если злоумышленник имеет возможность запустить perl, то какая хрен разница, может ли он читать из tmp или откуда-то еще?
В этом случае он и без /tmp может сделать что угодно. В том числе и получить какой-то исполняемый код извне.
В принципе логично.... Выходит что noexec влияет только на +x в разделе куда он установлен... :(
foxi: Romka_Kharkov, вот и я не заметил разницы тестово гоняя 500к файлов по 100 мб локалке ) но безопаснее с главного коннеститься на второстепенные, чем на куче серверов класть ключи от главного сервера.
Капитан очевидность сегодня явно на отдыхе, вы спросили вообще-то о ресурсах
как лучше запускать, чтоб на главном сервере это потребляло меньше ресурсов?
я вам ответил.
А что касается безопасности, советую ознакомиться с настройками файла rsyncd.conf.
Многое, если не все, зависит от смысла этих данных. В случае компрометации сервера хоть так хоть так есть угроза...
Насчет ключей не совсем вас понял, вы еще ключи (rsa/dsa?) туда прикрутили как-то? Вы случайно rsync не запускаете от рута через ssh pipe :D ?
Потому как в том же rsyncd.conf , можно настроить "шару" таким образом, что она будет например read only, А так же можно жестко ограничить пользователей и IP адреса доступные в этой шаре. Покажите как вы используете rsync и что в конфигах есть.. интереСа ради :D Если сервера стоят рядом !!! рекомендую сразу делать 1G internal uplink
Оказывается хостер с какойто непонятной мне причины на всех сайтах поменял хтакцес на такой -
RedirectMatch .* /cgi-sys/suspendedpage.cgi
На мой взгляд - это вредительство в чистом виде, и в паре с откровенным игнорированием тех поддержки, это выглядит просто как издевательство.
Судя по тому, что я вижу, там cPanel, и данное явление в виде подмены .htaccess является следствием действия функции "Suspend", на своей практике я встречал следующие формы данной проблемы:
1. Акаунт был восстановлен из бекапа, а бекап был сделан в состоянии когда акаунт был "Suspended".
2. Иногда данное явление происходит в следствии какой-то внештатной работы с cPanel.
Но !!! В любом случае (за исключением отсутствия возможностей записи в раздел) у вас рядом с реальным .htaccess лежит файл типа .htaccess.suspended или .htaccess.$date.suspended (точно не помню).... Там находится оригинал вашего .htaccess на момент действия процедуры Suspend.
Ничего гигантского в плане производительности вы не получите, максимальный выигрыш, это ресурсы которые будут задействованы под каждый из потоков синхронизации, в случае запуска на одном сервере 4 таких процессов естественно на нем будет больше затрачено ресурсов нежели в ситуации когда каждый из серверов обратиться к нему, но на столько ли существенный прирост вы получите?
Из личного опыта могу сказать, что работаю с rsync на объемах в 10+ TRB, полет нормальный. В некоторых случаях правда для rsync внутренние линки. Есть схемы между прочим обоих направлений и при 5 заданиях с одного сервера и при 5 заданиях с разных серверов на один, пожалуй лишь удобство или "настроение при настройке" :) На производительность не думаю что влияет особо. :)
А кто у Вас может выполнять что-то под nobody? Обычные пользователи не должны. Возможно, это дырявый phpMyAdmin и его надо обновить.
rlimit и lve поможет снизить потребление ресурсов этими скриптами. Часто если открывать коннекты им запрещено, они начинают зависать в бесконечном цикле и потреблять cpu.
Ну... у меня еще есть пара серверов на которых все пользователи , а точнее их сайты из под nobody работают .... понимаю, что проблема больше в этом, нежели в самом noexec ;))) но все же :D
---------- Добавлено 23.09.2013 в 12:58 ----------
Кажется я понял, в чем у Вас проблема. Все php-скрипты пользователей у Вас выполняются от пользователя апач. А скрипты у школоло обычно дырявые. И в результате Вы не можете найти того, кто запускает что-то из tmp. Если это так, то Вам нужно не tmp фиксить, а пользователей переводить на работу от своего имени, т.к. хакер может залить скрипт в любую директорию пользователя, у которой будет доступ на запись, а потом просто запустить скрипт с другим путем. Неужели не сталкивались со скриптами, у которых путь "/".
Сталкивались, только вот в "/" положить не могут точно, а в "/tmp" пожалуйста, вы правильно поняли в чем проблема. Я знаю путь решения с переводом всех на свои UID, но если бы это все было так просто как хочется, я бы даже тему не создавал, есть куча проектов, есть старое PHP , есть старый апач, который работает и работает и работает много лет, он конечно обновлен, но вот перейти сейчас просто на suPHP - будет весьма напряжно, надо будет во первых мильен прав расставить правильно что бы у всех все заработало, а во вторых надо будет пересборкой заниматься половины установленного, да и в общем-то не факт что потом после апгрейда того же php 5.2 -> 5.3 у всех будет все в порядке.... этот путь мне известен и у меня так работают почти все сервера.... но есть и другие :D
Romka_Kharkov, я описал конкретно только про perl, который упоминался ранее.
Возможно я и неверно понял суть задачи. Как правило с помощью noexec защищают временную директорию сервера, а не пользователя. Я так понял что речь идет об опасности, что пользователь может запускать не свое.
На каждого пользователя создавать noexec?
Вы вообще не услышали меня, еще раз поясняю, есть обычная папка /tmp В которую валятся сессии апача и прочее... прочее.... есть пользователи с ssh (и без него) доступом, допустим те кто с ним, вообще могут делать это без проблем, а те кто без доступа - заливают файл от имени апача....
Итого, при установленном noexec на раздел /tmp фиксируется только флаг +x .... но если запускать интерпритатор перл и передавать ему файл на вход, как показано в первом посте - noexec получается "за бортом"......
Для проверки сделайте следующее:
создайте /tmp/a.pl, потом установите на него 755, ну и ессесно смонтируйте /tmp с noexec после чего попробуйте от любого юзера выполнить сценарий путем cd /tmp ; ./a.pl , А после этого путем /usr/bin/perl /tmp/a.pl , вот тогда вы поймете о чем я . :)
---------- Добавлено 23.09.2013 в 00:59 ----------
Настраивать серверы так, чтобы запущенный perl-скрипт (как и бинарник, как и php-скрипт, как и пользователь в ssh) не мог никому навредить.
Закрыть в iptables коннекты на 25 порт не от почтового сервера и слишком много коннектов на чужие серверы, хранить пользователей в chroot/jail/cagefs, выделять им ресурсы через rlimit/cgroups/lve.
Конкретно в моем случае, есть нечто похожее, файрвол закрывает очень много на выход если не все, по этому запущенные демоны не представляют угрозы и не листят порты для хакеров, но они запущены и в данном конкретном случае фиг понятно от какого пользователя, так как любой от nobody заливает в /tmp и крутит там )))) я вот недавно сервер анализировал выловил штук 5 таких вот запущенных демонов, а не обратил внимание ранее именно по тому, что они ничего не могли листить и тому подобное, просто обратил внимание не процессы и полез посмотреть ))) а у меня в /tmp там уже набор "юного хакера" :)
Чем помогут rlimit и lve ?
Glueon - перечитайте что я написал, причем тут root ?
WapGraf - или я что-то не понял или вам тоже перечитать надо, клиент заходит например в ssh (который доступен) или заливает через веб файлик в /tmp, а потом его выполняет из под себя или из под апача... Ваш пример не совсем поясняет что произошло, я могу сейчас предположить в /tmp лежит файлик a.pl который принадлежит руту, так че вы его от юзера запускать пытаетесь?
Boris A Dolgov - а у вас какие есть предложения по сути вопроса?
Гм... Если злоумышленник имеет возможность запустить perl, то какая хрен разница, может ли он читать из tmp или откуда-то еще?
В этом случае он и без /tmp может сделать что угодно. В том числе и получить какой-то исполняемый код извне.
В принципе логично.... Выходит что noexec влияет только на +x в разделе куда он установлен... :(
Можем прямо в Канаде разместить.
Тариф Light как раз под ваши нужны, 100 метров места, стоимость 1$.
Возможно размещение на разных серверах, разных IP.
А еще варианты :D ?
Хм, а я авторизацией самого Rsync пользуюсь, user/pass/ip + rsyncd ..
Romka_Kharkov, вот и я не заметил разницы тестово гоняя 500к файлов по 100 мб локалке )
но безопаснее с главного коннеститься на второстепенные, чем на куче серверов класть ключи от главного сервера.
Капитан очевидность сегодня явно на отдыхе, вы спросили вообще-то о ресурсах
как лучше запускать, чтоб на главном сервере это потребляло меньше ресурсов?
я вам ответил.
А что касается безопасности, советую ознакомиться с настройками файла rsyncd.conf.
Многое, если не все, зависит от смысла этих данных. В случае компрометации сервера хоть так хоть так есть угроза...
Насчет ключей не совсем вас понял, вы еще ключи (rsa/dsa?) туда прикрутили как-то? Вы случайно rsync не запускаете от рута через ssh pipe :D ?
Потому как в том же rsyncd.conf , можно настроить "шару" таким образом, что она будет например read only, А так же можно жестко ограничить пользователей и IP адреса доступные в этой шаре. Покажите как вы используете rsync и что в конфигах есть.. интереСа ради :D Если сервера стоят рядом !!! рекомендую сразу делать 1G internal uplink
Оказывается хостер с какойто непонятной мне причины на всех сайтах поменял хтакцес на такой -
RedirectMatch .* /cgi-sys/suspendedpage.cgi
На мой взгляд - это вредительство в чистом виде, и в паре с откровенным игнорированием тех поддержки, это выглядит просто как издевательство.
Судя по тому, что я вижу, там cPanel, и данное явление в виде подмены .htaccess является следствием действия функции "Suspend", на своей практике я встречал следующие формы данной проблемы:
1. Акаунт был восстановлен из бекапа, а бекап был сделан в состоянии когда акаунт был "Suspended".
2. Иногда данное явление происходит в следствии какой-то внештатной работы с cPanel.
Но !!! В любом случае (за исключением отсутствия возможностей записи в раздел) у вас рядом с реальным .htaccess лежит файл типа .htaccess.suspended или .htaccess.$date.suspended (точно не помню).... Там находится оригинал вашего .htaccess на момент действия процедуры Suspend.
Не за что 🍿
Ничего гигантского в плане производительности вы не получите, максимальный выигрыш, это ресурсы которые будут задействованы под каждый из потоков синхронизации, в случае запуска на одном сервере 4 таких процессов естественно на нем будет больше затрачено ресурсов нежели в ситуации когда каждый из серверов обратиться к нему, но на столько ли существенный прирост вы получите?
Из личного опыта могу сказать, что работаю с rsync на объемах в 10+ TRB, полет нормальный. В некоторых случаях правда для rsync внутренние линки. Есть схемы между прочим обоих направлений и при 5 заданиях с одного сервера и при 5 заданиях с разных серверов на один, пожалуй лишь удобство или "настроение при настройке" :) На производительность не думаю что влияет особо. :)