Apache-Reverse-Proxy mit Alias, Berechtigung verweigert

1

Ich versuche, mit Apache 2.2 den Proxy meines Tomcat-Servers umzukehren und die Tomcat-Protokolle unter dem Pfad / tomcat-logs bereitzustellen. Dies ist in einem Docker-Image enthalten, das auf Ubuntu 12.04 basiert. Dies sollte jedoch kein Problem darstellen.

000-default.conf:

<VirtualHost *:80>
  Alias /tomcat-logs /var/log/tomcat7
  ProxyPreserveHost on
  ProxyPass /tomcat-logs !
  ProxyPass / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080/
</VirtualHost>

httpd.conf:

<Directory />
  Order deny,allow
  Deny from all
</Directory>

<Directory /var/log/tomcat7>
  Order allow,deny
  Allow from all
  AllowOverride None
  Options +Indexes
</Directory>

Der Reverse-Proxy funktioniert wie erwartet, aber wenn ich versuche, auf tomcat-logs / catalina.out zuzugreifen, erhalte ich eine 403 Forbidden. Der Fehler aus dem Apache-Protokoll ist:

(13)Permission denied: access to /tomcat-logs/catalina.out denied

Ich habe die Dateiberechtigungen der Protokolldateien und der Verzeichnisse überprüft, die zum Protokollspeicherort führen, und sie sind alle 644 oder 755.

Merkwürdig finde ich, dass in der Meldung "/tomcat-logs/catalina.out" anstelle von "/var/log/tomcat7/catalina.out" steht, dass der Zugriff verweigert wurde.

Hat jemand irgendwelche Ideen?

AKTUALISIEREN

Wenn ich http://localhost/tomcat-logs/in meinem Webbrowser gehe, wird in meinem Protokoll die folgende Fehlermeldung angezeigt:

(13)Permission denied: access to /tomcat-logs/index.html denied
... Others similar to index.html

Die Options +IndexesDirektive wird also nicht verwendet. Deshalb denke ich das Directory /var/log/tomcat7wird ignoriert. Was könnte das verursachen?

AKTUALISIEREN

Wenn ich den Reverse-Proxy verwende und DocumentRoot anstelle von Alias ​​verwende, wird derselbe Fehler angezeigt.

<VirtualHost *:80>
  DocumentRoot /var/log/tomcat7
</VirtualHost>

Und der Fehler ist:

(13)Permission denied: access to /catalina.out denied

Bei der Debug-Protokollierung ist das vollständige Protokoll:

[Fri Jan 09 14:26:40 2015] [notice] Apache/2.2.22 (Ubuntu) configured -- resuming normal operations
[Fri Jan 09 14:26:40 2015] [info] Server built: Jul 22 2014 14:35:32
[Fri Jan 09 14:26:40 2015] [debug] worker.c(1757): AcceptMutex: sysvsem (default: sysvsem)
[Fri Jan 09 14:26:40 2015] [debug] proxy_util.c(1818): proxy: grabbed scoreboard slot 0 in child 428 for worker proxy:reverse
[Fri Jan 09 14:26:40 2015] [debug] proxy_util.c(1914): proxy: initialized worker 0 in child 428 for (*) min=0 max=25 smax=25
[Fri Jan 09 14:26:40 2015] [debug] proxy_util.c(1818): proxy: grabbed scoreboard slot 0 in child 429 for worker proxy:reverse
[Fri Jan 09 14:26:40 2015] [debug] proxy_util.c(1837): proxy: worker proxy:reverse already initialized
[Fri Jan 09 14:26:40 2015] [debug] proxy_util.c(1914): proxy: initialized worker 0 in child 429 for (*) min=0 max=25 smax=25
[Fri Jan 09 14:27:07 2015] [error] [client 172.17.42.1] (13)Permission denied: access to /catalina.out denied
[Fri Jan 09 14:27:07 2015] [debug] mod_deflate.c(700): [client 172.17.42.1] Zlib: Compressed 289 to 219 : URL /catalina.out

