it-swarm.com.de

Best Practice für die Zugriffsberechtigung für Benutzer von Apache Tomcat

Ich habe eine Linux-Box, die von verschiedenen Entwicklern geteilt wird. Sie möchten ihre Kriegsdateien in Apache Tomcat bereitstellen, das sich an einem gemeinsam genutzten Speicherort befindet (/ opt/Tomcat).

Da sie keinen Sudo-Zugriff haben, muss ich die Ordnerberechtigung für das Tomcat-Verzeichnis ändern.

verzeichnisstruktur unter /opt/Tomcat ist -

bin/

conf/

lib/

logs/

temp/

webapps/

work/

Was sind die Best Practices in der obigen Situation - Am besten geeignete Zugriffsberechtigung für Benutzer? Zur Zeit habe ich die Berechtigung auf 777 für Webapps und Protokolle geändert.

Vielen Dank

20
Kunal

Ich mache es so:

Wir legen den Tomcat-Benutzer als Eigentümer des Tomcat-Ordners fest:

# chown -R Tomcat:tomcat /opt/Tomcat

Benutzer können die Konfiguration von Tomcat nicht ändern:

# chmod -R g+r /opt/Tomcat/conf

Benutzer können die anderen Ordner ändern:

# chmod -R g+w /opt/Tomcat/logs
# chmod -R g+w /opt/Tomcat/temp
# chmod -R g+w /opt/Tomcat/webapps
# chmod -R g+w /opt/Tomcat/work

Aktivieren Sie das Sticky-Bit für neue Dateien und behalten Sie die definierten Berechtigungen bei:

# chmod -R g+s /opt/Tomcat/conf
# chmod -R g+s /opt/Tomcat/logs
# chmod -R g+s /opt/Tomcat/temp
# chmod -R g+s /opt/Tomcat/webapps
# chmod -R g+s /opt/Tomcat/work

Schließlich fügen wir die Tomcat-Gruppe hinzu, die Benutzer benötigen, die Tomcat verwenden können:

# usermod -a -G Tomcat MIUSER
29
intropedro

Im Abschnitt Non-Tomcat settings des Tomcat-Sicherheitshandbuchs finden Sie nützliche Informationen zu diesem Thema. Siehe hier:

Tomcat sollte nicht unter dem Root-Benutzer ausgeführt werden. Erstellen Sie einen dedizierten Benutzer für den Tomcat-Prozess und geben Sie diesem Benutzer die erforderlichen Mindestberechtigungen für das Betriebssystem. Beispielsweise sollte es nicht möglich sein, sich mit dem Tomcat-Benutzer remote anzumelden.

Dateiberechtigungen sollten ebenfalls angemessen eingeschränkt werden. Am Beispiel der Tomcat-Instanzen in der ASF (bei der die automatische Bereitstellung deaktiviert ist und Webanwendungen als explodierte Verzeichnisse bereitgestellt werden) wird standardmäßig festgelegt, dass alle Tomcat-Dateien dem Stamm mit der Gruppe Tomcat und gehören Während der Eigentümer Lese-/Schreibrechte besitzt, hat die Gruppe nur Lese- und die Welt keine Berechtigungen. Die Ausnahmen sind die Protokolle, das Temp und das Arbeitsverzeichnis, die dem Tomcat-Benutzer und nicht root gehören. Dies bedeutet, dass ein Angreifer, der den Tomcat-Prozess gefährdet, die Tomcat-Konfiguration nicht ändern, keine neuen Webanwendungen bereitstellen oder vorhandene Webanwendungen ändern kann. Der Tomcat-Prozess wird mit einer umask von 007 ausgeführt, um diese Berechtigungen beizubehalten.

13
Jack

Sie müssen das Prinzip des geringsten Privilegs befolgen. Der Server (wahrscheinlich www-data, muss aber überprüft werden) muss in der Lage sein, die meisten Dateien zu lesen (sagen wir alle) und nur in die Protokolle zu schreiben. Die Webentwickler dürfen schreiben, wo sie wollen. Setzen Sie das Sticky-Bit in den Verzeichnissen so, dass es nur der Eigentümer einer Datei löschen kann.

In der Praxis müssen Sie eine Gruppe erstellen (zum Beispiel webdev) und alle Entwickler und den Server hinzufügen (usermod -aG webdev <user> oder usermod -A webdev <user>, abhängig von Ihrer Linux-Version). chown alle Dateien und Verzeichnisse für den Webserver-Benutzer, chmod alle Verzeichnisse auf 500 und alle Dateien auf 400 (außer in bin, wo die ausführbaren Dateien ebenfalls 500 sein müssen).

Erteilen Sie der Gruppe Schreibberechtigungen für /opt/Tomcat (das wären 570) und setzen Sie das Sticky-Bit so, dass sie nur die Dateien entfernen können, deren Eigentümer sie sind (chmod 1570). Gewähren Sie dem Server die Schreibberechtigung für die Protokolle und die Leseberechtigungen für die Entwickler (0740 für den Ordner, 0640 für die Dateien, das Sticky-Bit ist wahrscheinlich nicht erforderlich, und gewähren Sie es niemals einer Datei, nur den Ordnern, wie es eine hat andere Bedeutung (mit den Berechtigungen des Eigentümers ausführen, wenn die Datei ausführbar ist)).

Dann müssen Sie webdev in einigen Verzeichnissen Schreibrechte (1570) erteilen. Sie benötigen hier einige Versuche und Fehler, und dies kann von der Anwendung abhängig sein. Diese Ordner müssen 1570 sein, während einige andere 0500 sein können.

Die Entwickler müssen der Gruppe Lesezugriff auf ihre Dateien gewähren, damit der Server sie lesen (das sind 640) und auch auf den Verzeichnissen ausführen kann (das sind 750).

1
Calimo

Ich denke, die von @ intropedro akzeptierte Antwort ist gut. Es ist erwähnenswert, dass die Verwendung eines Paketinstallationsprogramms eine Menge Kopfschmerzen ersparen kann - zumindest für Tomcat 7 unter Ubuntu ergibt apt-get install Tomcat7 einen "Standard" -Satz von Installationsverzeichnissen:

  • /etc/Tomcat7 für Konfigurationsdateien,
  • /var/lib/Tomcat7 für Kernbibliotheken und
  • /usr/share/Tomcat7 für gemeinsam genutzte Ressourcen.

Alle Berechtigungen sind ordnungsgemäß mit dem Prinzip der geringsten Berechtigung eingerichtet, sodass das Hinzufügen von Benutzern zur Gruppe Tomcat7 ausreicht, um die Bereitstellung zu ermöglichen. Ferner ist der Tomcat-Server als Dienst eingerichtet, der wie andere gestartet und gestoppt werden kann (z. B. Sudo service Tomcat start oder alternativ /etc/init.d/Tomcat start). Tomcat startet beim Neustart automatisch und es gibt einen "Neustart" -Befehl. Ich bin mir sicher, dass es für RHEL/CentOS-Benutzer ein gleichwertiges yum-Paket gibt. (Und ja, es gibt ein Homebrew-Installationsprogramm für lokale OSX-Installationen).

Wenn Sie Probleme haben, gibt es in /usr/share/bin ein Hilfsprogramm namens configtest.sh, das meldet, ob Berechtigungen oder andere Fehler vorliegen. Beachten Sie, dass es einen offenen Fehler gibt, der das Hinzufügen einiger symbolischer Links nahelegt.

Wir führen immer noch Ubuntu trusty (14.04) aus. Für diejenigen, die neuere Versionen verwenden, gibt es meines Erachtens ein Tomcat 8-Repertoire.

1
Tom Harrison Jr