Warum sollte / var / www nicht chmod 777 haben?

62

Wenn ich eine Seite auf einem localhost entwickle, bekomme ich manchmal einen "Permission denied" -Fehler, den ich lösen kann, indem ich chmod -R 777 /var/www starte. Aber die Leute sagen mir, dass dies aus Sicherheitsgründen eine schlechte Idee ist.

Warum sollte /var/www nicht einen chmod von 777 haben?

    
Luis Alvarado 05.01.2011, 02:03

2 Antworten

75

777 ist generell eine schlechte Erlaubnis und ich werde Ihnen zeigen warum.

Trotz wie es in einem Casino oder Las Vegas aussieht, 777 bedeutet nicht Jackpot für Sie. Vielmehr Jackpot für alle, die Ihre Dateien ändern möchten. 777 (und sein hässlicher Cousin 666) erlauben Lese- und Schreibrechte (und im Falle von 777 Execute) zu anderen . Sie können mehr über wissen, wie Dateiberechtigungen funktionieren , aber kurz gesagt gibt es drei Gruppen von Berechtigungen: Eigentümer, Gruppe und andere . Indem Sie die Berechtigung auf 6 oder 7 ( rw- oder rwx ) für andere setzen, geben Sie jedem Benutzer die Möglichkeit, diese Dateien und Ordner zu bearbeiten und zu bearbeiten. Normalerweise ist dies, wie Sie sich vorstellen können, schlecht für die Sicherheit.

Hier ist mein Beispiel:

[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 

Bisher habe ich einen Ordner erstellt und eine Datei mit "schlechten" Berechtigungen erstellt (777 und 666). Jetzt wechsle ich in einen anderen Benutzer und versuche, diese Dateien zu manipulieren.

[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

Als dieser "böswillige" Benutzer konnte ich Dateien in das Verzeichnis einfügen und Text in bereits existierende Dateien einfügen. Während unten, in einem Verzeichnis mit 755 und Dateien mit 644, kann ich innerhalb von Dateien und Verzeichnissen sehen, aber ich kann die Dateien weder bearbeiten noch neue erstellen:

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

Für Apache-Berechtigungen werden Sie für Ordner und Dateien an 0755 und 0644 (AKA umask 022 ) bleiben wollen. Dies ermöglicht es Ihnen, als Eigentümer der Dateien diese zu bearbeiten und zu manipulieren, während Sie Apache mit den für den Betrieb erforderlichen Mindestanforderungen ausstatten.

    
Marco Ceppi 05.01.2011, 02:39
13

Wenn Sie die Berechtigungen von 777 besitzen, werden Sie im Grunde nicht gehackt, aber wenn jemand irgendwo einen Zugang hat, kann er verwendet werden, um Berechtigungen zu eskalieren und die vollständige Kontrolle über Ihren Computer zu erlangen. Der schlimmste Teil ist, dass Ihre Berechtigungen "7" verwenden - das bedeutet Lesen, Schreiben, und Ausführen Berechtigungen.

Nehmen wir an, ein Hacker möchte Ihren Computer übernehmen. Er kann sich über einen Webbrowser mit Ihrem Computer verbinden und eine Verbindung zum Link herstellen. Wenn Sie über Seiten verfügen, auf denen er Bilder hochladen kann, kann er eine ausführbare Datei umbenennen, sodass sie mit ".jpg" endet und auf Ihren Server hochgeladen wird. Jetzt sucht er in seinem Webbrowser nach dieser Datei und führt sie aus, weil Linux die Erweiterung nicht interessiert, sondern nur sieht, dass es sich um eine ausführbare Datei handelt. Das könnte ihm nicht viel bringen, aber weil es überhaupt lief, weiß er, dass es als Apache-Benutzer lief. Er lädt dann eine modifizierte Version hoch, die die Konfigurationsdateien von Apache bearbeitet und ihm so mehr Zugriff gewährt - sagen wir so, dass Apache den Inhalt von / etc / passwd ausgibt. Er kann diese Informationen dann verwenden, um zu sehen, welche Benutzer auf dem System vorhanden sind. Er kann sich dann mit ssh verbinden und gängige Passwörter ausprobieren, um sich als diese Benutzer anzumelden. Wenn das nicht funktioniert, wird er einen vollen Brute-Force-Angriff ausführen. Wenn er als Benutzer mit sudo-Zugang einsteigt, dann ist das gesamte System sein.

Nun können Sie sagen, dass das nicht wahrscheinlich ist, oder dass ein echter Hacker nicht funktionieren würde. Das stimmt, aber der Punkt ist, dass Sie mit der Einstellung chmod 777 eine Sicherheitslücke geöffnet haben, die ein Hacker nutzen kann, wie er es für richtig hält.

Wenn Sie stattdessen dem Prinzip der geringsten Rechte folgen, tritt dieses Loch nicht auf, und Ihr System ist das viel schwieriger zu hacken. Auch wenn es schwieriger ist, Dinge richtig zu machen, sollten Sie trotzdem alles tun.

    
ImaginaryRobots 29.10.2012 18:39

Tags und Links