Під час розробки сторінки в localhost я іноді отримую помилку "Дозвіл відмовлено", яку я можу вирішити, запустивши chmod -R 777 /var/www
. Однак люди мені кажуть, що це погана ідея з міркувань безпеки.
Чому не повинен /var/www
мати chmod 777?
Під час розробки сторінки в localhost я іноді отримую помилку "Дозвіл відмовлено", яку я можу вирішити, запустивши chmod -R 777 /var/www
. Однак люди мені кажуть, що це погана ідея з міркувань безпеки.
Чому не повинен /var/www
мати chmod 777?
Відповіді:
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 мінімальний рівень доступу, необхідний для роботи.
/etc/passwd
і ви побачите , як користувач mail
, news
і nobody
. Навіть якщо всім реальним людям користувачів вашої системи добре, щоб вони могли змінювати вміст /var/www
, це не означає, що ви хочете, щоб усі процеси працювали, оскільки ці "штучні" користувачі зможуть це зробити.
ls -lah
, touch bad
або будь-які інші команди. Як вони можуть маніпулювати папками та файлами? 2) Спадщина. Ви не покривали спадкування між папками та файлами в них. Є по крайней мере , 2-3 кроки до файлу: /var
, /var/www
, /var/www/project
. Якими повинні /var
бути дозволи користувачів / груп ? Якими повинні /var/www
бути дозволи користувачів / груп ? І так далі. Як вони співпрацюють?
По суті, дозволу 777 не зроблять вас зламаними самостійно, але якщо хтось взагалі отримає опору, це може бути використане для ескалації дозволів та отримання повного контролю над вашим комп'ютером. Найгірше - те, що ваші дозволи дозволяють використовувати "7" - це означає, що читати, писати та виконувати дозволи.
Скажімо, хакер хоче захопити ваш комп’ютер. Він може підключитися до комп'ютера за допомогою веб-браузера, підключившись до http://yourcomputer.example.com:80/. Якщо у вас є будь-які сторінки, які дозволяють йому завантажувати зображення, він може перейменувати виконуваний файл, закінчений на ".jpg", і завантажити його на ваш сервер. Тепер він переглядає цей файл у своєму веб-браузері і запускає його, оскільки Linux не переймається розширенням, він бачить лише, що це виконуваний файл. Це може не отримати його багато, але, оскільки він працював зовсім, він знає, що він працював як користувач apache. Потім він завантажує модифіковану версію, яка буде редагувати конфігураційні файли apache, надаючи йому ще більший доступ - скажімо так, щоб apache виводив вміст / etc / passwd. Потім він може використовувати цю інформацію, щоб побачити, які користувачі існують у системі. Потім він може підключитися за допомогою ssh та спробувати загальні паролі, щоб увійти як ці користувачі - якщо це не працює, він перейде до використання повної атаки грубої сили. Якщо він входить як користувач із доступом до sudo,
Тепер ви можете сказати, що це мало ймовірно, або що не справжній хакер буде працювати. Це правда, але справа в тому, що, встановивши файли на chmod 777, ви відкрили отвір у безпеці, який хакер може використовувати, хоч як вважає за потрібне.
Якщо ви замість цього дотримуєтеся принципу найменшого привілею , то ця діра не виникає, і вашу систему так важче зламати. Незважаючи на те, що складніше робити речі належним чином, вам все одно слід докласти максимум зусиль.