Почему в / var / www не должно быть chmod 777?

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

Почему бы /var/www не иметь chmod 777?

68
задан 10 October 2013 в 06:41

2 ответа

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

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

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

marco@desktop:~/Projects/AskUbuntu/20105$ cd ..
marco@desktop:~/Projects/AskUbuntu$ chmod 0777 20105
marco@desktop:~/Projects/AskUbuntu$ cd 20105/
marco@desktop:~/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 ..
marco@desktop:~/Projects/AskUbuntu/20105$ touch test
marco@desktop:~/Projects/AskUbuntu/20105$ chmod 0666 test 

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

marco@desktop:~/Projects/AskUbuntu/20105$ sudo su - malicious
malicious@desktop:~$ cd /home/marco/Projects/AskUbuntu/20105
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ ls
test
malicious@desktop:/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
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ touch bad
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ echo "OVERWRITE" > test 
malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cat test 
OVERWRITE

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

malicious@desktop:/home/marco/Projects/AskUbuntu/20105$ cd /home/marco/Projects
malicious@desktop:/home/marco/Projects$ touch hey
touch: cannot touch `hey': Permission denied

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

0
ответ дан 10 October 2013 в 06:41

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

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

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

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

0
ответ дан 10 October 2013 в 06:41

Другие вопросы по тегам:

Похожие вопросы: