0
<< предыдущая заметкаследующая заметка >>
10 января 2011
Пездец -rw-r--r--

Ставили тут Юстасу движок, страху натерпелись, пока разобрались...

Ну, во-первых, тамошний хостинг вешался глухо, увидев в .htaccess безобидные строчки:
php_flag session.use_trans_sid off
php_flag session.use_cookies on

Ладно, удалили строчки.

Потом начался другой цирк. Известно, что некоторые хостинги не исполняют файлы, потому что по умолчанию у них не те права. При этом владелец-скрипт PHP может писать файлы, которые не сможет прочесть простой посетитель, потому что скрипт php — это один владелец, а WWW — другой, а файлы залитые по ftp — вообще владелец ftp. Я встречал и такое. Поэтому движок при записи файла поправляет права на 666 -rw-rw-rw-

Но хостинг Юстаса по параноидальности превзошел всех: там НЕ ИСПОЛНЯЮТСЯ файлы, для которых разрешена запись группы. То есть, после установки движка пришлось вручную править 666 на 644 -rw-r--r-- ! А на папки, соответственно, -rwxr-xr-x. При этом хостинг не волнует, какие PHP делает include — речь только о файле обращения. А это index.php, все аяксу и т.п.

Но и это не предел! Как известно, PHP имеет библиотеку работы с графикой GD, которая записывает картинки функцией imagejpeg(); Ну вот скажите, кому бы в голову могло прийти, что эта функция в той конфигурации сервера пишет на диск картинку, которую будет невозможно открыть браузером, потому что атрибуты у нее -rw


? Это что, я должен бегать даже за всеми функциями PHP и везде проставлять после них атрибуты?

И что самое интересное — эта серверная паранойя никогда еще никого не спасала от взлома. Потому что если взломщику удалось через баги программиста записать что-то на диск — то он найдет способ и права изменить. А скорее всего просто пароль от ftp взломщик угонит.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Windows Firefox
13
0
TOPMO3
Как по мне, так я бы отрывал гонады любому автору любого движка, который принудительное проставляет всем файлам "три шестёрки"/rw-rw-rw- и не предупреждает об этом аршинными буквами. Вот именно за два последних 'w' отрывал бы. Потому что право записи в файлы на своём аккаунте должен иметь право только авторизованый хозяин (или от его имени - движок через механизмы suexec), а вовсе не любой встречный. Иначе на многопользовательском сервере ничего не подозревающих пользователей могут ожидать неприятные сюрпризы (когда любой обладатель шелловского или фтп доступа может потереть/поменять чужие файлы).

Поэтому движок по умолчанию должен ставить вменяемые rw-r--r--, и никак иначе. А для сложных случаев хостинга надо предоставлять удобную конфигурационную настройку:
# Создавать новые файлы с такими атрибутами:
$new_user =        # если пусто, то использовать UID хозяина
$new_group =       # если пусто, то использовать GID хозяина
$new_permissions = 644     # если пусто, то использовать 644
Windows Safari Chrome
0
0
{name}
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
о сколько нам открытий чудных готовит просвещенья дух
Windows Firefox
2
0
Andrew N Golovkov
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
команда umask должна решить все проблемы.
Linux Firefox
 Москва
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Как именно? Напишите точный пример.
Mac Safari Chrome
6
0
Alex Semenyaka
Категорически не соглашусь. Вот как раз надежда на одни надежные ворота, за которыми делай что хочешь - вот она как раз приводила к взломам неоднократно. Именно по причине отсутствия эшелонированной защиты - "у нас замОк хороший".

Любимая моя история на эту тему - это падение GlasNet в конце 90-х. Провайдер не работал несколько дней, судорожно собирая из backupов то, что было можно - на дисках несколько добрых человек из разных стран почти одновременно выполнили команду rm -rf / . А возможно это стало потому что сначала из-под restricted shell оказалось возможным запустить редактор, из которого можно было выйти в нормальный shell, потом у паролей не оказалось shadow, потом пароль rootа оказался подбираем перебором, и, наконец, рутом можно было зайти удаленно. Не будь ЛЮБОГО из этих ляпов - провайдер бы не лег.

