Почему не следует / var / www иметь chmod 777

60

При разработке страницы на локальном хосте иногда возникает ошибка «Разрешения на отказ», которую я могу решить, запустив chmod -R 777 /var/www . Однако люди говорят мне, что это плохая идея по соображениям безопасности.

Почему у /var/www нет chmod из 777?

    
задан Luis Alvarado 05.01.2011 в 02:03
источник

2 ответа

72

777 - это плохое разрешение в целом, и я покажу вам, почему.

Несмотря на то, что он может выглядеть в казино или в Лас-Вегасе, 777 не означает, что вы получите джекпот. Скорее, джекпот для тех, кто хочет изменить ваши файлы. 777 (и его уродливый двоюродный брат 666) разрешают разрешения на чтение и запись (а в случае 777 - Выполнять) на другие . Вы можете узнать больше о о том, как работают права доступа к файлам , но вкратце есть три группы разрешения: владелец, группа и другие . Установив разрешение 6 или 7 ( rw- или rwx ) для other , вы даете любому пользователю возможность редактировать и управлять этими файлами и папками. Обычно, как вы можете себе представить, это плохо для безопасности.

Вот мой пример:

[email protected]:~/Projects/AskUbuntu/20105$ cd ..
[email protected]:~/Projects/AskUbuntu$ chmod 0777 20105
[email protected]:~/Projects/AskUbuntu$ cd 20105/
[email protected]:~/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:32 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
[email protected]:~/Projects/AskUbuntu/20105$ touch test
[email protected]:~/Projects/AskUbuntu/20105$ chmod 0666 test 

Пока я создал папку и сделал файл с "плохими" разрешениями (777 и 666). Теперь я переключусь на другого пользователя и попытаюсь манипулировать этими файлами.

[email protected]:~/Projects/AskUbuntu/20105$ sudo su - malicious
[email protected]:~$ cd /home/marco/Projects/AskUbuntu/20105
[email protected]:/home/marco/Projects/AskUbuntu/20105$ ls
test
[email protected]:/home/marco/Projects/AskUbuntu/20105$ ls -lah
total 8.0K
drwxrwxrwx 2 marco marco 4.0K 2011-01-04 20:33 .
drwxr-xr-x 3 marco marco 4.0K 2011-01-04 20:32 ..
-rw-rw-rw- 1 marco marco    0 2011-01-04 20:33 test
[email protected]:/home/marco/Projects/AskUbuntu/20105$ touch bad
[email protected]:/home/marco/Projects/AskUbuntu/20105$ echo "OVERWRITE" > test 
[email protected]:/home/marco/Projects/AskUbuntu/20105$ cat test 
OVERWRITE

Как этот "вредоносный" пользователь, я смог разместить файлы в каталоге и вставить текст в уже существующие файлы. Если ниже, в каталоге с 755 и файлами с 644, я могу видеть внутренние файлы и каталоги, но я не могу редактировать файлы и создавать новые:

[email protected]:/home/marco/Projects/AskUbuntu/20105$ cd /home/marco/Projects
[email protected]:/home/marco/Projects$ touch hey
touch: cannot touch 'hey': Permission denied

Для разрешений Apache вы захотите придерживаться 0755 и 0644 (AKA umask 022 ) для папок и файлов соответственно. Это позволяет вам, как владельцу файлов, редактировать и манипулировать ими, предоставляя Apache минимальные уровни доступа, необходимые для работы.

    
ответ дан Marco Ceppi 05.01.2011 в 02:39
источник
12

По сути, наличие разрешений 777 не позволит вам взломать сам по себе, но если кто-то получит имя пользователя в любом месте, его можно использовать для эскалации разрешений и получения полного контроля над вашим компьютером. Хуже всего то, что ваши разрешения используют «7» - это означает разрешения на чтение, запись, и выполнение .

Предположим, что хакер хочет захватить ваш компьютер. Он может подключиться к вашему компьютеру с помощью веб-браузера, подключившись к ссылке . Если у вас есть доступные страницы, позволяющие ему загружать изображения, он может переименовать исполняемый файл, чтобы завершить его с помощью «.jpg» и загрузить его на свой сервер. Теперь он просматривает этот файл в своем веб-браузере и запускает его, потому что linux не заботится о расширении, он видит только, что это исполняемый файл. Это может не получить его много, но из-за того, что он работает вообще, он знает, что он работает как пользователь Apache. Затем он загружает измененную версию, которая будет редактировать файлы конфигурации apache, предоставляя ему еще больший доступ - скажем так, что apache выводит содержимое / etc / passwd. Затем он может использовать эту информацию, чтобы узнать, какие пользователи существуют в системе. Затем он может подключиться с помощью ssh и пробовать общие пароли для входа в систему в качестве этих пользователей. Если это не сработает, он активирует атаку полной грубой силы. Если он попадает в качестве пользователя с доступом sudo, то вся система принадлежит ему.

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

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

ответ дан ImaginaryRobots 29.10.2012 в 18:39