2009-02-26 4 views
2

У меня есть папка на моем сервере, на которой я изменил разрешения на 777 (читать, записывать и выполнять все), чтобы пользователи могли загружать свои фотографии.CHMOD и безопасность для каталогов на моем сервере

Итак, я хочу знать, каковы риски безопасности, связанные с этим?

Я внедрил код для ограничения того, какие форматы файлов могут быть загружены, но что произойдет, если кто-то найдет расположение каталога, может ли это представлять угрозу для моего сервера?

Можно ли начать загрузку любых файлов, которые они желают?

Спасибо.

+0

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

+0

Благодарим вас за то, что вы пестализировали мою кодировку, но она действительно не отвечает на вопрос. Файлы будут загружены через форму, созданную на php-странице. Вопрос был в том, чтобы выяснить, можно ли оставить набор каталогов с разрешением 777? –

+0

обновите вопрос с этой информацией – hop

ответ

0

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

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

+0

Привет, самоз, спасибо за ответ. Когда он говорит пользователь/группа, а затем все - кто подпадает под какую группу? Я предполагаю, что я владелец? –

+0

Что делает флаг eXecutable в каталоге, связанный с маскировкой исполняемых файлов в качестве изображений? – hop

+0

также что означает исполняемый файл, как при выполнении программ? –

-1

Вы не хотите, чтобы исполняемый бит включался. Поскольку * nix идет, исполняемый бит означает, что вы действительно можете запустить файл. Так, например, php-скрипты могут быть загружены как тип JPEG, а затем кто-то может запустить этот скрипт, если они знают местоположение и находится в веб-каталоге.

+0

Права доступа к папке: 777 - необязательно права доступа к файлам. Я согласен, что файлы вообще не нужны. папки делают, поскольку вы не можете получить доступ к файлам внутри без разрешения на выполнение (поиск). –

1

Какими способами эти пользователи загружают свои изображения? Если это через Интернет, вам нужно только предоставить веб-серверу или пользователю сценария CGI доступ к папке.

Самая большая опасность заключается в том, что пользователи могут перезаписывать другие файлы пользователей или удалять другие файлы пользователей. Никто, у кого нет доступа к этой папке, сможет написать (если у вас нет своего гостя/анонимного пользователя).

Если вам нужна директория, в которой каждый может создавать файлы, то вы хотите имитировать разрешения каталога/tmp.

$ chown корень: корень dir; chmod 777 dir; chmod + t dir;

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

В отличие от других, исполняемый бит в каталоге в системах unix означает, что вы можете сделать этот каталог текущим каталогом (cd к нему). Это не имеет никакого отношения к выполнению (выполнение каталога бессмысленно). Если вы удалите исполняемый бит, никто не сможет «cd» к нему.

+0

Не совсем верно в каталоге x-bit, но достаточно близко. – paxdiablo

+0

Я знаю, что chdir() не будет работать с EACCES, если dir -x. Это может контролировать другие вещи? –

+0

Благодарим вас за ответ. Пользователь будет загружать через форму в php-документе. Когда вы говорите без доступа к этой папке, теоретически любой, у кого есть учетная запись на моем веб-сайте, будет иметь доступ к загрузке фотографий? Кто подпадает под категорию гостя/анонимного пользователя? Спасибо за вашу помощь –

3

Когда пользователи загружают файлы на ваш сервер через веб-форму и некоторый скрипт PHP, доступ к диску на сервере происходит с идентификатором пользователя, на котором работает веб-сервер (обычно это никто, www-data, apache, _httpd или даже корень).

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

Поскольку местные пользователи не обращаются к системе с помощью других средств (например, ssh), установка разрешений каталогов выгрузки на 0777 не составит большого значения - приложение от кого-то, использующего уязвимость безопасности в другом месте в вашей системе нет никого, к кому в любом случае применяются разрешения, и такой атакующий, вероятно, просто использовал бы /tmp.

Всегда рекомендуется устанавливать только те разрешения на файл или каталог, которые действительно необходимы. В данном случае это означает, что, вероятно, что-то вроде:

drwxrws--- 5 www-data www-data   4096 Nov 17 16:44 upload/ 

Я предполагаю, что другие локальные пользователи, кроме веб-сервер будет хотеть, чтобы получить доступ к этим файлам, как сисадмин или веб-дизайнера. Добавьте этих пользователей в группу, на которой работает ваш веб-сервер, и им не нужны sudo или привилегии root для доступа к этому каталогу. Кроме того, +s означает, что новые файлы и каталоги в upload/ будут автоматически принадлежать одной и той же группе.

Что касается вашего последнего вопроса: просто потому, что злоумышленник знает, где находится каталог, не означает, что он может волшебным образом создавать файлы там. Там все еще должен быть какой-то сервис, который принимает файлы и хранит их там ... поэтому нет, установка разрешений на 0777 не делает его менее безопасным.

Тем не менее, есть еще несколько аспектов, чтобы «безопасность» и «безопасность», что вы не можете обращаться с правами доступа к файлам во всей этой установке:

  • закачивающих еще может перезаписывать друг друг файлы, потому что все они работают с тот же идентификатор пользователя
  • кто-нибудь может загрузить вредоносный скрипт в директорию загрузки и запустить его оттуда, возможно, использовать другие уязвимости в системе и получить доступ корневой
  • кто-то может использовать сервер для распространения детской порнографии
  • кто-то может запустить фишинговый сайт с вашего сервера после того, как вы выберете внешний вид paypal.com.

... и, возможно, больше. Некоторые из этих проблем, которые вы, возможно, рассмотрели в своем сценарии загрузки, но опять же, понимание прав доступа к файлам unix и их применение, как правило, начинается с самого начала при изучении проблем безопасности, что показывает, что вы, вероятно, еще не готовы решать все проблемы возможных проблем.

У кого-то есть код?

+0

Благодарим вас за эту замечательную должность, мне 19 лет и я только кодировал PHP в течение 9 месяцев - я не пытаюсь использовать это как оправдание, хотя, я просто никогда не понимал, в какой степени безопасность идет, но ее намного больше, чем я думал. Спасибо, у меня есть много исследований! –

+0

ooo и еще одна вещь, касающаяся загрузки пользователем php-файла malicousa. Знаете ли вы, какие хорошие способы я могу предотвратить? было бы очень полезно! еще раз спасибо. –

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^