Integration von 3rd-party Applikationen

Aus

Einleitung

Mit Einführung der Firmware 637 hat Synology die Möglichkeit geschaffen, eigene Applikationen in die Administrationsoberfläche der Synology Station einzubauen. Dazu wurde eine entsprechende Dokumentation herausgegeben.


Vorbereitungen

  • Die Konfigurations-Eintragungen für die 3rd-party Applikationen werden im Verzeichnis /usr/syno/synoman/webman/3rdparty vorgenommen. Für jeden 3rdparty-Eintrag braucht man ein Verzeichnis. In diesem Verzeichnis muss mindestens eine application.cfg angelegt werden. Weitere Dateien, wie Bilder, cgi-Dateien usw. sind möglich. Eine genaue Anleitung findet man in der oben genannten Dokumentation. Eine minimale application.cfg kann so aussehen:
text = My app
description = This is my app
type = embedded
path = /phpsrc/my_app/index.php

Wenn nicht anders definiert, laufen die eingebundenen Applikationen auf dem Apache-Server des Systems. Der System-Apache-Webserver (httpd), der die Management-Oberfläche ausgibt, läuft mit den Rechten des root-Benutzers, was normalerweise eher unüblich ist. Aber es muss halt sein, weil sonst keine Systemadministration möglich wäre.

  • Möchte man PHP-Anwendungen auf diesem System-Apachen laufen lassen, so muss die Konfigurationsdatei /usr/syno/apache/conf/httpd.conf-sys um zwei Zeilen erweitert werden:
AddType application/x-httpd-php .php
LoadModule php5_module /lib/libphp5.so
  • Damit der sys-Apache auch auf alle Linux-Systemkommandos und alle Dateien zugreifen kann, sind weitere Veränderungen in der /usr/syno/apache/conf/httpd.conf-sys nötig (bitte die Zeilen suchen und genau vergleichen):
<Directory />
Options ExecCGI FollowSymLinks MultiViews Indexes
AllowOverride All
</Directory>

<Directory "/usr/syno/synoman">
Options ExecCGI FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>

<IfModule dir_module>
DirectoryIndex index.html index.htm index.cgi index.php
</IfModule>

<IfModule mime_module>
...
AddHandler cgi-script .cgi
...
</IfModule>

Nach Änderungen an der /usr/syno/apache/conf/httpd.conf-sys muss der System-Apache neugestartet werden:

/usr/syno/etc/rc.d/S97apache-sys.sh restart

Anmerkung: Das Einrichten von httpd-Konfigurationen hat nichts mit Linux zu tun, das wäre auf einem Windows-Rechner genauso. Da es viele Einstellmöglichkeiten gibt, kann man auch schnell was Falsches eintragen. Dann läuft der Apache nicht mehr beim Restart. Deshalb die Empfehlung, immer erst eine lauffähige Sicherung von der httpd.conf-sys anzulegen, bevor man was macht.

  • .cgi-Dateien (common gateway interface) werden vom Apache über eine sogenannte Sub-Shell gestartet, d.h. binär-kompilierte Programme (C-Programme), oder Skripte (Shell, Perl usw.) sind möglich. Alle CGI-Programme müssen die Endung .cgi haben, weil sie sonst nicht ausgeführt werden (siehe vorherigen Punkt, wo das ja definiert wurde [theoretisch könnte man beliebige Endungen definieren]). In Skripten ist in der ersten Zeile als Kommentar-Eintrag der jeweilige Interpreter einzutragen, der von der Sub-Shell für die weitere Ausführung geladen werden soll:
#!/bin/ash
  • .cgi-Skripte/Programme können so ziemlich alles enthalten, was auch sonst mit der Shell oder Perl oder anderen Skriptsprachen geht. Sie müssen allerdings, damit sie vom Apache auch ausgeführt werden als allererstes einen gültigen Header ausgeben. Dieser kann in einem .cgi-Shell-Skript so aussehen:
echo "Content-type: text/html"
echo ""

oder auch so:

cat <<EOT
Content-type: text/html

EOT

Der Apache will unbedingt die Leerzeile nach dem Text-Header, sonst mag er nicht. Der Rest in dem Skript sollte/muss Zeugs ausgeben, was der Browser verknusern kann und das ist in der Regel gültiges HTML.

  • Für PHP-Skripte muss eine weitere Konfigurations-Datei angepasst werden: /usr/syno/etc/php.ini. Da diese Konfigurations-Datei auch für den Nicht-sys-Apache verwendet wird und sich dort Änderungen auch auf das Verhalten der normalen PHP-Skripte auswirkt, ist höchste Aufmerksamkeit bei Änderungen gefordert. Eine Sicherung der php.ini vor Änderungen ist angebracht! Auch hier gilt: nach jeder Änderung muss der Apache wieder neu gestartet werden. Folgende Änderungen sind bei einigen 3rd-party-Applikationen notwendig, damit sie auf das Linux-Dateisystem richtig zugreifen können bzw. auch Linux-Kommandos ausführen können:
safe_mode_exec_dir =
open_basedir =

Anmerkungen

Wenn man sich mit der Integration von Anwendungen in die Administrationsoberfläche der Synology Station befasst, sollte man auch über die sicherheitsrelevanten Aspekte bestens Bescheid wissen. Es besteht ein grundsätzliches Sicherheitsrisiko, wenn die Ports 5000 und 5001 für die Administrationsoberfläche zum Internet hin geöffnet sind. Weiterhin sind alle eingebundenen Applikationen über https://synostationIP:5001/phpsrc/anwendung direkt zu erreichen, wenn sie nicht speziell gegen solche Direktaufrufe abgesichert sind. Weitere Möglichkeiten zur Absicherung findet man hier: 3rd Party Applications absichern


Links