Почему в /var/www не должно быть chmod 777?
При разработке страницы на локальном хосте я иногда получаю сообщение об ошибке "Отказано в доступе", который можно устранить, выполнив chmod -R 777 /var/www
, Тем не менее, люди говорят мне, что это плохая идея по соображениям безопасности.
Почему не стоит /var/www
есть chmod 777?
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 минимальные уровни доступа, необходимые для работы.
По сути, наличие разрешений 777 само по себе не приведет к хакерской атаке, но если кто-то вообще захватывает никуда, его можно использовать для повышения разрешений и получения полного контроля над вашим компьютером. Хуже всего то, что ваши разрешения используют "7" - это означает, что права на чтение, запись и выполнение.
Допустим, хакер хочет захватить ваш компьютер. Он может подключиться к вашему компьютеру с помощью веб-браузера, подключившись к http://yourcomputer.example.com/. Если у вас есть какие-либо доступные страницы, которые позволяют ему загружать изображения, он может переименовать исполняемый файл, заканчивающийся на ".jpg", и загрузить его на свой сервер. Теперь он просматривает этот файл в своем веб-браузере и запускает его, потому что linux не заботится о расширении, он только видит, что это исполняемый файл. Это может не дать ему много, но, поскольку он вообще работал, он знает, что он работал как пользователь apache. Затем он загружает измененную версию, которая будет редактировать конфигурационные файлы apache, предоставляя ему еще больший доступ - скажем так, чтобы apache выводил содержимое / etc / passwd. Затем он может использовать эту информацию, чтобы увидеть, какие пользователи существуют в системе. Затем он может подключиться с помощью ssh и попробовать общие пароли, чтобы войти в систему как эти пользователи - если это не сработает, он перейдет к использованию полной атаки методом перебора. Если он входит как пользователь с доступом sudo, то вся система принадлежит ему.
Теперь вы можете сказать, что это маловероятно или что настоящий хакер не сработает. Это правда, но суть в том, что, установив для файлов chmod 777, вы открыли дыру в безопасности, которую хакер может использовать по своему усмотрению.
Если вы вместо этого будете следовать Принципу наименьших привилегий, то этой дыры не будет, и ваша система будет намного сложнее взломать. Несмотря на то, что все труднее сделать правильно, вы все равно должны приложить все усилия для этого.