И уж совсем ужасно выглядят последние rw, для всех. ЭТО ЧТО?! ЗАЧЕМ ОНО?? Ну нужно тебе, чтобы разные пользователи могли читать-писать - так для этого группы и придуманы. Вот ровдо для решения этой задачи. Создается группа, куда помещаются все, кто должен читать-писать, и ей даются права rw. А право rw для "остальных" - это та же дырка, что в вышеописанной истории GlasNet. Ровно та же самая: возможность прочитать файлы с хешами. Ну почти 15 лет прошло, не надо на те же грабли-то?

А так получается, что любой, кто попал на машину (через дырку в почтовой системе, например) - сразу же все и получил. Очень удобно.
Linux Firefox
 Москва
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Проблема в том, что на разных системах (как мне помнится) разные пользователи: FTP - один, PHP - другой, WWW-посетитель - третий.

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

Если есть универсальное решение - я его не знаю, подскажите.

Решение "правильно" конфигурировать сервера или "верно прописывать группы" не годится: идеальное решение - это добиться от движка живучести на всех возможных вариантах конфигурации.

Из инструментов: видимо, я могу средствами PHP бегать и устанавливать правильные права, а также указывать всякие umask().

Но вот как поступить правильно - это я пока не знаю.
Windows Firefox
0
0
{name}
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Что касается первой проблемы
> instal.php, залитый пользователем по FTP, невозможно обновить до новой версии средствами PHP
здесь самый гибкий способ - считать, что, если у скрипта нет доступа на запись файла (по каким бы то ни было причинам), значит пользователь не хочет, чтобы скрипт его менял. Соответственно, обновлялка должна проверять права и выдавать пользователю список: такие-то файлы я обновлю, а до таких-то нет доступа, поэтому я их обновлять не буду, а если хотите, чтобы эти файлы обновлялись, поправьте права.
Linux Firefox
 Москва
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Нет, мы исходим из концепции, что у админа вообще нет доступа (или навыков), кроме как через веб-админку. Админу дали хостинг, и положили в корень install.php. Дальше - все сам через веб.

В этой концепции необходимо придумать способ, чтобы все работало.
Mac Safari
0
0
Павел
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Если нет прав на запись файла, но есть право на запись в каталог, можно файл удалить и создать новый. Более того: сначала создать новый файл с временным именем а потом переименовать его в настоящее имя - это и правильнее, чем изменять уже имеющийся файл, потому что в этом случае не будет момента, когда пользователь увидит кривой (недоизменённый) файл, старая версия на новую будет меняться атомарно.

Кроме того, чтобы php выполнялся от имени владельца сайта, а не от веб-сервера, можно попробовать использовать php-cgi вместо mod_php.
Linux Ubuntu Firefox
1
0
Andrey Pozdnyakov
Баян.
И про права доступа:
http://lleo.aha.ru/blog/2010/12/07.html#4443
и про флаги в php.

Так проблема решилась в итоге? Будет роботать теперь, если обновиться?
Linux Firefox
 Москва
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Я пока не знаю, как решить эту проблему со стороны движка.

Разумеется, пользователь может вручную установить права на своем хостинге.
Windows Opera
0
0
tupitochka
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Пока что я после каждого обновления правлю права вручную через FAR.
Linux Ubuntu Firefox
0
0
Andrey Pozdnyakov
Я тоже так делал, но вот в последний раз не сработало.
Так какие права на какие папки и файлы нужно ставить?
Linux Firefox
 Москва
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
От хостинга зависит... Видимо, как я писал выше.
Windows Opera
0
0
vovse_ne
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Блин, вы меня пугаете! У меня пока всё работает... Что я делаю не так?..
Windows Safari Chrome
0
0
tupitochka
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
На все что обновились (их список есть обычно в файле)
как сказано выше это аяксы и пхп.
Проще не морочиться и пройтись по всем))
ФАР же позволяет групповую обработку.
А надо это или нет - зависит от конкретного хостинга.
Кто-то остается в счастливом неведении этой проблемки.
Linux Firefox
1
0
Владимир Соболь
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Компания Adobe заявила о том, что собирается добавить в свой продукт, Flash Player, средство лёгкого удаления Cookie-идентификаторов. Cookies, генерируемые этой программой, могут быть использованы злоумышленниками для отслеживания истории перемещений пользователя по интернет-страницам в браузере.
http://www.linux.org.ru/news/commercial/5792042
Linux Firefox
 Москва
0
1
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Осталось только понять, в чем "злой умысел" таких злоумышленников ;)
Windows Opera
0
0
Zulkar
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Леонид, кстати у вас на сайте забавный глюк. Нажимаю "подтвердить адрес email" выскакивает табличка

Fatal error: /dnevnik/ajax/login.php
Запрос на *****@gmail.com отправлен

мэйл пришел, все хорошо но забавно немного ))
Linux Firefox
 Москва
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ну пришел же.
Windows Opera
0
0
vovse_ne
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А у меня другая боль, простите, просто наболело. Хостер одного из моих сайтов считает файлы .htaccsess полной своей собственностью, и когда я его полностью делаю под себя, они, ежу понятно, запускают обновление и переписывают сей файл... Я забодалась бодаться с техподдержкой!.. Вот ей-богу, кончится оплаченный год, сбегу.

А, чуть не забыла. Права при обновлених ставятся по умолчанию те, что были изначально. Я заманалася. :(
Linux Firefox
 Москва
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А как они это объясняют? Может, они и страницу index.html начнут на сайтах клиентов перезаписывать дефолтной?
Windows Opera
0
0
{name}
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Часом не Adamant, г. Киев?
Пытался хостеру менеджер паролей простой прикрутить (на .htacces/.htpasswd) -- в итоге после волшебной переписки по поводу недоступности .htaccess-файлов пришлось от клиента отказаться (у них ещё и сервера раз в час перезапускаются, т.е. раз в час недоступно ничего некоторое время).
Windows Opera
 Европа
0
0
nisk
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Опыта нет никакого, стало интересно, аэгобогд.рф в нынешнее сосояние (дефейс, специально не восстанавливал) пришёл по вине меня, движка или plusweb? движок не обновлялся с декабря-января.
Linux Firefox
 Москва
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
1. Я никогда не слышал про такой сайт. Он был на моем движке?

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

3. Можно взломать практически любой сайт, украв пароль админа или авторизацию из его браузера. В этом смысле у меня Линукс, поэтому я не делал никаких специальных мер против кражи админского пароля (напр. требования логиниться заново при каждом сеансе и т.п.).
Linux Opera
 Европа
0
0
nisk
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
>Он был на моем движке?
да

>Думаю, если бы уязвимость была, о ней я бы узнал первым
>на своем дневнике - есть достаточное количество людей,
>считающих честью его взломать.
Это обнадёживает :)

>Можно взломать практически любой сайт, украв пароль
>админа или авторизацию из его браузера.
Может быть. Там заменён index.php и добавлены index.html и htm, больше ничего. В логе апача есть один запрос от турецкого телекома, в логе ftp нет ничего.
В любом случае, там нет ничего важного или просто нужного :)
Правда, так же дефейснули ещё один сайт на том же движке. Третий не тронут, ибо в интернете нигде пока не упоминается. Думаю, косяк безопасности у хостера. Надо на свой сервер переезжать :)
Linux Opera
 Европа
0
0
nisk
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Да, забыл добавить важное: второй дефейснутый сайт на том же хосте.
Грешу на хостера, но разбираться влом. Сюда отписал на всякий случай...
Хостера взял первого попавшегося, надо было быстро склепать обменник, а потом по принципу "работает и ладно" зарегистрировал еще пару имён и разместил там же, благо нагрузка нулевая.
Linux Firefox
 Москва
0
0
LLeo
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А остальные (чужие) страницы того же хостера без изменений?
Linux Opera
 Европа
0
0
nisk
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
>А остальные (чужие) страницы того же хостера без изменений?
Не в курсе, к сожалению.
Из моих псевдо-сайтов дефейснуты только 2, ссылки на которые есть в подписях на довольно популярном форуме. Остальные нигде не светил, они в порядке.

Завтра (сегодня) спрошу у суппорта, были ли проблемы у других.
Linux Opera
 Европа
0
0
nisk
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
http://www.zone-h.org/archive/ip=81.177.13.160/page=1
Так что с движком всё хорошо :)
Windows Opera
 Европа
0
0
nisk
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А вот диалог с саппортом:
Я: Это были проблемы сайтов или хостинга?
support: Проблемы сайтов - пострадали все кто ставил права 777.
Nokia-E90 Safari
 Москва
0
0
Леонит Каганофф
Прекрасный диалог, ящитаю. В мемориз.

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

всего комментариев: 32

<< предыдущая заметка следующая заметка >>