Laufen sudo aa-statusauf dem Host gibt:

apparmor module is loaded.
18 profiles are loaded.
18 profiles are in enforce mode.
  /sbin/dhclient
  /usr/lib/NetworkManager/nm-dhcp-client.action
  /usr/lib/connman/scripts/dhclient-script
  /usr/lib/cups/backend/cups-pdf
  /usr/lib/lightdm/lightdm-guest-session
  /usr/lib/lightdm/lightdm-guest-session//chromium
  /usr/lib/telepathy/mission-control-5
  /usr/lib/telepathy/telepathy-*
  /usr/lib/telepathy/telepathy-*//pxgsettings
  /usr/lib/telepathy/telepathy-*//sanitized_helper
  /usr/lib/telepathy/telepathy-ofono
  /usr/sbin/cups-browsed
  /usr/sbin/cupsd
  /usr/sbin/cupsd//third_party
  /usr/sbin/mysqld-akonadi
  /usr/sbin/mysqld-akonadi///usr/sbin/mysqld
  /usr/sbin/tcpdump
  docker-default
0 profiles are in complain mode.
10 processes have profiles defined.
10 processes are in enforce mode.
  /sbin/dhclient (9937) 
  /usr/lib/telepathy/mission-control-5 (3463) 
  /usr/sbin/cups-browsed (1405) 
  /usr/sbin/cupsd (3849) 
  /usr/sbin/mysqld-akonadi///usr/sbin/mysqld (3481) 
  docker-default (14568) 
  docker-default (15403) 
  docker-default (15406) 
  docker-default (15408) 
  docker-default (15409) 
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

Nachdem ich renne aa-complain /etc/apparmor.d/dockerbekomme ich immer noch den 403 Fehler.

Gerrit
quelle
Könnten Sie versuchen, das DirectoryInnere des zu kopieren VirtualHost?
NuTTyX
Macht keinen Unterschied
Gerrit
Haben Sie SELinux auf dem System aktiviert? Geben Sie ein sestatus, um zu überprüfen.
NuTTyX
sestatus ist nicht installiert
gerrit
Sind Verzeichnisse von root bis /var/log/tomcat7all auf 755 gesetzt? Ich habe gelesen, dass Sie das bereits überprüft haben, aber ich war nicht sicher, ob eines der Verzeichnisse 644 sein könnte. Außerdem wird Ubuntu mit AppArmor anstelle von SELinux ausgeliefert. Könnten Sie bitte überprüfen, ob es Richtlinien gibt, die Apache daran hindern könnten, diese Dateien zu lesen? Überprüfen Sie außerdem, ob der Pfad zu den Tomcat-Protokollen einen Symlink enthält. Wenn dies der Options +FollowSymLinks
Fall

Antworten:

1

Ich habe eine Problemumgehung gefunden, indem ich den Benutzer www-data zur Gruppe adm mit hinzugefügt habe usermod -a -G adm www-data. Kann irgendjemand Aufschluss darüber geben, warum dies funktioniert, aber anderen Berechtigungen zum Lesen und Ausführen erteilen /var/log/tomcat7? Auch das Ändern der Gruppe dieses Verzeichnisses in www-data hat nicht funktioniert.

Gerrit
quelle
Ich versuche immer noch, die Umgehung zum Laufen zu bringen usermod. Das Ausführen von Apache in einem Docker-Container ist schmerzhaft. ALLES gehört root, aber Apache läuft unter www-data und selbst wenn Sie www-data sudoer-Berechtigungen erteilen, werden trotzdem 403 verbotene Fehler geworfen. Sie können Benutzer und Gruppe in der envvars-Datei ändern. Anschließend wird empfohlen, Apache aus dem Quellcode mit bestimmten Optionen für -DBIG_A $$ _ SECURITY_HOLE
RyanNerd,