Referenzhandbuch Version 1.8 LiveConfig® Referenzhandbuch für LiveConfig 1.8.3 Keppler IT GmbH LiveConfig® Referenzhandbuch: für LiveConfig 1.8.3 Keppler IT GmbH Erzeugt aus SVN-Revision 3572 Veröffentlicht Fri May 8 10:03:47 CEST 2015 Copyright © 2009, 2010, 2011, 2012, 2013, 2014, 2015 Keppler IT GmbH, Erlangen Dieses Handbuch ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Kein Teil dieses Handbuchs darf ohne vorherige schriftliche Genehmigung der Keppler IT GmbH in irgendeiner Form reproduziert werden. Druck und Vervielfältigung sind lediglich für den persönlichen Gebrauch des Nutzers gestattet. LiveConfig ist ein eingetragenes Markenzeichen der Keppler IT GmbH, Erlangen. Alle anderen in diesem Handbuch erwähnten Hardware- und Softwarebezeichnungen sind in der Regel Warenzeichen oder eingetragene Markenzeichen ihrer jeweiliger Inhaber, auch wenn diese hier nicht unbedingt als solche gekennzeichnet sind. Inhaltsverzeichnis Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix 1. Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1. Philosophie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. Verwaltungsstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3. Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4. Vorteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5. Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.6. Lizenzmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2. LiveConfig-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1. Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.1. Firewall-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.2. Dateisystem-Quota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2. Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2.1. Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2.2. Ubuntu Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.3. OpenSUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2.4. CentOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3. Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3.1. MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.4. Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.4.1. Allgemeine Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.4.2. Datenbank-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.4.3. HTTP-Protokoll-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.4.4. LCCP-Protokoll-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.5. SSL-Zertifikat verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.6. Lizenz-Aktivierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.7. Passwort-Initialisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.8. Programme und Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.8.1. LiveConfig Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.8.2. Hilfsprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3. LiveConfig-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.1. Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.1.1. Firewall-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.1.2. Dateisystem-Quota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2. Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2.1. Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2.2. Ubuntu Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.2.3. OpenSUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 v LiveConfig® Referenzhandbuch 3.2.4. CentOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.3. Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.3.1. Allgemeine Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.3.2. LCCP-Protokoll-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.4. Lizenz-Aktivierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.5. Programme und Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.5.1. LiveConfig Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.5.2. Hilfsprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4. Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.1. Anmeldung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.2. Einstellungen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.2.1. Sprache und Zeitzone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2.2. Passwort ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2.3. Zwei-Faktor-Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.3. Wiederverkäufer-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.4. Server verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.4.1. Webserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.4.2. FTP-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.4.3. Mailserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.4.4. Datenbankserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.5. Nameserver (DNS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.5. Hosting-Angebote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.6. Kunden verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.6.1. Kundendetails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.6.2. Verträge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.6.3. Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.7. Benutzerverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.8. Webspace-Verwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.9. Domaineinstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.10. E-Mail-Postfächer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.11. Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.12. Cron-Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.13. Application Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.14. SSL-Zertifikate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.14.1. Privater Schlüssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.14.2. Zertifikatsanforderung (CSR) erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.14.3. Zertifikat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.14.4. CA-Zwischenzertifikate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.15. Nameserver (DNS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.15.1. DNS-Vorlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.15.2. Externe DNS-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 vi 4.16. Verzeichnisstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5. Fortgeschrittene Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.1. LiveConfig-Standardwerte ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.2. Webspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.2.1. ProFTPD-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.3. E-Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 5.3.1. Autokonfiguration (Autodiscovery) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 5.3.2. Quota-Warnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 5.3.3. Postfix-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.3.4. Dovecot-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 6. Wartung und Pflege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 6.1. Backup und Wiederherstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 6.1.1. Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 6.1.2. Wiederherstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.2. Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.2.1. Nagios® / Icinga® . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 7. Deinstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 7.1. LiveConfig-Server deinstallieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 7.1.1. Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 7.1.2. Ubuntu Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 7.1.3. OpenSUSE, CentOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 7.2. LiveConfig-Client deinstallieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 7.2.1. Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 7.2.2. Ubuntu Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 7.2.3. OpenSUSE, CentOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 8. Programmierschnittstellen (APIs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 8.1. SOAP Webservice API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 8.1.1. Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 8.1.2. Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 8.1.3. WSDL Servicebeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 8.1.4. Programmbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 8.1.5. SOAP-Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 8.2. Lua API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 8.2.1. Organisation und Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 8.2.2. Testen eigener Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 8.2.3. Programmbeispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 8.2.4. Lua-Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 8.3. IFRAME API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 8.3.1. Einrichtung „eigener Links“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 8.3.2. Programmierung eigener Inhalte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 A. Fehlerbehebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 vii LiveConfig® Referenzhandbuch A.1. LiveConfig-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 A.1.1. Serverzugriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 A.2. LiveConfig-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 B. Copyright-Hinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 B.1. LiveConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 B.2. Verwendete Bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 B.3. Verwendete Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 viii Vorwort Vielen Dank, dass Sie sich für LiveConfig® entschieden haben. Mit LiveConfig haben Sie eine gute Wahl getroffen: Ihre Server werden somit durch eines der modernsten und schnellsten Controlpanel-Systeme verwaltet. LiveConfig verfolgt dabei einen anderen Ansatz als bisher erhältliche Controlpanel-Produkte. Es erkennt automatisch auf welcher Distribution es eingesetzt wird und verwaltet die Softwarepakete der jeweiligen Distribution, statt dem gesamten System seine eigenen Pakete aufzudrücken. Dieses Handbuch umfasst alle Aspekte von LiveConfig - von der Installation und den ersten Schritten über Monitoring und Backup bis hin zu Programmierschnittstellen und Erweiterungsmöglichkeiten. Wir hoffen, dass Ihnen dieses Handbuch bei allen Fragen zur Seite steht. Sollten Sie Informationen vermissen oder sonstige Anmerkungen haben, freuen wir uns jederzeit über Ihr Feedback! Ihr LiveConfig-Entwicklerteam Wissensdatenbank Spezielle Anleitungen für konkrete Fragestellungen halten wir in unserer Wissensdatenbank unter http://www.liveconfig.com/de/kb bereit. Dort finden Sie beispielsweise Anleitungen zu folgenden Themen: • Installation eines Hosting-Servers mit Debian GNU/Linux 6.0 (Lenny) (KB#8) • Integration der LiveConfig-Anmeldung in eigene Webseiten (KB#2) • Einrichten eines SSL-Zertifikats für den LiveConfig-Server (KB#3) • Migration von Parallels® Confixx zu LiveConfig (KB#5) Häufige Fragen Besonders häufig gestellte Fragen (FAQ - Frequently Asked Questions) haben wir unter der Adresse http://www.liveconfig.com/de/faq gesammelt und beantwortet. Diese Liste wird ständig erweitert. Allgemeine Fragen Für alle Fragen rund um LiveConfig steht unter http://www.liveconfig.com/de/forum/ ein umfangreiches Forum bereit. Von technischen Fragen zur Installation bis hin zur Wunschliste für zukünftige Versionen sollten Sie dort für jedes Thema das richtige Diskussionsforum finden. ix Vorwort Alle sonstigen Anfragen richten Sie bitte per E-Mail an <[email protected]>. Bitte erlauben Sie uns 1-2 Tage Zeit um Ihre Anfrage zu bearbeiten. Per Post erreichen Sie uns unter folgender Anschrift: Keppler IT GmbH, Am Weichselgarten 7, 91058 Erlangen. Konventionen In dieser Dokumentation werden folgende typographische Konventionen benutzt: • Befehle, Programmnamen und Benutzereingaben werden so geschrieben: „Führen Sie liveconfig mit dem Parameter --help aus.“ • Datei- und Verzeichnisnamen werden so geschrieben: „Die Datei liveconfig.cfg befindet sich im Verzeichnis /opt/liveconfig/etc/“ • Allgemeine Hervorhebungen, Produktnamen etc. sehen so aus: „Sie können diese Datei nicht mit Microsoft Word öffnen.“ Bildschirmausgaben sehen so aus: $> liveconfig --help Das ist eine Bildschirmausgabe... Programmbeispiele sehen so aus: #!/usr/bin/perl print "Hallo, Welt!\n"; exit(0); Weiterhin werden folgende Symbole verwendet: Das hier ist eine Bemerkung. Das hier ist ein wichtiger Hinweis! x Feedback Feedback Sollten Sie einen Fehler in dieser Anleitung entdecken oder sonstige Verbesserungsvorschläge haben, so freuen wir uns von Ihnen zu hören! Senden Sie uns dazu bitte einfach eine E-Mail an <[email protected]>. Vielen Dank! xi xii Kapitel 1. Einführung LiveConfig ist eine Software zur Verwaltung von Linux/Unix-basierten Serversystemen. Die Entwickler von LiveConfig greifen auf über zehn Jahre Fachwissen aus der Hostingbranche zurück, daher verfolgt LiveConfig einige neuartige Ansätze, welche im Folgenden näher beschrieben werden. 1.1. Philosophie LiveConfig verwaltet Server - das heißt, die Software erleichtert dem jeweiligen Administrator die tagtägliche Arbeit, indem Routine-Tätigkeiten vereinfacht oder gar automatisiert werden. LiveConfig überlässt es dabei dem Benutzer, welches Betriebssystem oder welche Distribution er einsetzt. Üblicherweise hat es seinen Grund, warum sich ein Anwender für oder gegen eine bestimmte Distribution entscheidet - wie beispielsweise persönliche Erfahrung, Support-Verträge oder Unternehmensrichtlinien. Das bedeutet auch, dass LiveConfig für bestimmte Einsatzzwecke (z.B. als Hosting-Webserver) nicht auf proprietäre Pakete zurückgreift, sondern die Softwarepakete der jeweiligen Distribution entsprechend konfiguriert. LiveConfig verhält sich somit minimal-invasiv - würde LiveConfig irgendwann wieder deinstalliert werden, würden alle Dienste auf dem zuletzt konfigurierten Stand weiterlaufen. Gleichzeitig ist LiveConfig bewusst kompakt gehalten - es bestehen keine Abhängigkeiten zu bestimmten Bibliotheken oder Anwendungen. Alles was LiveConfig für seine Weboberfläche benötigt, ist bereits enthalten. Es macht schließlich keinen Sinn, wenn eine Software zur Verwaltung von Webservern bereits einen fertig konfigurierten Webserver mit PHP und MySQL-Datenbank voraussetzt. 1.2. Verwaltungsstruktur Die Organisation von Administratoren, Wiederverkäufern und Endkunden ist flexibel gehalten: ein „Administrator“ (also der Betreiber eines Servers) kann auch direkt Webspaces einrichten, genauso kann ein Wiederverkäufer selbst weitere Wiederverkäufer anlegen - vorausgesetzt natürlich, er hat die dazu nötigen Berechtigungen. Innerhalb eines Kunden können weitere Benutzer angelegt werden, die nur Berechtigungen für die Verwaltung ausgewählter Hostingverträge erhalten. Einzelnen Benutzern können indivuell Berechtigungen zugewiesen oder entfernt werden. Die starre dreigliedrige Hierarchie „Administrator - Wiederverkäufer - Endkunde“ gibt es bei LiveConfig also nicht. Somit eignet sich LiveConfig auch hervorragend für die Verwaltung eines „eigenen“ dedizierten Webservers, ohne Pseudo-Wiederverkäufer anlegen zu müssen oder für die Konfiguration des Webspaces in eine andere Controlpanel-Oberfläche wechseln zu müssen. 1 Einführung Kunden, Benutzer, Verträge und Kontakte In LiveConfig wird zwischen Kunden, Benutzern und Verträgen unterschieden. Ein Kunde (beispielsweise ein Firma) kann mehrere Benutzer und mehrere Verträge haben. Dabei kann genau festgelegt werden, welcher Benutzer welche Berechtigungen für welchen Vertrag besitzt. Alle Kontaktdaten (Name, Anschrift, E-Mail-Adresse etc.) werden separat verwaltet, damit diese zentral aktualisiert werden können. Einem Kunden können so auch verschiedene Kontakte (Vertragspartner, technischer Ansprechpartner und Buchhaltung) zugewiesen werden. Die nachfolgende Grafik zeigt ein Beispiel für eine komplexere Kundenstruktur, wie diese mit LiveConfig möglich ist: Abbildung 1.1. Beispiel für eine komplexere Kundenstruktur 2 Architektur • Der LiveConfig-Administrator hat zwei Benutzer angelegt: admin und support. Außerdem hat er sich einen „eigenen“ Webspace (myweb1, z.B. für die eigene Website) eingerichtet. Außerdem hat er drei Kunden angelegt: Resale GmbH, Bert Beispiel und Muster GmbH. • Der Kunde Muster GmbH hat mehrere Webspace-Verträge (in diesem Beispiel einen für die Firmen- und einen für eine Produktwebsite). Die einzelnen Verträge können sich bei einem Multi-Server-Setup auch auf verschiedenen Webservern befinden und dennoch zentral unter einer Adresse verwaltet werden. • Der Kunde Resale GmbH hat einen klassischen Wiederverkäufer-Vertrag, mit dem die Kunden Daniel Demo und Musterfrau KG angelegt wurden. • Der Kunde Musterfrau KG hat ebenfalls einen Reseller-Vertrag, in dessen Rahmen ein „eigener“ Webspace (z.B. für die Website der Firmenzentrale) sowie ein weiterer Kunde (z.B. für eine Niederlassung) eingerichtet wurde. Lassen Sie sich durch diese vielen Begriffe und Möglichkeiten bitte nicht abschrecken. Im einfachsten Fall legen Sie als Administrator einfach Ihre selbst genutzten Webspaces (Verträge) direkt an, oder greifen auf aus anderen Controlpanels gewohnte Strukturen („admin“ - „res1“ - „web1“ etc.) zurück. 1.3. Architektur LiveConfig ist modular aufgebaut und somit langfristig an neue Anforderungen anpassbar. Es wurde von Anfang zur Verwaltung von mehreren Servern entwickelt, kann aber genauso auch auf nur einem einzigen Server eingesetzt werden. 3 Einführung Abbildung 1.2. LiveConfig-Architektur In einer LiveConfig-Installation wird zwischen dem Server und den Clients unterschieden. Der LiveConfig-Server (siehe Kapitel 2, LiveConfig-Server) stellt die Weboberfläche und die SOAPSchnittstelle zur Verfügung, und steht mit allen Clients in Kontakt. Diese wiederrum kümmern sich um die tatsächliche Systemverwaltung: sie steuern Prozesse, liefern Statistik-Informationen an den LiveConfig-Server, legen neue Benutzer an, und so weiter. Der LiveConfig-Server enthält einen integrierten Client, um den lokalen Server zu verwalten, für weitere Server reicht die Installation eines LiveConfig-Clients (siehe Kapitel 3, LiveConfig-Client). Die eigentliche Serversteuerung, also beispielsweise die Erzeugung von Konfigurationsdateien oder das Starten von Diensten, wird mit Hilfe eigener Scripte durchgeführt. Diese Scripte sind in der freien Programmiersprache „Lua“ geschrieben, und liegen LiveConfig im Quelltext bei. Für spezielle Anforderungen können Sie diese Scripte entsprechend Ihrer Bedürfnisse anpassen - Sie müssen sich also nicht mit verschlüsselten Programmen herumärgern, sondern bleiben unabhängig und flexibel. Weitere Informationen finden Sie in Abschnitt 8.2, „ Lua API “. 4 Vorteile 1.4. Vorteile Die Vorteile von LiveConfig im Vergleich zu anderen Produkten sind: • Unabhängigkeit von PHP: PHP-Updates haben keinen Einfluss auf LiveConfig. Bieten Sie Ihren Kunden die PHP-Version an, die nachgefragt wird - nicht die, die Ihr Control Panel benötigt um zu funktionieren. • Maximale Effizienz: LiveConfig ist in C/C++ programmiert - es benötigt keinen Interpreter und keine Datenbank. Somit bleiben Ihnen mehr Ressourcen für die eigentlichen Serveranwendungen. • Minimal-Invasive Installation: Für alle unterstützten Distributionen liegen native Installationspakete (.deb/.rpm/.ebuild/...) vor. Sie könnten LiveConfig jederzeit wieder rückstandslos deinstallieren (falls Sie das wirklich möchten ;-). LiveConfig erkennt und berücksichtigt die jeweilige Distribution und verhält sich genau so, wie es auf dieser Distribution „üblich“ ist. • Sichere Weboberfläche: Jede einzelne Formulareingabe auf der Weboberfläche wird durch LiveConfig untersucht, bevor die Daten weiterverarbeitet werden. XSS und SQL-Injections haben somit keine Chance. • Zwei-Faktor-Authentifizierung: Für mehr Sicherheit bei der Anmeldung kann eine ZweiFaktor-Authentifizierung aktiviert werden. Diese ist kompatibel mit dem kostenlosen Google Authenticator und erfordert keine Hardware-Tokens oder externe Dienstleister. • Benutzer- und Rechteverwaltung: Mit LiveConfig können einem Kunden mehrere Benutzer zugeordnet werden. Die Berechtigungen jedes Benutzers können wiederum individuell verwaltet werden. Und zwar ohne komplexe ACL-Strukturen, sondern mit einem absolut intuitiv bedienbarem „Rechte-Baum“. • Transparente Konfigurationsverwaltung: Die Erstellung der einzelnen Konfigurationsdateien erfolgt durch quelloffene Lua-Scripte. Lua ist eine kompakte und sehr einfach erlernbare Programmiersprache - Sie haben somit die Möglichkeit, auf den gesamten Prozess der Dateierzeugung Einfluß zu nehmen. • Einzigartiger Datenschutz: Alle Objekte, welche mit LiveConfig bearbeitet werden, haben individuell verschlüsselte IDs. Somit ist es Außenstehenden nicht möglich herauszufinden, wie viele der jeweiligen Objekte (Kunden, Domains, Server, ...) mit LiveConfig verwaltet werden. • Reines HTML: LiveConfig „spricht“ reines HTML. Für die dynamische Datenaktualisierung im Browser kommen Ajax und HTML5 zum Einsatz. Die Weboberfläche kommt ohne Adobe® Flash® aus, und funktioniert somit z.B. auch auf dem iPad® oder dem iPhone™. 5 Einführung • SOAP-Schnittstelle: Über die standardmäßig enthaltene SOAP-Schnittstelle können neue Kunden, Benutzer, Domains und vieles mehr automatisiert angelegt werden. Ideal für die Anbindung an eigene Bestellsysteme. • Volle IPv6-Unterstützung: Sowohl LiveConfig selbst als auch alle damit erzeugten Konfigurationsdateien sind komplett IPv6-fähig (natürlich auch die Website und Lizenzserver von LiveConfig selbst) • Internationalisierte Domainnamen (IDNs): „Umlaut-Domains“ werden ebenfalls vollständig unterstützt. Bei der Suche nach Domainnamen wird beispielsweise nach der Punycode- und der Unicode-Darstellung gleichzeitig gesucht. • Unterstützung mehrerer Webserver: mit LiveConfig können Sie sowohl Apache httpd als auch NGINX konfigurieren - und sogar beide Server parallel nutzen, so dass einzelne Subdomains wahlweise auf einem der beiden Webserver deployed werden. 1.5. Sicherheit Da LiveConfig einen „root-Zugriff“ auf allen damit verwalteten Servern besitzt, wurde bei der Entwicklung besonders viel Wert auf die Sicherheit gelegt. So werden beispielsweise sämtliche Eingaben in Web-Formularen mittels sogenannter „regulärer Ausdrücke“ vorab auf ihre Plausibilität geprüft. Die integrierte Datenbank-Schnittstelle arbeitet mit „Prepared Statements“, was klassische „SQL Injections“ praktisch unmöglich macht. Ein weiterer Schwerpunkt liegt in der Vermeidung von Information Leakage. Alle Objekt-IDs werden dem Benutzer nur verschlüsselt angezeigt - man kann also anhand der IDs von Objekten nicht auf deren Anzahl schließen. So ist es beispielsweise einem Reseller nicht möglich herauszufinden, wie viele andere Kunden oder Domains dessen Lieferant mit LiveConfig verwaltet. Nicht zuletzt speichert LiveConfig alle Passwörter und sonstige sensible Informationen (z.B. private Schlüssel für SSL-Zertifikate) ausschließlich als „gesalzene“ Hashes oder stark verschlüsselt. Die Anmeldung an LiveConfig erkennt und blockiert automatisch Brute-Force-Angriffe und kann mittels Zwei-Faktor-Authentifizierung zusätzlich abgesichert werden. 1.6. Lizenzmodell LiveConfig ist in drei verschiedenen Versionen erhältlich: • Die Basic-Lizenz richtet sich an private Endkunden und Nutzer von (kleinen) virtuellen Servern. Mit dieser Lizenz können u.a. bis zu 10 Benutzer verwaltet werden, aber keine zentralen Dienste, Hosting-Angebote, Reseller oder Kunden. • Die Standard-Lizenz erlaubt die unbegrenzte Verwaltung eines Servers - egal, wie viele Benutzer oder Domains damit eingerichtet werden. 6 Lizenzmodell • Die Business-Lizenz ermöglicht zusätzlich die Verwaltung mehrerer Server (welche auch jeweils eine gültige Basic- oder Standard-Lizenz benötigen) über eine zentrale Weboberfläche. Genauere Informationen zum jeweiligen Funktionsumfang zeigt folgende Tabelle: LiveConfig Basic LiveConfig Standard LiveConfig Business Kunden verwalten - Ja Ja Benutzer verwalten Ja (max. 10) Ja Ja mehrere Server verwalten - - Ja a Hosting-Angebote verwalten - Ja Ja Webspace konfigurieren Ja Ja Ja E-Mail konfigurieren Ja Ja Ja SOAP-API - Ja Ja a Für jeden zu verwaltenden Server ist eine eigene Basic- oder Standard-Lizenz erforderlich. Ein LiveConfig-Server mit einer Business-Lizenz kann beispielsweise auch einen Server mit einer Basic-Lizenz verwalten, auf welchem dann aber u.a. keine weiteren Kunden eingerichtet werden können. 7 8 Kapitel 2. LiveConfig-Server Der LiveConfig-Server ist das Herzstück einer LiveConfig-Installation. Zum einen stellt dieser die Web-Oberfläche zur Programmsteuerung bereit, zum anderen koordiniert dieser die Konfigurations-Aufgaben auf den jeweiligen Servern. Außerdem sammelt der LiveConfig-Server von allen verwalteten Servern laufend Statistik-Informationen und stellt diese grafisch aufbereitet zur Verfügung. 2.1. Voraussetzungen Für die Installation eines LiveConfig-Servers benötigen Sie: • „root-Zugriff“ auf den zu installierenden Server (über Konsole oder SSH) • etwa 30 MB freien Speicherplatz • einen aktuellen Web-Browser (z.B. Mozilla Firefox® ab Version 3.0, Apple Safari® ab Version 3.0, Microsoft® Internet Explorer® ab Version 8) Es werden keine besonderen Softwarepakete benötigt, insbesondere kein PHP, Apache httpd oder MySQL. LiveConfig nutzt lediglich die standardmäßig installierten C-Bibliotheken (libc). Achten Sie bitte auch auf folgende allgemeine Voraussetzungen: • Korrekte Uhrzeit: die Uhrzeit auf dem Server muss korrekt eingestellt sein, da es sonst zu Problemen insbesondere bei SSL-Verbindungen, beim Mailversand/-Empfang oder mit der Gültigkeit von LiveConfig-Lizenzen kommen kann. Am besten installieren Sie das Paket ntp (zur automatischen Aktualisierung der Uhrzeit über das Network Time Protocol). • Gültiger Hostname & Reverse-DNS: der Server muss einen korrekten Hostnamen besitzen. Mit dem Befehl hostname -f wird der vollständige (qualifizierte) Name angezeigt; dieser sollte aus einem Rechnernamen und einem Domainnamen bestehen. Beispiel: für einen Webserver mit dem Namen www.example.org sollte in der Datei /etc/ hostname lediglich „www“ eingetragen sein; in /etc/hosts sollte ein Eintrag in der Form „<IP-Adresse> <vollständiger Name> <Kurzname>“ stehen, in diesem Fall also z.B. „12.34.56.78 www.example.org www“. Wenn alles richtig konfiguriert ist, liefert der Befehl hostname lediglich „www“ zurück, der Befehl hostname -f dann „www.example.org“. Einen korrekten Reverse-DNS-Namen brauchen Sie vor allem dann, wenn Sie mit dem Server auch E-Mails versenden möchten. Viele Mailserver prüfen standardmäßig, ob der Name des einlieferndes Mailservers mit dessen Reverse-DNS-Namen übereinstimmt. 9 LiveConfig-Server 2.1.1. Firewall-Einstellungen Falls der zu installierende Server von einer vorgeschalteten Firewall geschützt wird, müssen folgende Ports für eingehende Verbindungen freigegeben werden: • TCP Port 8443 (für HTTPS-Zugriff) • Optional: TCP Port 788 (falls sich LiveConfig-Clients mit diesem Server verbinden sollen) • Optional: TCP Port 8080 (falls Sie auch einen unverschlüsselten Zugriff via HTTP erlauben möchten) Die Port-Einstellungen können über die Konfigurationsdatei beliebig geändert werden (siehe Abschnitt 2.4.3, „HTTP-Protokoll-Einstellungen“ und Abschnitt 2.4.4, „ LCCP-Protokoll-Einstellungen “). Außerdem müssen folgende ausgehenden Verbindungen möglich sein: • TCP Port 443 (HTTPS) zum Lizenzserver (license.liveconfig.com) • Optional: TCP Port 443 (HTTPS) zum Update-Server (update.liveconfig.com) zur Installation von Web-Anwendungen, sowie Port 80 (HTTP) zu den Downloadservern der jeweiligen Anwendungen 2.1.2. Dateisystem-Quota Damit der Speicherplatz für die einzelnen Webspaces begrenzt werden kann, muss das Quota-System eingerichtet werden. Installieren Sie hierzu das Paket quota und aktivieren für das unter /var/www/ (bzw. bei OpenSUSE /srv/www/) gemountete Dateisystem die Gruppen-Quotas. • bei ext3/ext4-Dateisystemen tragen Sie in /etc/fstab grpjquota=aquota.group,jqfmt=vfsv0 ein, z.B. so: UUID=[...] / ext3 errors=remount-ro,grpjquota=aquota.group,jqfmt=vfsv0 Mounten Sie das Dateisystem anschließend neu: mount -vo remount <Dateisystem> Danach muss das Quota berechnet werden: quotacheck -vgm <Dateisystem> Schließlich kann das Quota-System aktiviert werden: 10 die Optionen 0 1 Dateisystem-Quota quotaon -vg <Dateisystem> • bei XFS-Dateisystemen kommt es darauf an, ob das Quota auf einem root-Dateisystem (/) oder auf einem anderen Dateisystem aktiviert werden soll. Falls es sich nicht um das root-Dateisystem handelt, fügen Sie in /etc/fstab einfach die Option grpquota an, und mounten es anschließend neu: UUID=[...] /var xfs errors=remount-ro,grpquota 0 1 mount -vo remount <Dateisystem> Falls das Quota aber für das root-Filesystem aktiviert werden soll, müssen Sie die Option rootflags=grpquota in die Boot-Parameter des Kernels mit aufnehmen! Wenn der Server direkt über einen Bootloader wie z.B. Grub startet, tragen Sie diese Option in die entsprechende Konfigurationsdatei ein; beim Start einer virtuellen Maschine muss das ggf. in deren Konfigurationsdatei eingetragen werden (bei Xen beispielsweise mit dem Befehl extra = 'rootflags=grpquota'. • bei Virtuozzo-/OpenVZ-Containern muss das sogenannte Second-Level-Quota für den gewünschten Container aktiviert werden, was nur der Administrator des Host-Systems einrichten kann. Weitere Informationen finden Sie in der Virtuozzo-Dokumentation oder im OpenVZWiki. Setzen Sie hierzu die Option quotaugidlimit auf die maximale Anzahl von Benutzern und Gruppen in dem gewünschten Container, inklusive aller Systembenutzer und -Gruppen. Anschließend muss der Container neu gestartet werden, damit die Änderungen wirksam werden. Folgendes Beispiel zeigt, wie für den Container 101 das Quota für maximal 500 Benutzer/Gruppen eingerichtet wird: #> vzctl set 101 --quotaugidlimit 500 --save Unable to apply new quota values: ugid quota not initialized Saved parameters for CT 101 #> vzctl restart 101 Restarting container Stopping container ... Container was stopped Container is unmounted Starting container ... Container is mounted Adding IP address(es): 192.168.100.101 Setting CPU units: 1000 Configure meminfo: 65536 File resolv.conf was modified Container start in progress... Ob das Gruppen-Quota erfolgreich aktiviert ist, können Sie mit dem Befehl repquoa -ag prüfen: 11 LiveConfig-Server #> repquota -ag *** Report for group quotas on device /dev/disk/by-uuid/[...] Block grace time: 7days; Inode grace time: 7days Block limits File limits Group used soft hard grace used soft hard grace ---------------------------------------------------------------------root -- 1203900 0 0 51406 0 0 [...] LiveConfig funktioniert auch ohne Quota-System, allerdings können dann keine Webspace-Limits eingerichtet sowie keine Informationen über die Anzahl und Größe der von einem Kunden belegten Dateien angezeigt werden. 2.2. Installation Wir empfehlen prinzipiell, LiveConfig auf einem „leeren“ (also frisch installiertem) System aufzusetzen. Sollten Sie bereits Benutzerdaten auf dem Server haben, erstellen Sie vor der Installation bitte eine Sicherungskopie aller Benutzerdaten und Konfigurationsdateien. Die für die Installation von LiveConfig benötigten Dateien können Sie unter der Adresse http:// www.liveconfig.com/de/downloads herunterladen. LiveConfig können Sie entweder direkt installieren (z.B. als .deb- oder .rpm-Paket) oder über ein Repository. Wir empfehlen die Repository-Variante, weil Sie so auch automatisch die neuesten Updates erhalten. In den LiveConfig-Repositories steht auch ein Meta-Paket zur Verfügung, mit welchem alle für einen Webserver üblichen Dienste automatisch installiert werden können. Dieses Paket enthält keine eigenen Dateien, sondern lediglich die Abhängigkeiten zu den von der Distribution bereitgestellten Paketen. Im Folgenden wird jeweils die Installation über die Repositories beschrieben. Ausführliche Informationsanleitungen für eine vollständig „manuelle“ Installation sowie mit weiteren Hinweisen zum „Tuning“ finden Sie in der LiveConfig-Wissensdatenbank unter http://www.liveconfig.com/ de/kb. 2.2.1. Debian GNU/Linux Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository hinzu: wget -O - https://www.liveconfig.com/liveconfig.key | apt-key add cd /etc/apt/sources.list.d wget http://repo.liveconfig.com/debian/liveconfig.list Aktualisieren Sie nun die Repository-Informationen des Systems: aptitude update 12 Debian GNU/Linux Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/ Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf: aptitude install liveconfig-meta LiveConfig selbst installieren Sie schließlich über das Paket liveconfig: aptitude install liveconfig Die Installations-Funktion fragt Sie dann nach einem admin-Passwort für LiveConfig: Zuletzt werden Sie gefragt, ob Sie bereits einen Lizenzschlüssel für LiveConfig besitzten. Wenn ja, dann geben Sie ihn hier einfach ein, ansonsten lassen Sie die Eingabe leer. LiveConfig wird anschließend automatisch gestartet und ist per Browser unter https://<Server-IP>:8443/ erreichbar. 13 LiveConfig-Server 2.2.2. Ubuntu Linux Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository hinzu: wget -O - https://www.liveconfig.com/liveconfig.key | sudo apt-key add cd /etc/apt/sources.list.d sudo wget http://repo.liveconfig.com/debian/liveconfig.list Aktualisieren Sie nun die Repository-Informationen des Systems: sudo aptitude update Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/ Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf: sudo aptitude install liveconfig-meta LiveConfig selbst installieren Sie schließlich über das Paket liveconfig: sudo aptitude install liveconfig Die Installations-Funktion fragt Sie dann nach einem admin-Passwort für LiveConfig: Zuletzt werden Sie gefragt, ob Sie bereits einen Lizenzschlüssel für LiveConfig besitzten. Wenn ja, dann geben Sie ihn hier einfach ein, ansonsten lassen Sie die Eingabe leer. 14 OpenSUSE LiveConfig wird anschließend automatisch gestartet und ist per Browser unter https://<Server-IP>:8443/ erreichbar. 2.2.3. OpenSUSE Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository hinzu: rpm --import https://www.liveconfig.com/liveconfig.key zypper addrepo -f http://repo.liveconfig.com/opensuse/liveconfig.repo Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/ Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf: zypper install liveconfig-meta Wenn Sie das Meta-Paket installiert haben, rufen Sie bitte anschließend das Programm /usr/ bin/mysql_secure_installation auf, um unnötige Testzugänge zur MySQL-Datenbank zu löschen und ein MySQL-root-Passwort einzurichten. Falls Sie suPHP nutzen möchten, gehen Sie bitte wie folgt vor: • Installieren Sie das Paket suphp mit folgendem Befehl: rpm -i http://download.opensuse.org/repositories/server:/php/openSUSE_12.1/x86_64/ suphp-0.7.1-4.1.x86_64.rpm • Korrigieren Sie in der Datei /etc/suphp.conf die Einstellungen für docroot, check_vhost_docroot, umask und die Handler-Funktion wie folgt: 15 LiveConfig-Server ;Path all scripts have to be in docroot=/srv/www [...] ;Check whether script is within DOCUMENT_ROOT check_vhost_docroot=false [...] ;Umask to set, specify in octal notation umask=0022 [...] [handlers] ;Handler for php-scripts application/x-httpd-php="php:/usr/bin/php-cgi" • Zuletzt nehmen Sie das suPHP-Modul noch in die Liste der Apache-Module mit auf und starten Apache neu: sysconf_addword /etc/sysconfig/apache2 APACHE_MODULES suphp systemctl restart apache2.service LiveConfig selbst installieren Sie schließlich über das Paket liveconfig: zypper install liveconfig LiveConfig wird anschließend automatisch gestartet und ist per Browser unter https://<Server-IP>:8443/ erreichbar. Melden Sie sich umgehend dort an und ändern Sie das Standard-Passwort! 2.2.4. CentOS Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository hinzu: rpm --import https://www.liveconfig.com/liveconfig.key cd /etc/yum.repos.d curl -Os http://repo.liveconfig.com/centos/liveconfig.repo Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/ Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf: yum install liveconfig-meta Wenn Sie das Meta-Paket installiert haben, rufen Sie bitte anschließend das Programm /usr/ bin/mysql_secure_installation auf, um unnötige Testzugänge zur MySQL-Datenbank zu löschen und ein MySQL-root-Passwort einzurichten. Sofern Sie die lokale CentOS-Firewall nutzen, müssen Sie außerdemnoch noch die entsprechenden Ports für den Zugriff auf den Apache-Webserver freigeben: lokkit --service=http --service=https 16 Datenbank Falls Sie suPHP nutzen möchten, gehen Sie bitte wie folgt vor: • Fügen Sie das Repository von Repoforge hinzu: rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforgerelease-0.5.2-2.el6.rf.x86_64.rpm • Installieren Sie das Paket mod_suphp: yum install mod_suphp • Korrigieren Sie in der Datei /etc/suphp.conf die Einstellungen check_vhost_docroot, umask und die Handler-Funktion wie folgt: für ;Path all scripts have to be in ;Check whether script is within DOCUMENT_ROOT check_vhost_docroot=false [...] ;Umask to set, specify in octal notation umask=0022 [...] [handlers] ;Handler for php-scripts x-httpd-php="php:/usr/bin/php-cgi" • Zuletzt starten Sie den Apache-Webserver neu: service httpd restart LiveConfig selbst installieren Sie schließlich über das Paket liveconfig: zypper install liveconfig Um auf LiveConfig zugreifen zu können, müssen Sie den Port 8443 noch in der Firewall freigeben: lokkit -p 8443:tcp LiveConfig wird anschließend automatisch gestartet und ist per Browser unter https://<Server-IP>:8443/ erreichbar. Melden Sie sich umgehend dort an und ändern Sie das Standard-Passwort! 2.3. Datenbank LiveConfig enthält eine integrierte Datenbank auf Basis von SQLite und benötigt daher prinzipiell keine externe Datenbank. Interne Lasttests haben gezeigt, dass sich auch größere Kundenzahlen (z.B. 2.000 Kunden mit 5.000 Domains) problemlos mit der integrierten Datenbank verwalten lassen. Selbstverständlich können Sie LiveConfig aber auch mit einer anderen Datenbank als Backend betreiben. Derzeit wird MySQL als externe Datenbank unterstützt. 17 LiveConfig-Server 2.3.1. MySQL LiveConfig kann zur Verwendung von MySQL als Datenbank-Backend konfiguriert werden. Hierbei sind folgende Hinweise zu beachten: • Für eine optimale Performance empfehlen wir, mindestens MySQL 5.1.17 einzusetzen. Frühere Versionen unterstützen keinen Query-Cache für die von LiveConfig verwendete Schnittstelle (siehe MySQL Referenzhandbuch, „Wie der Query Cache funktioniert“). • Für die Transaktionssicherheit muss MySQL den Storage-Typ „InnoDB“ unterstützen - standardmäßig ist das in MySQL aktiviert. Verwenden Sie LiveConfig nicht mit MyISAM-Tabellen! LiveConfig ist auf Transaktionssicherheit angewiesen. • LiveConfig enthält bereits die notwendige MySQL-Client-Bibliothek (/usr/lib/liveconfig/libmysqlclient_r.so) - zumindest für LiveConfig muss also kein Client-Paket der Distribution installiert werden. Melden Sie sich als root-Benutzer an der MySQL-Konsole an, und erzeugen Sie eine neue Datenbank für LiveConfig. Sie können dafür einen beliebigen Datenbanknamen verwenden: mysql> create database LIVECONFIG; Erstellen Sie anschließend einen neuen Datenbank-Benutzer mit einem beliebigen, sicheren (!) Passwort: mysql> grant all on LIVECONFIG.* to "liveconfig"@"localhost" identified by "SaFePaSsWoRd"; Falls MySQL auf einem anderen Server als LiveConfig läuft, tragen Sie statt localhost die entsprechende IP-Adresse ein. Nun importieren Sie die vorbereitete MySQL-Tabellenstruktur. Im Verzeichnis /usr/share/doc/liveconfig liegt diese als komprimierter SQL-Dump bereit: Bitte beachten Sie, dass beim Import des Datenbank-Dumps eventuell bereits vorhandene Tabellen ohne Rückfrage gelöscht werden! Sollten Sie LiveConfig bereits mit MySQL genutzt haben, erstellen Sie vorher entsprechend ein Backup Ihrer Daten. $> cd /usr/share/doc/liveconfig $> gunzip db-mysql.sql.gz $> mysql -u liveconfig -p -h localhost LIVECONFIG < db-mysql.sql Enter password: ************ 18 Konfiguration Zum Schluß öffnen Sie die Konfigurationsdatei /etc/liveconfig/liveconfig.conf und bearbeiten die Datenbank-Einstellungen, z.B.: db_driver db_host db_name db_user db_password = = = = = mysql localhost LIVECONFIG liveconfig SaFePaSsWoRd Starten Sie LiveConfig nun neu (/etc/init.d/liveconfig restart) - und alles sollte funktionieren. Falls LiveConfig nicht startet, werfen Sie einen Blick in die Logdatei (/var/log/liveconfig/liveconfig.log). 2.4. Konfiguration Die Konfigurationsdatei liegt normalerweise unter /etc/liveconfig/liveconfig.conf oder kann mit der Option -c DATEI (bzw. --config=DATEI) ausgewählt werden. Die Konfigurationsdatei enthält üblicherweise Anweisungen der Form Befehl = Wert. Ein Befehl darf nur aus Buchstaben und dem Unterstrich (_) bestehen. Unbekannte Befehle werden nicht akzeptiert (eine Fehlermeldung wird dann beim Lesen der Konfigurationsdatei ausgegeben). Ein Wert kann nur dann Leerzeichen enthalten, wenn der komplette Wert mit doppelten Anführungszeichen umgeben wird. Wenn eine Zeile ein „#“-Zeichen enthält, wird der Rest der Zeile ignoriert (außer das „#“ ist in einem Wert innerhalb der Anführungszeichen enthalten). 2.4.1. Allgemeine Einstellungen Die allgemeinen Einstellungen sind: • base_path = VERZEICHNIS Legt den Basis-Verzeichnisnamen für relative Pfad-/Dateinamen in der Konfigurationsdatei fest. Wenn Sie einen relativen Pfadnamen (wie z.B. „.“) für base_path verwenden, wird der Ort der LiveConfig-Programmdatei als Startpunkt verwendet. • license_file = DATEI Legt den Namen der Lizenzdatei fest. Diese sollte nur von dem Benutzer lesbar sein, unter welchem LiveConfig ausgeführt wird. Siehe auch Abschnitt 2.6, „ Lizenz-Aktivierung “. • log_file = DATEI | syslog 19 LiveConfig-Server Legt den Namen der Logdatei fest. Diese Datei (oder das Verzeichnis in welchem diese Datei erzeugt werden soll) muss von dem Benutzer schreibbar sein, unter welchem liveconfig ausgeführt wird. Wenn bereits eine Datei mit diesem Namen existiert, dann darf diese keine Spezialdatei sein (wie etwa ein symbolischer Link, eine Pipe, etc.). Wird log_file auf den Wert syslog gesetzt, dann sendet LiveConfig alle Log-Meldungen an den System-Protokolldienst syslog. • log_level = emerg | alert | crit | err | warning | notice | info | debug Setzt den Wert, ab dem Log-Meldungen protokolliert werden. Standard-Einstellung ist info. • pid_file = DATEI Legt den Namen der PID-Datei fest. Diese Datei (oder das Verzeichnis in welchem diese Datei erzeugt werden soll) muss von dem Benutzer schreibbar sein, unter welchem liveconfig ausgeführt wird. Die PID-Datei wird verwendet, um die Prozess-ID des aktuell laufenden LiveConfig-Prozesses darin zu speichern. Unter WIN32 wird diese Option stillschweigend ignoriert (unter Windows werden keine PID-Dateien erzeugt). • resource_path = VERZEICHNIS Legt den Verzeichnisnamen fest, in welchem sich die Ressourcen-Dateien von LiveConfig befinden. • library_path = VERZEICHNIS Legt den Verzeichnisnamen fest, in welchem sich zusätzliche Bibliotheks-Dateien (z.B. Datenbank-Treiber) befinden. • libexec_path = VERZEICHNIS Legt den Verzeichnisnamen fest, in welchem sich zusätzliche Skripte und Hilfsprogramme (z.B. Lua-Scripte, lclogsplit-Programm) befinden. Auf Linux-Systemen ist das üblicherweise das selbe Verzeichnis wie library_path. • user = BENUTZER Legt den Systembenutzer fest, auf den zur Ausführung aller unprivilegierten Operationen gewechselt wird (z.B. Frontend-Webserver, Abfrage von Systemstatistiken, etc.). Falls dieser nicht definiert wird, wird die Benutzer-ID -1 verwendet. LiveConfig muss als root-Benutzer gestartet werden, um später zu einem weniger privilegierten Benutzer wechseln zu können. Wird LiveConfig als nicht-root-Benutzer gestartet, wird dieses weiterhin als dieser Benutzer laufen. 20 Datenbank-Einstellungen • group = GRUPPE Legt die Systemgruppe fest, auf die zur Ausführung aller unprivilegierten Operationen gewechselt wird (siehe user). Falls diese nicht definiert wird, wird die Standard-Gruppe des unter user gesetzten Benutzers verwendet. 2.4.2. Datenbank-Einstellungen Die folgenden Optionen dienen zur Konfiguration des Datenbank-Zugriffs für LiveConfig: • db_driver = TREIBER Legt den zu verwendenden Datenbanktreiber fest. Gültige Werte sind: • mysql - zur Verbindung mit einer MySQL-Datenbank (mind. Version 5.0) - siehe Abschnitt 2.3.1, „ MySQL “ • sqlite - zur Verwendung der integrierten SQLite-Datenbank (datei-basiert) • db_host = SERVERNAME [MYSQL] Einstellung des Datenbank-Servers. • db_name = NAME [MYSQL, SQLite] Einstellung des zu verwendenden Datenbank-Namens. Bei SQLite legt diese Einstellung den Dateinamen der Datenbank fest. • db_user = BENUTZER [MYSQL] Benutzername für die Datenbank-Anmeldung. • db_password = PASSWORT [MYSQL] Passwort für die Datenbank-Anmeldung. 2.4.3. HTTP-Protokoll-Einstellungen Die HTTP-Protokoll-spezifischen Einstellungen sind: • http_socket = ADRESSE[:PORT] Bestimmt die Netzwerkadresse, auf der auf eingehende HTTP-Verbindungen gewartet wird. Optional kann eine Portnummer angegeben werden. Sowohl IPv4- als auch IPv6-Adressen sind erlaubt. Wird die Adresse * angegeben, so nimmt LiveConfig sowohl auf allen IPv4- als auch auf 21 LiveConfig-Server allen IPv6-Adressen Verbindungen an (bei :: nur auf allen IPv6-Schnittstellen, bei 0.0.0.0 nur auf allen IPv4-Schnittstellen!). Beispiele für gültige Adressen sind: *:8888 # warte auf jeder IPv4- und IPv6 Adresse auf Port 8888 [::]:8888 # warte auf jeder IPv6 Adresse auf Port 8888 0.0.0.0 # warte auf jeder IPv4-Adresse auf dem Standard-Port (8080) :: # warte auf jeder IPv6-Adresse auf dem Standard-Port (8080) 12.34.56.78 # warte nur auf der IPv4-Adresse 12.34.56.78 (Port 8080) Der Befehl http_socket kann mehrfach verwendet werden, um mehrere (verschiedene) Ports zu öffnen. • http_ssl_socket = ADRESSE[:PORT] Das selbe wie http_socket, außer das ein Port für eingehende HTTPS-Verbindungen (SSL) geöffnet wird. Das SSL-Zertifikat wird aus der Datei geladen, die mit http_ssl_certificate spezifiziert wird. Der Standard-Port für SSL-Verbindungen ist 8443. Wird weder ein http_socket- noch ein http_ssl_socket-Befehl angegeben, dann öffnet LiveConfig standardmäßig einen HTTPS-Port an der Adresse *:8443. • http_access_log = DATEINAME Legt die Log-Datei für HTTP-Zugriffe fest. Das Log-Format ist das selbe wie das „Combined Log Format“ (CLF) beim Apache httpd Webserver. • http_htdocs_path = VERZEICHNIS Verzeichnis für statische Web-Dateien (z.B. Kunden-Logos, APS Icons, etc.). LiveConfig muss Schreibrechte für dieses Verzeichnis haben. • http_read_timeout = TIMEOUT Setzt das Lese-Timeout für HTTP-Zugriffe auf TIMEOUT Sekunden. • http_keepalive_timeout = TIMEOUT Setzt das HTTP Keep-Alive Timeout auf TIMEOUT Sekunden. • http_keepalive_requests = ANZAHL Setzt die maximale Anzahl von Keep-Alive-Requests auf ANZAHL Zugriffe pro HTTP-Verbindung. • http_max_connections = ANZAHL 22 HTTP-Protokoll-Einstellungen Begrenzt die maximale Anzahl gleichzeitig geöffneter HTTP-Verbindungen auf ANZAHL. • http_ssl_certificate = DATEINAME Spezifiziert die Datei, aus welcher das SSL-Zertifikat und der private SSL-Schlüssel (PEMcodiert) geladen werden. Weitere Informationen zum Einrichten eines SSL-Zertifikats siehe Abschnitt 2.5, „SSL-Zertifikat verwenden“ • http_redirect = STATUS URI ZIEL Leitet Anfragen für URI um zu ZIEL, und verwendet dabei den HTTP-Status STATUS. Gültige Werte für STATUS sind 301 (dauerhafte Umleitung) oder 302 (vorübergehende Umleitung). Alle URIs müssen mit einem Schrägstrich beginnen. Umleitungen und Umschreibungen (s.u.) haben bei der Verarbeitung von HTTP-Zugriffen die höchste Priorität, somit kann praktisch jede URI umgeleitet werden. Die URI muss jedoch exakt mit der Anfrage übereinstimmen; eine Weiterleitung von Zugriffen mit einem bestimmten Präfix ist nicht möglich. Meistens wird eine Weiterleitung auf die Anmeldeseite gewünscht: http_redirect = 301 / /liveconfig/login Zugriffe können auch auf eine beliebige externe Webseite umgeleitet werden: http_redirect = 301 / http://www.example.test/customer-login/ • http_rewrite = URI ZIEL Schreibt Anfragen für URI um auf ZIEL, ohne eine HTTP-Weiterleitung zu erzeugen. Alle URIs müssen mit einem Schrägstrich beginnen, ein Umschreiben auf ein externes Ziel ist nicht möglich. Umleitungen und Umschreibungen haben bei der Verarbeitung von HTTP-Zugriffen die höchste Priorität, somit kann praktisch jede URI umgeschrieben werden. Die URI muss jedoch exakt mit der Anfrage übereinstimmen; eine Weiterleitung von Zugriffen mit einem bestimmten Präfix ist nicht möglich. Häufig möchte man eine "robots.txt"-Datei direkt erreichbar haben: http_rewrite = /robots.txt /res/m/liveconfig/robots.txt • http_canonical_host = HOSTNAME Verwende HOSTNAME als offiziellen Servernamen für die LiveConfig-Weboberfläche. • http_canonical_redirect = URL Wenn http_canonical_host definiert ist und ein Benutzer sich über einen anderen Servernamen mit LiveConfig verbindet, kann er an die hier angegebene URL weitergeleitet werden. 23 LiveConfig-Server • http_hsts_time = ZEIT Aktiviert HTTP Strict Transport Security (HSTS) für SSL-Verbindungen. Der Parameter TIME definiert die Zeit in Sekunden, für die Besucher nur über eine SSL-gesicherte Verbindung auf LiveConfig zugreifen dürfen (empfohlen: 31536000 Sekunden = 12 Monate). Die Standardeinstellung ist 0 (aus). Wenn die Einstellung http_canonical_host gesetzt ist, dann gilt HSTS nur für diesen Namen - Weiterleitungen mittels http_canonical_redirect sind also weiterhin möglich. Zum Testen der Einstellung empfehlen wir, erst mal einen „kleinen“ Wert für ZEIT zu setzen, beispielsweise 600 Sekunden (= 10 Minuten). Sollte etwas nicht richtig funktionieren werden so die LiveConfig-Besucher nicht für einen womöglich längeren Zeitraum ausgesperrt. 2.4.4. LCCP-Protokoll-Einstellungen Das LiveConfig Client Protokoll (LCCP) wird für die Kommunikation zwischen einem LiveConfig-Server und einem LiveConfig-Client verwendet. Die Übertragung erfolgt komplett verschlüsselt und ist auf Performance optimiert. Damit ein LiveConfig-Server mehrere LiveConfig-Clients verwalten kann, muss dieser mit einer Business-Lizenz betrieben werden - siehe Abschnitt 1.6, „Lizenzmodell“. Ein LiveConfig-Server mit einer Basicoder Standard-Lizenz ignoriert eventuelle LCCP-Einstellungen der Konfigurationsdatei. Die LCCP-spezifischen Einstellungen sind: • lccp_socket = ADRESSE[:PORT] Bestimmt die Netzwerkadresse, auf der eingehende LCCP-Verbindungen erwartet werden. Optional kann eine Portnummer angegeben werden. Sowohl IPv4- als auch IPv6-Adressen sind erlaubt. Beispiele für gültige Adressen sind: [::]:7888 0.0.0.0 :: 12.34.56.78 # # # # warte warte warte warte auf auf auf nur jeder IPv4- und IPv6 Adresse auf Port 7888 jeder IPv4-Adresse auf dem Standard-Port 788 jeder IPv4- und IPv6-Adresse auf dem Standard-Port (788) auf der IPv4-Adresse 12.34.56.78 (Port 788) Der Befehl lccp_socket kann mehrfach verwendet werden, um mehrere (verschiedene) Ports zu öffnen. Sie brauchen nur dann eine LCCP-Adresse einrichten, wenn Sie mindestens einen LiveConfig-Client haben der sich mit diesem Server verbinden soll. 2.5. SSL-Zertifikat verwenden Die Verwendung eines SSL-Zertifikats für LiveConfig wird über die Konfigurations-Einstellung http_ssl_certificate gesteuert. Dabei verhält sich LiveConfig wie folgt: 24 Lizenz-Aktivierung • Ist http_ssl_certificate auskommentiert aber mindestens ein HTTPS-Port konfiguriert, dann erzeugt LiveConfig bei jedem Start automatisch ein temporäres, selbst-signiertes SSLZertifikat. • Ist http_ssl_certificate definiert, aber die angegebene Datei existiert nicht, dann erzeugt LiveConfig ein selbst-signiertes SSL-Zertifikat und schreibt es (mit dem dazugehörigem Schlüssel) in die angegebene Datei (Sie müssen somit nicht nach jedem LiveConfig-Neustart in Ihrem Browser ein neues temporäres Zertifikat akzeptieren). • Ist http_ssl_certificate definiert und die angegebene Datei vorhanden, so wird aus dieser das SSL-Zertifikat und der dazugehörige private Schlüssel gelesen und verwendet. Die Zertifikats-Datei muss folgende Daten PEM-codiert in der angegebenen Reihenfolge enthalten: 1. den privaten Schlüssel für das SSL-Zertifikat (ohne Passwortschutz) 2. das eigentliche SSL-Zertifikat (X.509) 3. eventuelle Zwischenzertifikate, falls der Aussteller des SSL-Zertifikates solche erfordert („Chained SSL“) Bitte achten Sie darauf, dass der private Schlüssel keinen Passwortschutz enthält, da LiveConfig sonst nicht automatisch starten kann! Eine ausführliche Anleitung zum Erstellen und Einrichten eines eigenen SSL-Zertifikats finden Sie im Knowledgebase-Artikel KB#3. 2.6. Lizenz-Aktivierung So lange keine Lizenz für LiveConfig aktiviert wurde, läuft dieses im Demo-Modus. Das bedeutet, dass keine Änderungen vorgenommen werden können, keine Konfigurationsdateien erzeugt werden, etc.. Außerdem wird ein entsprechender Warn-Hinweis auf der Anmelde-Seite dargestellt. Zur Aktivierung Ihrer Lizenz rufen Sie LiveConfig einfach mit der Option --activate auf. Es wird daraufhin geprüft ob eventuell schon eine aktivierte Lizenz vorliegt, ansonsten werden Sie nach dem Aktivierungs-Code gefragt. Zur Lizenz-Aktivierung sendet LiveConfig eine verschlüsselte Anfrage an den Lizenzserver (license.liveconfig.com). Dabei wird ausschließlich der von Ihnen eingegebene Lizenzcode sowie Ihre (externe) IP-Adresse übermittelt - mehr nicht. 25 LiveConfig-Server #> /usr/sbin/liveconfig --activate _ _ ___ __ _ (R) | | (_)_ _____ / __|___ _ _ / _(_)__ _ | |__| \ V / -_) (__/ _ \ ' \| _| / _` | |____|_|\_/\___|\___\___/_||_|_| |_\__, |_____________________________________ |___/ Welcome to the LiveConfig license activation. License key file: '/etc/liveconfig/liveconfig.key' Please enter your license key: #####-#####-##### Generating license activation request, please wait... ok. Connecting to license.liveconfig.com ([62.146.188.68]:443)... ok. Sending license activation request... ok. => License successfully activated. War die Lizenz-Aktivierung erfolgreich, dann wird der vom Lizenzserver erhaltene Lizenzschlüssel abgespeichert (siehe Konfigurations-Einstellung license_file). Ansonsten wird eine aussagekräftige Fehlermeldung angezeigt. Falls LiveConfig zum Zeitpunkt der Aktivierung bereits läuft, starten Sie den Prozess bitte neu, damit die neuen Lizenzdaten eingelesen werden: /etc/init.d/liveconfig restart. Der Lizenzschlüssel ist einen Monat lang gültig, LiveConfig verlängert diesen jeweils automatisch. Für eine automatisierte Lizenzaktivierung kann der Lizenzschlüssel auch in einer Umgebungsvariable namens LCLICENSEKEY übergeben und LiveConfig mit dem Argument --activate aufgerufen werden - in diesem Fall erfolgt keine interaktive Abfrage. Lizenzcode austauschen Wenn Sie einen Lizenzcode austauschen möchten - beispielsweise wenn Sie bisher eine Testlizenz genutzt haben und nun einen eigenen Lizenzcode besitzen - gehen Sie wie folgt vor: 1. löschen Sie die alte Lizenzdatei (üblicherweise /etc/liveconfig/liveconfig.key) 2. aktivieren Sie den neuen Lizenzcode (siehe oben: liveconfig --activate) 3. starten Sie LiveConfig neu, um den neuen Lizenzcode einzulesen (z.B. via /etc/init.d/ liveconfig restart) 2.7. Passwort-Initialisierung Zur Änderung des Passworts für den admin-Account kann LiveConfig mit der Option --init aufgerufen werden. Dabei muss in der Umgebungsvariable LCINITPW das neue Passwort übergeben werden. Analog kann in der Umgebungsvariablen LCINITSOAP ein Passwort für die SOAPAPI eingerichtet werden. Das Initialisieren/Zurücksetzen dieser Passwörter funktioniert nur solange der Hauptbenutzer das Login admin und die Standard-Kontaktdaten System Administrator besitzt. 26 Programme und Dateien Beispiel: #> LCINITPW=PaSsWoRt /usr/sbin/liveconfig --init /usr/sbin/liveconfig: LiveConfig initialization; using configuration from /etc/ liveconfig/liveconfig.conf /usr/sbin/liveconfig: Database driver loaded: SQLite (3.7.9) /usr/sbin/liveconfig: Password updated successfully. 2.8. Programme und Dateien 2.8.1. LiveConfig Server Der LiveConfig-Server wird üblicherweise unter /usr/sbin/liveconfig installiert. Das Programm unterstützt folgende Kommandozeilen-Optionen: • --activate Aktivierung der LiveConfig-Lizenz. Siehe auch Abschnitt 2.6, „ Lizenz-Aktivierung “. • --config=FILE, -c FILE Verwendet die Konfigurationsdatei FILE. Siehe auch Abschnitt 2.4, „Konfiguration“. • --diag Aufruf einiger Selbsttest/Diagnose-Funktionen (wird eventuell für Support-Anfragen benötigt). • --foreground, -f Startet LiveConfig im Vordergrund. • --help, -h Zeigt eine Übersicht der verfügbaren Kommandozeilen-Parameter an. • --init Initialisierung des Passworts für den admin-Account - siehe Abschnitt 2.7, „ Passwort-Initialisierung “. • -k <Befehl> Steuerung des LiveConfig-Prozesses. Mögliche Befehle: start reload shutdown Prozess starten... Neu laden... (=SIGHUP) beenden... (=SIGINT) 27 LiveConfig-Server stop Stop... (=SIGTERM) • --status, -s Zeigt den aktuellen Serverstatus und ggf. Informationen zum laufenden Serverprozess an. • --configtest, -t Testet nur die Konfigurationsdatei (LiveConfig wird nicht gestartet). Siehe auch Abschnitt 2.4, „Konfiguration“. • --version, -v Zeigt die Versionsnummer der LiveConfig-Server-Software an. 2.8.2. Hilfsprogramme LiveConfig installiert eine Reihe kleiner Hilfsprogramme, welche im Abschnitt 3.5.2, „ Hilfsprogramme “ näher beschrieben werden. Da der LiveConfig-Server auch einen integrierten Client enthält, werden diese Programme auch mit dem Server-Paket installiert. Es handelt sich dabei um: • lclogparse zur Echtzeit-Analyse von Log-Dateien • lclogsplit zur Aufteilung und Echtzeit-Analyse von Webserver-Zugriffs-Logdateien • lclua, ein Lua-Interpreter mit LiveConfig-Erweiterungen, für das Entwickeln und Testen eigener Lua-Scripte (siehe auch Abschnitt 8.2, „ Lua API “) Außerdem wird mit dem LiveConfig-Server noch folgendes Programm installiert: 2.8.2.1. lcdbbackup Das Programm lcdbbackup ermöglicht das sichere Kopieren von SQLite-Datenbanken. Wenn der LiveConfig-Server mit der integrierten SQLite-Datebank genutzt wird, sollte die Datenbank-Datei (Konfigurations-Anweisung db_name) regelmäßig mit lcdbbackup gesichert werden. Dieses Programm stellt sicher, dass die erzeugte Datenbank-Kopie konsistent ist (bei einem „normalen“ copy kann die Datenbank-Datei eventuell in einem inkonsistenten Zustand kopiert werden, das Backup ist dann wertlos). Aufruf: lcdbbackup <Quelldatei> <Zieldatei> 28 Kapitel 3. LiveConfig-Client Ein mit einer Business-Lizenz ausgestatteter LiveConfig-Server kann beliebig viele weitere Server verwalten, auf welchen lediglich der LiveConfig-Client installiert werden muss. Die Benutzer greifen auf die Web-Oberfläche des zentralen LiveConfig-Servers zu, und dieser koordiniert die Aufgaben auf den LiveConfig-Clients über ein eigenes Kommunikationsprotokoll (LCCP). 3.1. Voraussetzungen Für die Installation eines LiveConfig-Clients benötigen Sie: • „root-Zugriff“ auf den zu installierenden Server (über Konsole oder SSH) • etwa 15 MB freien Speicherplatz • einen LiveConfig-Server (mit dem sich der Client verbinden soll) • einen Lizenzcode für den LiveConfig-Client (Basic- oder Standard-Lizenz) Es werden keine besonderen Softwarepakete benötigt, insbesondere kein PHP, Apache httpd oder MySQL. LiveConfig nutzt lediglich die standardmäßig installierten C-Bibliotheken (libc). 3.1.1. Firewall-Einstellungen Der LiveConfig-Client benötigt keine Firewall-Einstellungen für eingehende Verbindungen; lediglich ausgehende Verbindungen zu folgenden Zielen müssen erlaubt sein: • TCP Port 788 zum LiveConfig-Server (für LCCP-Verbindung) • TCP Port 443 (HTTPS) zum Lizenzserver (license.liveconfig.com) 3.1.2. Dateisystem-Quota Damit der Speicherplatz für die einzelnen Webspaces begrenzt werden kann, muss das Quota-System eingerichtet werden. Installieren Sie hierzu das Paket quota und aktivieren für das unter /var/www/ (bzw. bei OpenSUSE /srv/www/) gemountete Dateisystem die Gruppen-Quotas. Eine ausführliche Anleitung hierzu finden Sie in Abschnitt 2.1.2, „ Dateisystem-Quota “. LiveConfig funktioniert auch ohne Quota-System, allerdings können dann keine Webspace-Limits eingerichtet sowie keine Informationen über die Anzahl und Größe der von einem Kunden belegten Dateien angezeigt werden. 29 LiveConfig-Client 3.2. Installation Für den LiveConfig-Client gelten im Prinzip die selben Hinweise wie für den LiveConfig-Server: die Installation sollte idealerweise auf einem „leeren“ (also frisch installiertem) System durchgeführt und vorhandene Daten ggf. gesichert werden. Die für die Installation des LiveConfig-Clients benötigten Dateien können Sie unter der Adresse http://www.liveconfig.com/de/downloads herunterladen. Der Client kann wahlweise direkt (z.B. als .deb- oder .rpm-Paket) oder über ein Repository installiert werden. Wir empfehlen die Repository-Variante, weil Sie so auch automatisch die neuesten Updates erhalten. In den LiveConfig-Repositories steht auch ein Meta-Paket zur Verfügung, mit welchem alle für einen Webserver üblichen Dienste automatisch installiert werden können. Dieses Paket enthält keine eigenen Dateien, sondern lediglich die Abhängigkeiten zu den von der Distribution bereitgestellten Paketen. Im Folgenden wird jeweils die Installation über die Repositories beschrieben. Ausführliche Informationsanleitungen für eine vollständig „manuelle“ Installation sowie mit weiteren Hinweisen zum „Tuning“ finden Sie in der LiveConfig-Wissensdatenbank unter http://www.liveconfig.com/ de/kb. 3.2.1. Debian GNU/Linux Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository hinzu: wget -O - https://www.liveconfig.com/liveconfig.key | apt-key add cd /etc/apt/sources.list.d wget http://repo.liveconfig.com/debian/liveconfig.list Aktualisieren Sie nun die Repository-Informationen des Systems: aptitude update Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/ Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf: aptitude install liveconfig-meta Den LiveConfig-Client installieren Sie schließlich über das Paket lcclient: aptitude install lcclient Die Installations-Funktion fragt Sie zuerst nach dem LiveConfig-Server mit dem sich dieser Client verbinden soll. Geben Sie dessen Hostnamen oder IP-Adresse an: 30 Debian GNU/Linux Anschließend werden Sie aufgefordert eine eindeutige „Host-ID“ anzugeben. Mit dieser ID kann der neue Client eindeutig vom LiveConfig-Server identifiziert werden; in der Regel sollten Sie hierfür den offiziellen Hostnamen des Clients verwenden: Zuletzt werden Sie gefragt, ob Sie bereits einen Lizenzschlüssel für diesen LiveConfig-Client besitzten. Wenn ja, dann geben Sie ihn hier einfach ein, ansonsten lassen Sie die Eingabe leer. 31 LiveConfig-Client Vor dem ersten Start des LiveConfig-Clients müssen Sie noch die Konfiguration anpassen indem Sie u.a. eine eindeutige Host-ID sowie den zuständigen LiveConfig-Server angeben (siehe Abschnitt 3.3.2, „LCCP-Protokoll-Einstellungen“). 3.2.2. Ubuntu Linux Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository hinzu: wget -O - https://www.liveconfig.com/liveconfig.key | sudo apt-key add cd /etc/apt/sources.list.d sudo wget http://repo.liveconfig.com/debian/liveconfig.list Aktualisieren Sie nun die Repository-Informationen des Systems: sudo aptitude update Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/ Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf: sudo aptitude install liveconfig-meta Den LiveConfig-Client installieren Sie schließlich über das Paket lcclient: sudo aptitude install lcclient Die Installations-Funktion fragt Sie zuerst nach dem LiveConfig-Server mit dem sich dieser Client verbinden soll. Geben Sie dessen Hostnamen oder IP-Adresse an: 32 Ubuntu Linux Anschließend werden Sie aufgefordert eine eindeutige „Host-ID“ anzugeben. Mit dieser ID kann der neue Client eindeutig vom LiveConfig-Server identifiziert werden; in der Regel sollten Sie hierfür den offiziellen Hostnamen des Clients verwenden: Zuletzt werden Sie gefragt, ob Sie bereits einen Lizenzschlüssel für diesen LiveConfig-Client besitzten. Wenn ja, dann geben Sie ihn hier einfach ein, ansonsten lassen Sie die Eingabe leer. 33 LiveConfig-Client Vor dem ersten Start des LiveConfig-Clients müssen Sie noch die Konfiguration anpassen indem Sie u.a. eine eindeutige Host-ID sowie den zuständigen LiveConfig-Server angeben (siehe Abschnitt 3.3.2, „LCCP-Protokoll-Einstellungen“). 3.2.3. OpenSUSE Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository hinzu: rpm --import https://www.liveconfig.com/liveconfig.key zypper addrepo -f http://repo.liveconfig.com/opensuse/liveconfig.repo Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/ Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf: zypper install liveconfig-meta Wenn Sie das Meta-Paket installiert haben, rufen Sie bitte anschließend das Programm /usr/ bin/mysql_secure_installation auf, um unnötige Testzugänge zur MySQL-Datenbank zu löschen und ein MySQL-root-Passwort einzurichten. Falls Sie suPHP nutzen möchten, gehen Sie bitte wie folgt vor: • Installieren Sie das Paket suphp mit folgendem Befehl: rpm -i http://download.opensuse.org/repositories/server:/php/openSUSE_12.1/x86_64/ suphp-0.7.1-4.1.x86_64.rpm • Korrigieren Sie in der Datei /etc/suphp.conf die Einstellungen für docroot, check_vhost_docroot, umask und die Handler-Funktion wie folgt: 34 CentOS ;Path all scripts have to be in docroot=/srv/www [...] ;Check whether script is within DOCUMENT_ROOT check_vhost_docroot=false [...] ;Umask to set, specify in octal notation umask=0022 [...] [handlers] ;Handler for php-scripts application/x-httpd-php="php:/usr/bin/php-cgi" • Zuletzt nehmen Sie das suPHP-Modul noch in die Liste der Apache-Module mit auf und starten Apache neu: sysconf_addword /etc/sysconfig/apache2 APACHE_MODULES suphp systemctl restart apache2.service Den LiveConfig-Client installieren Sie schließlich über das Paket lcclient: zypper install lcclient Vor dem ersten Start des LiveConfig-Clients müssen Sie noch die Konfiguration anpassen indem Sie u.a. eine eindeutige Host-ID sowie den zuständigen LiveConfig-Server angeben (siehe Abschnitt 3.3.2, „LCCP-Protokoll-Einstellungen“). 3.2.4. CentOS Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository hinzu: rpm --import https://www.liveconfig.com/liveconfig.key cd /etc/yum.repos.d curl -Os http://repo.liveconfig.com/centos/liveconfig.repo Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/ Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf: yum install liveconfig-meta Wenn Sie das Meta-Paket installiert haben, rufen Sie bitte anschließend das Programm /usr/ bin/mysql_secure_installation auf, um unnötige Testzugänge zur MySQL-Datenbank zu löschen und ein MySQL-root-Passwort einzurichten. Sofern Sie die lokale CentOS-Firewall nutzen, müssen Sie außerdemnoch noch die entsprechenden Ports für den Zugriff auf den Apache-Webserver freigeben: lokkit --service=http --service=https Falls Sie suPHP nutzen möchten, gehen Sie bitte wie folgt vor: 35 LiveConfig-Client • Fügen Sie das Repository von Repoforge hinzu: rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforgerelease-0.5.2-2.el6.rf.x86_64.rpm • Installieren Sie das Paket mod_suphp: yum install mod_suphp • Korrigieren Sie in der Datei /etc/suphp.conf die Einstellungen check_vhost_docroot, umask und die Handler-Funktion wie folgt: für ;Path all scripts have to be in ;Check whether script is within DOCUMENT_ROOT check_vhost_docroot=false [...] ;Umask to set, specify in octal notation umask=0022 [...] [handlers] ;Handler for php-scripts x-httpd-php="php:/usr/bin/php-cgi" • Zuletzt starten Sie den Apache-Webserver neu: service httpd restart Den LiveConfig-Client installieren Sie schließlich über das Paket lcclient: zypper install lcclient Vor dem ersten Start des LiveConfig-Clients müssen Sie noch die Konfiguration anpassen indem Sie u.a. eine eindeutige Host-ID sowie den zuständigen LiveConfig-Server angeben (siehe Abschnitt 3.3.2, „LCCP-Protokoll-Einstellungen“). 3.3. Konfiguration Die Konfigurationsdatei liegt normalerweise unter /etc/liveconfig/lcclient.conf oder kann mit der Option -c DATEI (bzw. --config=DATEI) ausgewählt werden. Die Konfigurationsdatei enthält üblicherweise Anweisungen der Form Befehl = Wert. Ein Befehl darf nur aus Buchstaben und dem Unterstrich (_) bestehen. Unbekannte Befehle werden nicht akzeptiert (eine Fehlermeldung wird dann beim Lesen der Konfigurationsdatei ausgegeben). Ein Wert kann nur dann Leerzeichen enthalten, wenn der komplette Wert mit doppelten Anführungszeichen umgeben wird. Wenn eine Zeile ein „#“-Zeichen enthält, wird der Rest der Zeile ignoriert (außer das „#“ ist in einem Wert innerhalb der Anführungszeichen enthalten). 36 Allgemeine Einstellungen 3.3.1. Allgemeine Einstellungen Die allgemeinen Einstellungen sind: • base_path = VERZEICHNIS Legt den Basis-Verzeichnisnamen für relative Pfad-/Dateinamen in der Konfigurationsdatei fest. Wenn Sie einen relativen Pfadnamen (wie z.B. „.“) für base_path verwenden, wird der Ort der LiveConfig-Programmdatei als Startpunkt verwendet. • license_file = DATEI Legt den Namen der Lizenzdatei fest. Diese sollte nur für den root-Benutzer lesbar sein. Siehe auch Abschnitt 3.4, „Lizenz-Aktivierung“. • log_file = DATEI | syslog Legt den Namen der Logdatei fest. Diese Datei (oder das Verzeichnis in welchem diese Datei erzeugt werden soll) darf nur für den root-Benutzer schreibbar sein. Wenn bereits eine Datei mit diesem Namen existiert, dann darf diese keine Spezialdatei sein (wie etwa ein symbolischer Link, eine Pipe, etc.). Wird log_file auf den Wert syslog gesetzt, dann sendet LiveConfig alle Log-Meldungen an den System-Protokolldienst syslog. • pid_file = DATEI Legt den Namen der PID-Datei fest. Diese Datei (oder das Verzeichnis in welchem diese Datei erzeugt werden soll) darf nur für den root-Benutzer schreibbar sein. Die PID-Datei wird verwendet, um die Prozess-ID des aktuell laufenden LiveConfig-Client-Prozesses darin zu speichern. Unter WIN32 wird diese Option stillschweigend ignoriert (unter Windows werden keine PID-Dateien erzeugt). • library_path = VERZEICHNIS Legt den Verzeichnisnamen fest, in welchem sich zusätzliche Bibliotheks-Dateien (z.B. Datenbank-Treiber) befinden. • libexec_path = VERZEICHNIS Legt den Verzeichnisnamen fest, in welchem sich zusätzliche Skripte und Hilfsprogramme (z.B. Lua-Scripte, lclogsplit-Programm) befinden. Auf Linux-Systemen ist das üblicherweise das selbe Verzeichnis wie library_path. • user = BENUTZER 37 LiveConfig-Client Legt den Systembenutzer fest, auf den zur Ausführung aller unprivilegierten Operationen gewechselt wird (z.B. Abfrage von Systemstatistiken, etc.). Falls dieser nicht definiert wird, wird die Benutzer-ID -1 verwendet. Der LiveConfig-Client muss als root-Benutzer gestartet werden, um später zu einem weniger privilegierten Benutzer wechseln zu können. Wird der LiveConfig-Client als nicht-root-Benutzer gestartet, läuft dieser durchgehend mit dessen Rechten. • group = GRUPPE Legt die Systemgruppe fest, auf die zur Ausführung aller unprivilegierten Operationen gewechselt wird (siehe user). Falls diese nicht definiert wird, wird die Standard-Gruppe des unter user gesetzten Benutzers verwendet. 3.3.2. LCCP-Protokoll-Einstellungen Das LiveConfig Client Protokoll (LCCP) wird für die Kommunikation zwischen dem LiveConfig-Client und einem LiveConfig-Server verwendet. Die LCCP-spezifischen Einstellungen sind: • host_id = HOST_ID Legt die eindeutige Identifikationskennung für diesen Rechner fest. Sie können eine IP-Adresse, den Rechnernamen oder eine beliebige Zeichenkette mit maximal 128 Zeichen verwenden. Nur ASCII-Zeichen sind erlaubt (keine Umlaute), der Name darf nicht ausschließlich aus Zahlen bestehen. Falls sich die Host-ID ändert, muss die LiveConfig-Lizenz neu aktiviert werden, und die Host-ID ebenfalls beim LiveConfig-Server aktualisiert werden. • server = ADRESSE[:PORT] Legt die Adresse des LiveConfig-Servers fest, zu dem die Verbindung aufgebaut werden soll. Erlaubt sind ein Rechnername, eine IPv4- oder eine IPv6-Adresse. Optional kann eine Portnummer angegeben werden. Beispiele für gültige Adressen sind: [2001:db8::1]:7888 # verbinde zu IPv6-Adresse 2001:db8::1 an Port 7888 192.168.0.10 # verbinde zu IPv4-Adresse 192.168.0.10 an Standard-Port 788 my.host.domain:7888 # verbinde zum Server "my.host.domain" an Port 7888 38 Lizenz-Aktivierung 3.4. Lizenz-Aktivierung Ein LiveConfig-Client kann sich nur mit einer gültigen Lizenz an einem LiveConfig-Server anmelden. Die Lizenzdatei ist digital signiert - somit kann der LiveConfig-Server überprüfen, dass es sich nicht um einen „böswilligen“ Client handelt. Zur Aktivierung muss der LiveConfig-Client mit der Option --activate aufgerufen werden. Sollte bereits eine Lizenzdatei existieren, wird mit einer entsprechenden Fehlermeldung abgebrochen. Ansonsten wird der Lizenzcode abgefragt, an den Lizenzserver gesendet und das Lizenzzertifikat installiert: #> /usr/sbin/lcclient --activate _ _ ___ __ _ (R) ___ _ _ _ | | (_)_ _____ / __|___ _ _ / _(_)__ _ / __| (_)___ _ _| |_ | |__| \ V / -_) (__/ _ \ ' \| _| / _` | | (__| | / -_) ' \ _| |____|_|\_/\___|\___\___/_||_|_| |_\__, | \___|_|_\___|_||_\__|_____________ |___/ Welcome to the LiveConfig license activation. License key file: '/etc/liveconfig/lcclient.key' Please enter your license key: #####-#####-##### Generating license activation request, please wait... ok. Connecting to license.liveconfig.com ([62.146.188.68]:443)... ok. Sending license activation request... ok. => License successfully activated. War die Lizenz-Aktivierung erfolgreich, dann wird der vom Lizenzserver erhaltene Lizenzschlüssel abgespeichert (siehe Konfigurations-Einstellung license_file). Ansonsten wird eine aussagekräftige Fehlermeldung angezeigt. Falls der LiveConfig-Client zum Zeitpunkt der Aktivierung bereits läuft, starten Sie den Prozess bitte neu, damit die neuen Lizenzdaten eingelesen werden: /etc/init.d/lcclient restart. Der Lizenzschlüssel ist einen Monat lang gültig, LiveConfig verlängert diesen jeweils automatisch. Für eine automatisierte Lizenzaktivierung kann der Lizenzschlüssel auch in einer Umgebungsvariable namens LCLICENSEKEY übergeben und LiveConfig mit dem Argument --activate aufgerufen werden - in diesem Fall erfolgt keine interaktive Abfrage. 3.5. Programme und Dateien 3.5.1. LiveConfig Client Der LiveConfig-Client wird üblicherweise unter /usr/sbin/lcclient installiert. Das Programm unterstützt folgende Kommandozeilen-Optionen: • --activate 39 LiveConfig-Client Aktivierung der LiveConfig-Lizenz. Siehe auch Abschnitt 3.4, „Lizenz-Aktivierung“. • --config=FILE, -c FILE Verwendet die Konfigurationsdatei FILE. Siehe auch Abschnitt 3.3, „Konfiguration“. • --diag Aufruf einiger Selbsttest/Diagnose-Funktionen (wird eventuell für Support-Anfragen benötigt). • --foreground, -f Startet LiveConfig im Vordergrund. • --help, -h Zeigt eine Übersicht der verfügbaren Kommandozeilen-Parameter an. • -k <Befehl> Steuerung des LiveConfig Client-Prozesses. Mögliche Befehle: start reload shutdown stop Prozess starten... Neu laden... (=SIGHUP) beenden... (=SIGINT) Stop... (=SIGTERM) • --status, -s Zeigt den aktuellen Status und ggf. Informationen zum laufenden Clientprozess an. • --configtest, -t Testet nur die Konfigurationsdatei (der LiveConfig-Client wird nicht gestartet). Siehe auch Abschnitt 3.3, „Konfiguration“. • --version, -v Zeigt die Versionsnummer der LiveConfig-Client-Software an. 3.5.2. Hilfsprogramme LiveConfig installiert zusätzlich eine Reihe kleiner Hilfsprogramme, welche in diesem Abschnitt näher beschrieben werden. In den meisten Fällen werden Sie diese Tools nicht direkt ausführen, sondern finden diese lediglich in der Prozessliste. 40 Hilfsprogramme 3.5.2.1. lclogparse Das Programm lclogparse wird von LiveConfig intern zur Echtzeit-Analyse von Log-Dateien verwendet. 3.5.2.2. lclogsplit Mit lclogsplit werden die Logdateien für Web-Zugriffe (das klassische access.log) in Echtzeit für alle einzelnen Kunden erzeugt. lclogsplit wird als „Log-Pipe“ im Webserver konfiguriert und verteilt die Log-Dateien gemäß der Konfiguration einer Map-Datei (z.B. /etc/ apache2/accesslog.map). lclogsplit wird automatisch mit dem Webserver gestartet und gestoppt. 3.5.2.3. lclua lclua ist ein Interpreter für Lua-Scripte. Dieses Programm enthält alle LiveConfig-spezifischen Bibliotheken und Erweiterungen, so dass damit Lua-Programme so ausgeführt werden können, wie es der LiveConfig-Client intern auch macht. lclua wird in der Regel nur zur Entwicklung und zum Testen von Lua-Scripten für LiveConfig benötigt. 41 42 Kapitel 4. Erste Schritte Nachdem LiveConfig installiert wurde, öffnen Sie einen Browser und geben Sie die Adresse des LiveConfig-Servers ein. Sofern Sie die Standard-Einstellungen der Konfigurationsdatei beibehalten haben, lautet die Adresse: https://<Server-IP-Adresse>:8443/ Statt der IP-Adresse können Sie - falls bereits vorhanden - auch einen DNS-Namen des Servers verwenden. Falls Sie über eine IPv6-Adresse auf den LiveConfig-Server zugreifen möchten, setzen Sie diese in eckige Klammern, z.B. so: https://[2001:db8::1]:8443/. Falls Sie versehentlich über (unverschlüsseltes) HTTP auf einen SSL-geschützten HTTPS-Port von LiveConfig zugreifen möchten, erkennt LiveConfig das automatisch und erzeugt eine Fehlerseite mit einem Link auf die „richtige“ URL. 4.1. Anmeldung Wenn die Installation erfolgreich war, bekommen Sie die Anmeldeseite präsentiert: Tragen Sie als Benutzername admin ein. Falls Sie bei der Installation nicht ein anderes Passwort eingetragen haben, verwenden Sie hierfür ebenfalls admin. Nach der erfolgreichen Anmeldung erhalten Sie die Übersichtsseite: 43 Erste Schritte 4.2. Einstellungen verwalten Die Verwaltung Ihrer persönlichen Einstellungen erfolgt über den Menüpunkt Verwaltung - Einstellungen: 44 Sprache und Zeitzone 4.2.1. Sprache und Zeitzone Die Sprache, die Sie hier einstellen, wird automatisch dann gewählt, wenn Sie bei der Anmeldung an LiveConfig nicht ausdrücklich eine andere Sprache wählen. Die eingestellte Zeitzone wird immer dann verwendet, wenn irgendwelche Daten/Uhrzeiten angezeigt werden. LiveConfig speichert intern alle Zeitangaben in Weltzeit (UTC) und passt diese dann bei der Ausgabe individuell an. 4.2.2. Passwort ändern Sofern Sie sich noch mit dem Standard-Passwort (admin) angemeldet haben, sollten Sie dieses umgehend ändern. Mit einem Klick auf Passwort ändern... öffnet sich ein Fenster, in dem Sie Ihr altes Passwort sowie das gewünschte neue Passwort angeben können. 4.2.3. Zwei-Faktor-Authentifizierung Um die Sicherheit Ihrer persönlichen LiveConfig-Zugangsdaten zu erhöhen, können Sie die ZweiFaktor-Authentifizierung aktivieren. Hierzu wird neben den bisherigen Informationen (Benutzername und Passwort) ein zusätzlicher Code zur Anmeldung benötigt, der sich alle 30 oder 60 Sekunden ändert. Die Erzeugung dieses Einmal-Passworts (OTP - One Time Password) kann beispielsweise mit einer (kostenlosen) App auf dem Smartphone erfolgen oder mit einem günstigen Hardware-Token am Schlüsselbund. 45 Erste Schritte LiveConfig setzt dabei auf das im Internet-Standard RFC6238 beschriebene TOTP-Verfahren. Dieses ist offen dokumentiert, benötigt keine externen Authentifizierungsserver und kann ohne zusätzliche Kosten genutzt werden. Wir empfehlen hierzu, auf einem Smartphone die kostenlose App Google Authenticator zu installieren. Ein Google-Account wird dazu nicht benötigt, die App läuft lokal auf dem Smartphone und übermittelt auch keine Anmeldedaten an Google. Wenn Sie die App erfolgreich installiert haben, klicken Sie bei Zwei-Faktor-Authentifizierung auf den Button bearbeiten...: Die Bezeichnung dient dazu, bei eventuell mehreren konfigurierten Einmal-Passwörtern im Google Authenticator den Richtigen zu finden; LiveConfig schlägt hier automatisch eine Bezeichnung in der Form „Benutzername (Servername)“ vor. Der Code muss 16 Zeichen lang sein und Base32-konform codiert sein; mit dem Zufall-Button können auch automatisch neue Vorschläge erzeugt werden. Der angezeigte QR-Code enthält die Bezeichnung und den Code; mit dem Google Authenticator können Sie diesen einfach scannen und somit die Daten übernehmen. Schließlich müssen Sie noch Ihr aktuelles Passwort eingeben sowie einen mit den eben angelegten Daten frisch erzeugten OTP-Code - damit wird sichergestellt, dass Sie nur dann die Zwei-Faktor-Authentifizierung aktivieren können, wenn der Token-Generator korrekt funktioniert. Zur Anmeldung an LiveConfig fügen Sie dann ab sofort den jeweils aktuellen Token an Ihr Passwort an. Wenn Ihr Passwort beispielsweise „PaSsWoRt“ lautet und Ihr Token-Generator die Zahl „123456“ anzeigt, dann geben Sie auf der LiveConfig-Anmeldeseite als Passwort „PaSsWoRt123456“ ein. 46 Wiederverkäufer-Einstellungen Es ist absolut wichtig, dass sowohl auf dem Smartphone als auch auf dem LiveConfig-Server die Uhrzeit möglichst exakt eingestellt ist - eine Abweichung von mehr als 30 Sekunden führt dazu, dass keine Tokenbasierte Anmeldung möglich ist! Es wird daher dringend empfohlen, auf dem Server beispielsweise einen NTP Daemon zu installieren, der die Systemzeit laufend korrigiert. Passwort zurücksetzen Wenn Sie Ihren OTP-Token-Generator verlieren sollten, ist eine direkte Anmeldung an LiveConfig nicht mehr möglich. In diesem Fall müssen Sie über die Funktion Passwort vergessen ein neues LiveConfig-Passwort einrichten - dabei wird die Zwei-Faktor-Authentifizierung für den betroffenen Account automatisch deaktiviert. 4.3. Wiederverkäufer-Einstellungen Benutzer mit der Wiederverkäufer-Berechtigung (i.d.R. Server-Administratoren und Reseller) können zusätzliche Einstellungen verwalten. E-Mail-Einstellungen Geben Sie hier an, mit welcher Absenderadresse Mails von LiveConfig versendet werden sollen. Diese Adresse wird z.B. beim Versand einer Passwort-Anforderung verwendet. Die optionale EMail-Signatur wird automatisch an jede Mail angefügt und standardkonform mit zwei Bindestrichen (--) vom Mail-Text getrennt. 47 Erste Schritte Kunden-/Vertragsnummern Legen Sie hier fest, nach welchem Schema neue Kunden- und Vertragsnummern erzeugt bzw. hochgezählt werden sollen: • Präfix für Vertragsnummern: muss mit einem Buchstaben beginnen und darf nur aus Buchstaben, Bindestrich und Unterstrich bestehen; wird automatisch vor neue Vertragsnummern gesetzt (Standard: web). • nächste Vertragsnummer: darf nur aus Zahlen bestehen; diese Nummer wird als nächste automatisch erzeugte Vertragsnummer verwendet (sofern Sie nicht manuell eine andere Nummer beim Anlegen eines neuen Vertrages vergeben) • Nummer erhöhen um: wird eine automatisch erzeugte Vertragsnummer verwendet, so wird für die nächste verfügbare Vertragsnummer automatisch dieser Wert aufaddiert. Ist die Option zufällig aktiviert, wird ein Zufallswert zwischen 1 und dem eingestellten Wert addiert. • nächste Kundennummer: darf nur aus Zahlen bestehen; diese Nummer wird als nächste automatisch erzeugte Kundennummer verwendet • Nummer erhöhen um: hat die selbe Funktion wie bei den Vertragsnummern • Präfix für Benutzernamen: dieses Präfix wird verwendet wenn ein Kunde weitere LiveConfig-Benutzer anlegt. • Präfix für FTP-Zugänge: dieses Präfix wird für zusätzliche FTP-Zugänge verwendet, die ein Kunde anlegt. Erlaubt sind nur Kleinbuchstaben, Zahlen, Bindestrich und Unterstrich. • Präfix für Datenbank-Zugänge: dieses Präfix wird für zusätzliche Datenbank-Zugänge eines Kunden verwendet. Wenn ein Präfix für Benutzer-, FTP- oder Datenbank-Zugänge mit „%c“ beginnt, dann wird dieser Platzhalter durch die jeweilige Vertragsnummer (bei FTP und Datenbanken) bzw. durch den Namen des Haupt-Logins (bei Benutzernamen) ersetzt. Logo Sie können ein eigenes Logo hochladen, welches links oben statt des normalen LiveConfig-Logos angezeigt wird. Dies gilt sowohl für die Anmeldung mit Ihren eigenen Benutzern, als auch für all Ihre Kunden und Wiederverkäufer, so lange diese nicht ggf. ein eigenes Logo einrichten. Das Logo muss eine 32bit PNG-Datei (mit 8bit Alpha-Kanal) sein, darf maximal 50 Pixel hoch sein, maximal 600 Pixel breit und maximal 100 kB groß. 48 Server verwalten 4.4. Server verwalten Über den Menüpunkt Serververwaltung erreichen Sie die Übersicht aller konfigurierten Server: Der lokale Server (also der, auf dem LiveConfig betrieben wird), ist immer automatisch mit der ID localhost eingetragen. Mit der Business-Lizenz können Sie durch einen Klick auf den Server hinzufügen-Button weitere Server für die Verwaltung durch LiveConfig vorbereiten. Mit einem Klick auf einen Listeneintrag öffnen Sie die Detailansicht des gewählten Servers: 49 Erste Schritte Sie erhalten hier eine Übersicht über alle technischen Details des Servers, die CPU-Auslastung, die IP- und MAC-Adressen sowie die Netzwerklast. Auf den Folgeseiten können die einzelnen Serverdienste für die Steuerung durch LiveConfig aktiviert und konfiguriert werden. 4.4.1. Webserver Auf dieser Seite werden alle Einstellungen rund um die Webserver-Software verwaltet. Sollten Sie die Meldung „Keine unterstützten Webserver gefunden“ erhalten, dann installieren Sie bitte die entsprechenden Pakete Ihrer Distribution und starten LiveConfig erneut (/etc/init.d/ liveconfig restart). 50 Webserver Für jede Webserver-Software können Sie festlegen, auf welchen IP-Adressen diese laufen soll. Klicken Sie hiezu einfach auf den „bearbeiten“-Button und klicken die gewünschten IPs an. Der Webserver wird dann nur auf diesen IP-Adressen erreichbar sein; die Zuordnung, welche IPs ggf. für welchen Kunden genutzt werden, erfolgt im Abschnitt „IP-Adressen“ (siehe unten). Apache httpd und NGINX LiveConfig erlaubt auch den gleichzeitigen Betrieb verschiedener Webserver-Software. Sie können also Apache httpd und NGINX optional auch gleichzeitig konfigurieren - aktivieren Sie diese beiden Dienste einfach mit verschiedenen IP-Adressen. Beim Anlegen neuer IP-Gruppen (s.u.) können Sie dann jeweils auswählen, mit welcher Software eine IP-Gruppe genutzt werden soll; bei den Domaineinstellungen können Sie wiederum entscheiden, mit welcher IP-Gruppe (und somit mit welcher Software) eine Subdomain konfiguriert werden soll. Web-Statistiken An dieser Stelle können die Erstellung von Zugriffsstatistiken zentral aktiviert oder deaktiviert sowie die URI festgelegt werden, unter der die Statistiken jeweils erreichbar sein sollen. Außerdem müssen im jeweiligen Kundenvertrag die Zugangsdaten zu den Statistiken eingerichtet werden. Die Erstellung von Zugriffsstatistiken hat keinen Einfluss auf die Berechnung des Web-Traffics durch LiveConfig. 51 Erste Schritte IP-Adressen LiveConfig verwaltet IP-Adressen in Gruppen („IP-Gruppen“). Eine Gruppe kann aus einer oder mehreren Adressen bestehen - eine Domain/Subdomain wird auf dem Webserver dann mit allen IP-Adressen der gewählten IP-Gruppe konfiguriert. Somit können beispielweise multihomed oder IPv6-Dualstack-Adressen bequem und flexibel verwaltet werden. Für jede IP-Gruppe können Sie auswählen, ob diese gemeinsam oder exklusiv genutzt werden soll. Eine gemeinsam genutzte Gruppe steht allen Ihrer Kunden zur Verfügung, eine exklusive Gruppe nur im auszuwählenden Vertrag (egal ob Endkunden- oder Wiederverkäufer-Vertrag). Beispiel: um den Endkunden die Umstellung ihrer Websites auf IPv6 zu vereinfachen, legen Sie einfach eine zweite, „gemeinsame“ IP-Gruppe an, die ebenfalls die bisherige IPv4-Adresse des Servers sowie eine IPv6-Adresse enthält. Die Kunden können dann beim Anlegen einer Subdomain wählen, mit welcher IPGruppe diese konfiguriert werden soll und können diese so wahlweise nur über IPv4 oder über IPv4/IPv6 (DualStack) erreichbar machen. SSL-Zugriff Über die IP-Gruppen wird ebenfalls festgelegt, ob über diese auch HTTPS (SSL) möglich sein darf. Bei gemeinsam genutzten Gruppen muss der verwendete Webserver dabei „SNI“ (Server Name Indication) unterstützen, damit mehrere SSL-Zertifikate auf der selben IP-Adresse genutzt werden können (dies ist aktuell mit allen gängigen Browsern möglich, bis auf den Internet Explorer unter Windows XP, egal welche Version). SNI wird serverseitig normalerweise ab Debian 7 (Wheezy), OpenSUSE 12.1 und CentOS 6 unterstützt. Für kommerzielle Websites wird daher weiterhin die Verwendung einer eigenen, exklusiven IP-Adresse pro SSL-Zertifikat empfohlen. SSL-Server-Chiffres: hier können Sie festlegen, welche Methoden zur SSL-Verschlüsselung vom Webserver unterstützt werden. Die Einstellung „kompatibel“ unterstützt praktisch alle (auch ältere) Browser. Falls Sie eine Zertifizierung nach dem PCI-DSS-Standard benötigen, stellen Sie „PCIkonform“ ein. (Diese Einstellung ist nicht in der LiveConfig-Basic-Version verfügbar) 4.4.2. FTP-Server Für den Betrieb als Webserver wird üblicherweise auch ein FTP-Zugriff auf den Webserver benötigt. LiveConfig ermöglicht die Verwaltung mehrerer FTP-Accounts pro Kunde (bzw. pro Webspace-Vertrag); hierzu muss LiveConfig allerdings die Konfiguration der FTP-Server-Software anpassen. 52 FTP-Server Derzeit unterstützt LiveConfig die FTP-Server ProFTPd und vsftpd. Folgende Einstellungen können vorgenommen werden: • TLS (FTPS): wenn ein SSL-Zertifikat vorhanden ist, kann SSL-Unterstützung für den FTP-Server aktiviert werden. Damit kann ein SSL-fähiger FTP-Client die Anmelde- und Nutzdaten verschlüsselt zum Server übertragen. • nur verschlüsselte Verbindungen: mit dieser Einstellung sind nur verschlüsselte Verbindungen zum FTP-Server erlaubt. • „SSL session reuse“ erforderlich: mit dieser Option erfordert der FTP-Server, dass für SSLDatenverbindungen die Informationen der Anmelde-Session wiederverwendet werden. Nur mit dieser Einstellung sind auch Datenverbindungen zuverlässig abgesichert, allerdings unterstützen einige FTP-Programme diese leider nicht. • Max. Verbindungen: diese Einstellung legt fest, wie viele Verbindungen zum FTP-Server gleichzeitig aufgebaut werden dürfen. Damit kann verhindert werden, dass durch zu viele Verbindungen alle Serverressourcen aufgebraucht werden (DoS). • Max. Verbindungen pro IP: diese Einstellungen begrenzt die Anzahl an gleichzeitigen FTPVerbindungen von der selben IP-Adresse aus. Damit kann verhindert werden, dass ein einziger Benutzer alle erlaubten Verbindungen selbst besetzt (DoS). 53 Erste Schritte • PASV-Port-Bereich: wenn eine Firewall zum Einsatz kommt, kann hiermit der Port-Bereich für passive FTP-Verbindungen eingeschränkt werden. Der Port-Bereich muss zwischen 1024 und 65535 liegen, empfohlen wird ein Wert innerhalb von 49152 und 65534 (IANA-registrierter Bereich für temporäre Ports). 4.4.3. Mailserver Für den Betrieb als Mailserver muss in LiveConfig ein SMTP-Server (Postfix) sowie ein POP3/IMAPServer (Dovecot) eingerichtet werden. Nur wenn beide Dienste konfiguriert sind können Postfächer korrekt angelegt werden. Beim SMTP-Server (Postfix) können Sie zusätzliche folgende Einstellungen bearbeiten: • max. Mail-Größe: legt fest, wie groß eine E-Mail (inklusive aller Anhänge) maximal sein darf, bevor diese von Postfix abgewiesen wird. Bitte beachten Sie, dass aufgrund der Codierung von E-Mails angefügte Anlagen beim Versand knapp 15% größer werden - eine E-Mail mit 20 MB Anlagen würde also zur Übertragung rund 24 MB groß sein. Im Internet sind maximale Mailgrößen von 25-50 MB üblich, manche Systeme nehmen auch nur Mails bis 10 MB an. Allgemein sollten E-Mails möglichst klein sein; zur Übertragung großer Dateien gibt es geeignetere Verfahren (z.B. FTP). • Virenschutz: wenn ein Virenscanner installiert ist (konkret: ClamAV-Milter) dann können einund ausgehende E-Mails automatisch auf Viren untersucht werden. Sollte eine E-Mail ver- 54 Mailserver dächtige Daten enthalten, so wird diese noch während der SMTP-Verbindung abgewiesen, d.h. der Absender bekommt automatisch eine Fehlermeldung durch seinen eigenen Mailserver. • Spam-Filter: wenn SpamAssassin installiert ist, können eingehende E-Mails einer automatischen Spam-Analyse unterzogen werden. Pro Postfach können individuelle Schwellwerte für die Ablehnung bzw. Markierung verdächtiger Mails eingestellt werden. Eine eventuelle Ablehnung einer Spam-Mail wird noch zum SMTP-Zeitpunkt durchgeführt, so dass der Absender darüber informiert wird. • DNS-Blacklists: hier können Sie DNS-Blacklists angeben, bei denen die IP-Adressen eintreffender SMTP-Verbindungen in Echtzeit überprüft werden. Blacklists können nur global aktiviert/deaktiviert werden. Um mehrere Blacklist-Server anzugeben, trennen Sie diese nur mit einem Komma (ohne Leerzeichen). Einige häufig genutzte Dienste sind: • ix.dnsbl.manitu.net - Projekt NiX Spam der Zeitschrift „iX“. • sbl-xbl.spamhaus.org - die kombinierte Spamhaus Block List und Exploit Block List vom Spamhaus-Projekt (bitte beachten Sie die Nutzungsbedingungen - eine kommerzielle Verwendung kann kostenplichtig sein). • Greylisting: wenn Postgrey installiert ist, können eingehende E-Mails zwecks Spam-Filterung mittels Greylisting-Verfahren (siehe Wikipedia) „ausgebremst“ werden. Diese Methode benötigt vergleichsweise wenige Ressourcen und ist (zumindest bei IPv4) derzeit noch relativ effizient. Greylisting kann individuell pro Postfach aktiviert/deaktiviert werden. • DNS-Whitelists: wenn Postgrey installiert und aktiviert ist sowie Postfix mindestens in Version 2.8 vorliegt, können optional DNS-Whitelists konfiguriert werden, deren Server als „vertrauenswürdig“ gelten. Befindet sich ein einliefernder Mailserver auf einer DNS-Whitelist, findet kein Greylisting (=Verzögerung der ersten Mail-Annahme) statt. Die Analyse auf Spam- und Viren (falls aktiviert) bleibt davon aber unbeführt. • SMTPS aktivieren: mit dieser Option erlauben Sie einen SSL-verschlüsselten SMTP-Zugriff über Port 465. Dieser Zugriff ist jedoch nicht standardkonform. • SSL zur Anmeldung erforderlich: mit dieser Einstellung dürfen sich Benutzer ausschließlich über verschlüsselte Verbindungen zum Mailversand am Server anmelden. Somit ist sichergestellt, dass keine Benutzernamen und Passwörter unverschlüsselt übertragen werden. • SSL-Server-Chiffres: hier können Sie festlegen, welche Methoden zur SSL-Verschlüsselung vom Server unterstützt werden. Die Einstellung „kompatibel“ unterstützt die meisten (auch älteren) Endgeräte. Falls Sie eine Zertifizierung nach dem PCI-DSS-Standard benötigen, stellen Sie „PCI-konform“ ein. (Diese Einstellung ist nicht in der LiveConfig-Basic-Version verfügbar) • IP-Adressen: Sie können festlegen, auf welchen IP-Adressen eingehende E-Mails akzeptiert werden sollen, bzw. mit welchen IP-Adressen ausgehende Mail-Verbindungen aufgebaut wer- 55 Erste Schritte den sollen. Beachten Sie bei der Auswahl der ausgehenden IP-Adressen, dass Sie gültige Reverse-DNS-Einträge für die verwendete(n) Adresse(n) eingerichtet haben. Da leider einige Mailserver (insbesondere Google Mail) bei SMTP-Verbindungen über IPv6 häufig E-Mails als Spam ablehnen, empfiehlt es sich ggf. ausgehende IPv6-Verbindungen vorerst komplett zu deaktivieren. 4.4.4. Datenbankserver Zur automatisierten Konfiguration von Datenbanken benötigt LiveConfig die root-Zugangsdaten zu einem lokal installierten MySQL-Server: Weitere Einstellmöglichkeiten sind: • Zugriff erlaubt: hier können Sie festlegen, von welchen IP-Netzen aus Zugriffe auf mit LiveConfig erzeugte MySQL-Accounts erlaubt sein soll. • phpMyAdmin: wenn Sie irgendwo eine zentrale Instanz von phpMyAdmin installiert und konfiguriert haben, können Sie hier dessen URL angeben. Kunden wird dann der entsprechende Link in der Liste ihrer Datenbanken mit angezeigt. Folgende Konfigurationseinstellungen werden unmittelbar nach dem Verbindungsaufbau zum MySQL-Server ausgelesen: 56 Nameserver (DNS) • SSL: zeigt an, ob für den MySQL-Server ein SSL-Zertifikat konfiguriert ist und er somit in der Lage ist, SSL-verschlüsselte Verbindungen anzunehmen. In der MySQL-Konfiguration müssen hierfür die Werte ssl-ca, ssl-cert und ssl-key definiert sein (siehe MySQL-Handbuch). Für PCI-Compliance sollte zudem ssl-cipher=!aNULL:!eNULL:!EXPORT:!ADH:! DES:!DSS:!LOW:!SSLv2:RC4-SHA:RC4-MD5:ALL gesetzt sein. Wenn SSL erfolgreich konfiguriert ist, können mit LiveConfig angelegte Datenbanken so eingerichtet werden, dass ein externer Zugriff nur über SSL-Verbindungen erlaubt ist. Diese Einstellungen müssen Sie ggf. direkt in der MySQL-Konfigurationsdatei bearbeiten. Damit diese dann wirksam und von LiveConfig erkannt werden, starten Sie anschließend zuerst MySQL neu, und danach LiveConfig (bei einem Multi-Server-Setup reicht es, den betroffenen LiveConfig-Client neu zu starten). 4.4.5. Nameserver (DNS) Wenn Sie eigene Nameserver betreiben möchten, aktivieren Sie in LiveConfig die Verwaltung des DNS-Servers: LiveConfig unterstützt die Software ISC BIND in der Version 9.x. Sobald Sie mindestens einen Nameserver in LiveConfig verwalten, erscheint im Hauptmenü der zusätzliche Punkt „DNS-Verwaltung“. Weitere Informationen zur DNS-Konfiguration finden Sie in Abschnitt 4.15, „ Nameserver (DNS) “ 57 Erste Schritte 4.5. Hosting-Angebote Über den Menüpunkt „Angebote“ im Abschnitt „Hosting“ können Sie (ebenfalls ab der Standard-Lizenz) eigene Hosting-Angebote verwalten. Zum Erstellen eines neuen Angebots klicken Sie auf „Neues Angebot...“. Sie werden anschließend nach dem Namen für das Angebot gefragt, sowie ob es sich um ein Endkunden- oder ein Wiederverkäufer-Angebot handelt. Beim Anlegen eines Vertrages mit einem Endkunden-Angebot wird sofort ein entsprechender Account auf dem Server eingerichtet - beim Wiederverkäufer-Angebot (oder auch Reseller-Angebot) wird dagegen kein Account angelegt, sonder der jeweilige Kunde kann mit diesen Ressourcen eigene Endkunden-Verträge einrichten und verwalten. Die Eigenschaften eines Hosting-Angebots sind im einzelnen: • Name: ein völlig frei wählbarer Name für das Hosting-Angebot. Dieser muss auch nicht zwangsweise einmalig sein. • Benutzer: die maximale Anzahl an LiveConfig-Benutzern, welche in diesem Angebot angelegt werden dürfen. Muss mindestens 1 sein. • Webspace: falls aktiviert, wird mit dem Vertrag ein Systemmaccount auf dem entsprechenden Server eingerichtet, mit dem Webseiten bereitgestellt werden können. Bei Angeboten, die beispielsweise ausschließlich Datenbanken oder E-Mail-Postfächer enthalten braucht also kein Webspace aktiviert werden. 58 Kunden verwalten Wird eine Beschränkung angegeben, dann muss auf dem jeweiligen Server die Filesystem-Quota für Benutzergruppen aktiviert sein. • SSI: sogenannte Server-Side Includes (z.B. .shtml-Dateien) sind erlaubt. • PHP: die Ausführung von PHP-Skripten ist erlaubt. • CGI: die Ausführung von CGI-Programmen (Common Gateway Interface, z.B. Perl-Skripte) ist erlaubt. • SSL: SSL-verschlüsselter Zugriff (via HTTPS) ist erlaubt. • Cron Jobs: die Verwaltung von regelmäßig auszuführenden Programmen ist erlaubt. • FTP-Zugang: maximale Anzahl von FTP-Accounts, die in diesem Angebot angelegt werden dürfen. • SSH-Zugriff: ### in Arbeit ### • Datenbanken: maximale Anzahl an (MySQL-)Datenbanken, welche in diesem Angebot angelegt werden dürfen. • Subdomains: die Verwaltung zusätzlicher Subdomains ist erlaubt. (die Subdomain www. ist bei jeder Domain automatisch enthalten und zählt somit nicht als weitere Subdomain) • Externe Domains: maximale Anzahl extern registrierter Domains, welche ein Kunde mit diesem Hostingvertrag verwalten darf. • E-Mail: maximale Anzahl an E-Mail-Adressen bzw. -Postfächern. • Gesamt-Mail-Quota: maximale Gesamtgröße aller Postfächer. Wenn Sie hier z.B. „1 GB“ eintragen, kann der Kunde beispielsweise maximal 5 Postfächer á 200 MB anlegen. • Traffic: Menge des in der Grundgebühr enthaltenen IP-Traffics pro Monat. 4.6. Kunden verwalten Ab der Standard-Lizenz können Sie mit LiveConfig eigene Kunden verwalten. Zum Anlegen eines neuen Kunden klicken Sie auf den Menüpunkt „Kunden“ und dann auf den Button „Neuer Kunde...“: 59 Erste Schritte Es öffnet sich ein Popup-Fenster, mit dem die notwendigen Informationen zum neuen Kunden abgefragt werden: • Kundennummer: eine völlig frei wählbare Nummer; darf nur aus Ziffern bestehen und nicht doppelt vergeben werden • Vertragspartner: wählen Sie hier den Vertragspartner aus (bei Firmenkunden ist das beispielsweise die jeweilige GmbH) • Kontaktperson: die kann die selbe Person sein wie der Vertragspartner, kann aber z.B. auch der Geschäftsführer oder der IT-Ansprechpartner beim Kunden sein • Rechnungskontakt: für den Rechnungsempfänger kann ebenfalls ein abweichender Kontakt ausgewählt werden • Benutzername/Passwort: die Zugangsdaten zu LiveConfig für den neuen Kunden. Der Benutzername kann frei gewählt und später auch jederzeit geändert werden. Dieser Benutzername hat nichts mit den FTP-Zugangsdaten zu einem Hostingvertrag zu tun. Unter Kontaktdaten können Sie die Person auswählen, mit der diese Zugangsdaten verknüpft werden sollen (standardmäßig ist das ebenfalls der Vertragspartner). 60 Kundendetails 4.6.1. Kundendetails Wenn Sie den neuen Kunden gespeichert oder einen Kunden aus der Übersichtsseite ausgewählt haben, öffnet sich die Detail-Ansicht für den Kunden. Es werden die Kundenstammdaten, die dem Kunden zugeordneten Benutzer sowie die Berechtigungen angezeigt: Admin-Sitzung In der Benutzer-Liste können Sie einen Benutzer auswählen und mittels Klick auf „Passwort ändern“ dessen LiveConfig-Passwort ändern (FTP- oder Datenbankpasswörter bleiben davon unberührt). Mit einem Klick auf „Verbindung starten“ öffnet sich ein neues Browserfenster (bzw. ein neuer Tab), in welchem Sie nun praktisch als dieser Benutzer angemeldet sind. Sie erhalten exakt die selben Informationen auf dem Bildschirm wie der jeweilige Benutzer, wenn er sich direkt angemeldet hätte - der einzige Unterschied besteht im Hinweis auf eine „Admin-Sitzung“ in der Kopfzeile. Kunden sperren Um einen Kunden zu sperren, klicken Sie auf den Button „Kunde bearbeiten“. Dort kann in der Dropdown-Box „Status“ der gewünschte Zustand eingestellt werden: • aktiv: der Kunde ist ganz normal aktiviert 61 Erste Schritte • gesperrt: der Kunde ist gesperrt - Anmeldungen über LiveConfig und FTP sind nicht mehr erlaubt, alle anderen Dienste funktionieren aber noch • deaktiviert: der Kunde ist deaktiviert - alle Domains werden deaktiviert, Anmeldungen über LiveConfig und FTP sind nicht mehr möglich, Abruf und Versand von E-Mails ist nicht mehr möglich Bei Wiederverkäufern wirkt sich diese Einstellung auch auf alle untergeordneten Kunden aus. 4.6.2. Verträge Der Karteireiter „Verträge“ zeigt alle dem Kunden zugeordneten Verträge an. Wird ein Vertrag ausgewählt, werden zusätzlich die Eigenschaften und Berechtigungen für diesen Vertrag dargestellt. Über einen Klick auf „Neuer Vertrag...“ kann dem Kunden ein neuer Vertrag eingerichtet werden. Vertrag neu zuordnen Wenn Sie einen normalen Endkunden-Vertrag bearbeiten, können Sie diesen über den Button neu zuordnen einem anderen Kunden zuweisen. Bei der Neuzuordnung wird der Vertrag beim neuen Kunden als „individueller Vertrag“ angelegt, da das zugrunde liegende Hostingangebot nicht mit kopiert oder verschoben wird. Nach dem Speichern der neuen Zuordnung wird der Vertrag im Kontext des neuen Kunden angezeigt und kann direkt bearbeitet werden. 62 Domains Die Zuordnung zum neuen Kunden findet immer in Form eines „normalen“ Vertrags statt; das Verschieben in einen bestehenden Wiederverkäufer-Vertrag hinein ist derzeit nicht möglich. Wiederverkäufer-Verträge können nicht verschoben werden, da es zu viele zu berücksichtigende Abhängigkeiten und mögliche Probleme gäbe (u.a. müssten auch alle entsprechenden Endkunden des Wiederverkäufers mit verschoben werden; ein Endkunde könnte aber noch einen zweiten Vertrag haben der nicht verschoben werden sollte, usw...). 4.6.3. Domains Unter dem Karteireiter „Domains“ können den einzelnen Verträgen Domains zugeordnet werden: IDN-Domains werden automatisch erkannt und in die entsprechende Punycode-Darstellung umgerechnet. Falls der gewählte Vertrag des Kunden auch Webspace enthält, werden außerdem automatisch zwei Subdomains (einmal mit „leerem“ Hostnamen und einmal mit „www“) angelegt. DNSSEC Wenn Nameserver mit LiveConfig verwaltet werden und diese DNSSEC unterstützen, dann können Sie beim Anlegen oder Bearbeiten einer Domain entsprechend DNSSEC aktivieren: 63 Erste Schritte Zuerst müssen Sie einen sogenannten Key Signing Key (KSK) anlegen und die Domain anschließend speichern. Wenn Sie die Domain danach wieder zum Bearbeiten öffnen, können Sie den gespeicherten KSK auch anzeigen lassen (auf diese Weise wird sichergestellt, dass ein neuer KSK tatsächlich gespeichert wurde, bevor Sie diesen verwenden). Der angezeigte öffentliche Schlüssel muss als sogenannter Delegation Signer Resource Record (DSRR, DS-Record) beim Domainregistrar hinterlegt werden. Wichtig ist hier, dass Sie als Algorithmus RSASHA1-NSEC3-SHA1 angeben. LiveConfig bzw. der BIND-Nameserver kümmern sich selbständig um die Erstellung und regelmäßige Rotation der notwendigen Zone Signing Keys (ZSK) sowie um die Signatur der DNS-Daten. Wenn Änderungen an den DNS-Daten vorgenommen werden (z.B. Hinzufügen einer Subdomain oder Anlegen eigener DNS-Einträge) so werden diese nahezu ohne Verzögerung von BIND 64 Benutzerverwaltung signiert und mittels dynamischer Zonenupdates (IXFR) an die zuständigen Slave-Server weitergegeben. 4.7. Benutzerverwaltung Wenn der aktuelle Benutzer die nötigen Berechtigungen besitzt, so können unter dem Menüpunkt Benutzer weitere Benutzer engelegt und verwaltet werden: In der Box Berechtigungen können die Rechte für zusätzliche Benutzer genau eingestellt werden. Wenn ein Kunde beispielsweise mehrere Verträge hat, können die Zugriffsrechte eines Benutzers auf nur einen bestimmten Vertrag oder gar nur einzelne Funktionen eines Vertrags begrenzt werden. 4.8. Webspace-Verwaltung Wenn einem Kunden ein Webspace-Vertrag zugewiesen wurde oder als Administrator/Wiederverkäufer ein Vertrag unter Mein Hosting eingerichtet wurde, wird eine Übersicht aller Hostingverträge gezeigt: 65 Erste Schritte Neben einer Übersicht über alle zur Verfügung stehenden Leistungen und Funktionen sowie den Verbrauch der verschiedenen Ressourcen kann auch die Erzeugung von Zugriffsstatistiken aktiviert und konfiguriert werden. Nach der Aktivierung von Web-Statistiken (mit AWStats oder Webalizer) dauert es bis zu 24 Stunden, bis diese erstmals zur Verfügung stehen; üblicherweise werden die Statistiken nur 1x täglich aktualisiert. Sofern im gewählten Vertrag weitere FTP-Benutzer enthalten sind, können die zusätzlichen Accounts hier verwaltet werden. Für jeden FTP-Account kann festgelegt werden, in welchem Verzeichnis dieser „startet“; auf übergeordnete Verzeichnisse kann damit nicht zugegriffen werden. Eine Änderung des Benutzernamens oder des Startverzeichnisses ist derzeit noch nicht möglich; hierzu löschen Sie den gewünschten Account bitte und legen ihn neu an. Im Abschnitt Datenverbrauch werden Statistikwerte der Webserver-Software angezeigt (Anzahl der Zugriffe sowie übertragene Datenmengen). Diese Statistik wird alle fünf Minuten aktualisiert. 4.9. Domaineinstellungen Alle Formen von Domains (Subdomains, externe Domains) werden unter dem Punkt Domains verwaltet. Unter einer externen Domain versteht LiveConfig eine Domain, die der Kunde bei irgend einem Drittanbieter registriert hat und deren DNS-Einträge auf die IP-Adressen seines mit LiveConfig verwalteten Webspace-Accounts zeigen. Subdomains sind praktisch alle Einträge inner- 66 Domaineinstellungen halb einer Domain (bzw. einer sogenannten „Zone“) - auch ein leerer Hostname oder „www“ sind jeweils eigene Subdomains. Je nach Vertragseigenschaften stehen verschiedene Einstellungsmöglichkeiten für eine Subdomain zur Verfügung: • Webspace: diese Subdomain wird auf dem Webserver konfiguriert. Falls mehrer IP-Gruppen verfügbar sind, kann die gewünschte Gruppe (und somit ggf. die gewünschte Webserver-Software) ausgewählt werden; alle damit assoziierten IP-Adressen werden angezeigt (bei externen Domains müssen auf den zuständigen Nameservern entsprechende A/AAAA-Einträge angelegt werden). Der Zugriff über HTTP (unverschlüsselt) und HTTPS (SSL-geschützt) kann getrennt konfiguriert werden. HTTPS/SSL setzt voraus, dass sowohl für den Hosting-Vertrag die Eigenschaft „HTTPS (SSL)“ aktiviert ist, als auch dass für die gewählte IP-Gruppe der SSL-Zugriff erlaubt ist (siehe IPVerwaltung). Ein eventuelles SSL-Zertifikat muss vorab unter dem Punkt SSL-Zertifikate angelegt worden sein. Falls auf dem Server verschiedene PHP-Versionen verfügbar sind, kann zudem ausgewählt werden, mit welcher Version die PHP-Scripte auf einer bestimmten Subdomain ausgeführt werden (ab LiveConfig 1.7.4). Wenn Sie nicht ganz genau wissen was Sie tun, lassen Sie diese Einstellung am besten auf „Standard“. Die möglichen Einstellungen für die HTTP(S)-Konfiguration sind: 67 Erste Schritte • Webspace: Aufrufe der Subdomain werden aus dem gewählten Webspace-Verzeichnis beantwortet. Das Verzeichnis stellt dabei das „Startverzeichnis“ der Domain dar; wenn beispielsweise für die Domain www.example.org das Verzeichnis /example/ eingestellt wird und ein Besucher im Browser die Adresse http://www.example.org/index.html öffnet, so wird im Verzeichnis (/var/www/webxxx)/htdocs/example/ nach der Datei index.html gesucht. • Weiterleitung: Aufrufe der Subdomain werden mit dem gewählten HTTP-Statuscode (301 oder 302) an die eingestellte Zieladresse weitergeleitet, oder (falls Reverse Proxy gewählt wurde) von der angegebenen Zieladresse abgerufen und zurückgeliefert. Mit der Reverse ProxyMethode können Inhalte von einer anderen Domain abgerufen werden, ohne dass der Besucher in der Adresszeile deren URL sieht. Der Nachteil ist jedoch ein deutlich langsamerer Seitenaufbau (da nun mindestens zwei Server am Abruf einer Website beteiligt sind) sowie eventuelle Nachteile bei der Authentifizierung mit Cookies etc. Um bei Weiterleitungen (301/302) den Pfad der ursprünglichen URL beizubehalten, fügen Sie an die Zieladresse einfach „/*“ an. (Beispiel: zur Weiterleitung der Aufrufe von http:// www.alte-domain.de/datei.html nach http://www.neue-domain.de/neu/ datei.html geben Sie als Zieladresse http://www.neue-domain.de/neu/* an.) • Deaktiviert: es erscheint eine Fehlermeldung, dass die aufgerufene Subdomain nicht erreichbar ist; diese Einstellung ist ideal für vorübergehende Wartungsarbeiten auf Ihrer Website. • E-Mail: wenn diese Option aktiviert wird, können E-Mail-Adressen mit dieser Subdomain angelegt werden. 68 HTTPS (SSL) mit SNI HTTPS (SSL) mit SNI Bei gemeinsam genutzten IP-Gruppen muss der verwendete Webserver „SNI“ (Server Name Indication) unterstützen, damit mehrere SSL-Zertifikate auf der selben IP-Adresse genutzt werden können (dies ist aktuell mit allen gängigen Browsern möglich, bis auf den Internet Explorer unter Windows XP, egal welche Version). SNI wird serverseitig normalerweise ab Debian 7 (Wheezy), OpenSUSE 12.1 und CentOS 6 unterstützt. Für kommerzielle Websites wird daher weiterhin die Verwendung einer eigenen, exklusiven IP-Adresse pro SSL-Zertifikat empfohlen. 4.10. E-Mail-Postfächer Endkunden mit mindestens einem Hosting-Vertrag mit Postfächern können unter dem Menüpunkt „E-Mail“ ihre E-Mail-Adressen und -Postfächer verwalten: 69 Erste Schritte • Alias: Sie können dieser E-Mail-Adresse bis zu 10 Alias-Namen hinzufügen. Wenn Sie z.B. die Adresse [email protected] und [email protected] mit dem selben Postfach nutzen möchten, dann reicht es, wenn Sie ein Postfach mit dem Namen info anlegen und dort als Alias mail hinzufügen. • Postfach: aktivieren Sie diese Option, wenn Sie die E-Mail-Adresse als POP3/IMAP-Postfach nutzen möchten (ansonsten kann die Adresse ausschließlich zur Weiterleitung von E-Mails verwendet werden). • Passwort: geben Sie hier das gewünschte Passwort für die E-Mail-Adresse ein. Das Passwort darf aus technischen Gründen keine Umlaute enthalten (viele E-Mail-Programme kommen damit nicht zurecht). • Quota-Limit: dieser Wert bestimmt, wie groß das E-Mail-Postfach maximal sein darf. Sobald das Postfach diese Größe zu 80% bzw. zu 95% erreicht, wird automatisch eine Warnung per EMail zugestellt (siehe Abschnitt 5.3.2, „ Quota-Warnung “). • Greylisting: wenn auf dem Mailserver Greylisting verfügbar ist, kann diese Methode zur SpamAbwehr individuell pro Postfach aktiviert werden. Bei diesem Verfahren „merkt“ sich der Mailserver das Triple aus Absender, Empfänger und IP-Adresse des einliefernden Mailservers. Ist für eine Maileinlieferung noch kein solches Triple erfasst, wird die Mail vorübergehend abgewiesen und erst beim nächsten Zustellversuch akzeptiert (weitere Mails werden dann immer 70 Catch-All-Adressen ohne Verzögerung entgegen genommen). Jeder normale Mailserver versucht autmatisch eine erneute Zustellung nach wenigen Minuten. • Spam-Prüfung: wenn SpamAssassin auf dem Mailserver verfügbar ist, können eingehende Mails auf Spam hin untersucht und ggf. markiert oder abgewiesen werden. Jede Mail erhält dabei durch den Spamfilter eine individuelle Punktzahl, welche die Wahrscheinlichkeit für Spam widerspiegelt. Wir empfehlen, Mails ab 3,0 Punkten als Spam markieren zu lassen (in der Betreff einer E-Mail wird dann „*** Spam-Verdacht ***“ eingefügt) und Mails ab 5,0 Punkten komplett abzulehnen. • Web-Anmeldung: diese Option erlaubt es, sich mit der E-Mail-Adresse und dem angegebenen Passwort direkt in LiveConfig anzumelden und Postfacheinstellungen selbst zu verwalten (Passwort ändern, Automatische Antwort bearbeiten, Spam-Filter konfigurieren). • Weiterleitung: eintreffende E-Mails werden an die hier angegebenen E-Mail-Adressen weitergeleitet. Es können maximal 25 Weiterleitungs-Ziele angegeben werden. Falls die E-Mail-Adresse auch als POP3/IMAP-Postfach genutzt wird, werden eintreffende EMails sowohl in das Postfach zugestellt als auch gleichzeitig an die angegebenen Adressen weitergeleitet. • Automatische Antwort: wenn aktiviert, dann wird auf jede eintreffende E-Mail eine automatische Antwort gesendet. Dabei erhält jeder Absender nur eine automatische Antwort (so lange bis die Auto-Antwort wieder abgeschaltet oder geändert wird). Derzeit werden automatische Antworten nur mit POP3/IMAP-Postfächern und nicht mit reinen E-Mail-Weiterleitungen unterstützt. Catch-All-Adressen Sie können sogenannte „Catch-All-Adressen“ einrichten, mit denen alle E-Mails verarbeitet werden die sonst keinem anderen Postfach zugeordnet werden konnten. Die einzige Einschränkung hierbei ist, dass Sie eine Catch-All-Adresse nur zur Weiterleitung von E-Mails nutzen können und nicht direkt als POP3/IMAP-Postfach. Um eine Catch-All-Adresse einzurichten, verwenden Sie als Postfachname einfach nur ein SternSymbol (*). Zusätzliche Alias-Namen sind überflüssig (wird ja alles mit „*“ abgedeckt). Außerdem müssen Sie mindestens ein Weiterleitungs-Ziel angeben. Optional können Sie auch den Autoresponder (automatische Antwort) aktivieren. Wir empfehlen, nach Möglichkeit keine Catch-All-Adressen zu nutzen, da diese erfahrungsgemäß ziemlich anfällig für Spam-Nachrichten sind. Viele Spam-Versender schicken die Mails nämlich an zufällige bzw. geratene Adressen. Nicht zuletzt verlieren Sie so schnell den Überblick darüber, welche Mailadressen Sie nun „nach außen“ offiziell verwenden. 71 Erste Schritte Sofern keine Catch-All-Adresse für eine Domain eingerichtet ist und jemand sendet an eine ungültige Adresse dorthin eine E-Mail, so wird dieser normalerweise durch seinen Absender-Mailserver darüber informiert, dass die E-Mail aufgrund einer ungültigen Zieladresse nicht zugestellt werden konnte. 4.11. Datenbanken Endkunden mit mindestens einem Hosting-Vertrag mit Datenbanken können diese unter dem Menüpunkt „Datenbanken“ verwalten: Es gelten folgende Einschränkungen: • Der Datenbankname und der Benutzername müssen mit einem Buchstaben beginnen und können alle Zeichen von A-Z, Ziffern von 0-9 sowie Unterstriche (_) und Bindestriche (-) enthalten. Die Länge muss zwischen 2 und 16 Buchstaben betragen. Die Groß-/Kleinschreibung beim Datenbank-/Benutzername und Passwort ist zu beachten. • Das Passwort muss mindestens fünf und maximal 50 Zeichen lang sein. • Die Anmeldung an die über LiveConfig angelegten Datenbanken ist derzeit nur lokal vom jeweiligen Server (localhost) aus erlaubt! Beim Löschen von Datenbanken wird jeweils die Datenbank sowie der dazugehörige Benutzer gelöscht. Falls Sie manuell weitere Benutzer für eine Datenbank oder weitere Datenbanken für einen Benutzer angelegt haben, müssen diese ebenfalls manuell gelöscht werden. 72 Externer Zugriff Externer Zugriff Grundsätzlich werden Datenbankbenutzer so angelegt, dass nur ein lokaler Zugriff (innerhalb des Servers) sowie ggf. von ausdrücklich freigeschalteten IPs/Netzen aus erlaubt ist. Mit der Option „externen Zugriff erlauben“ darf auch von einem bliebigen (externen) Server aus eine Verbindung zu dieser MySQL-Datenbank aufgebaut werden - vorausgesetzt, der Datenbankserver an sich ist extern erreichbar (Firewall). Sofern SSL auf dem Datenbankserver aktiviert ist, kann mit der Option „externer Zugriff nur mit SSL“ ein verschlüsselter Verbindungsaufbau erzwungen werden. Diese Option wird bei externen Zugriffen dringend empfohlen, da nur so die Anmelde- sowie Nutzdaten verschlüsselt übertragen werden. 4.12. Cron-Jobs Regelmäßig auf dem Server auszuführende Befehle - sogenannte Cron-Jobs - können über den gleichnamigen Menüpunkt konfiguriert werden: Der angegebene Befehl wird exakt so auf dem Server ausgeführt; soll also ein PHP-Script gestartet werden, muss der dazugehörige Interpreter (z.B. /usr/bin/php) vorangestellt und der vollständige (absolute) Dateiname zum Script angegeben werden. Falls eine URL regelmäßig aufgerufen werden soll, muss z.B. wget verwendet werden (Beispiel: wget -q -O /dev/null "http://www.example.org/..."). 73 Erste Schritte 4.13. Application Installer Über den Application Installer können häufig genutzte Webanwendungen mit wenigen Mausklicks installiert werden: 4.14. SSL-Zertifikate Wenn ein Webspace-Vertrag die Eigenschaft „HTTPS (SSL)“ enthält, dann hat der jeweilige Kunde die Möglichkeit entsprechende SSL-Zertifikate zu verwalten. Die einzelnen Komponenten für ein SSL-Zertifikat können wahlweise über LiveConfig selbst erzeugt oder aber importiert werden. 74 Privater Schlüssel 4.14.1. Privater Schlüssel Für ein SSL-Zertifikat wird immer ein Schlüsselpaar - bestehend aus privatem und öffentlichem Schlüssel - benötigt. Diese Schlüssel können in LiveConfig erzeugt werden; als Algorithmus steht RSA zur Verfügung (DSA kommt in der Praxis eher selten zum Einsatz). Die Schlüssellänge sollte mindestens 2048 Bit betragen, wahlweise kann auch ein 4096-Bit-Schlüssel erzeugt werden, was allerdings deutlich länger dauert. Falls bereits ein RSA-Schlüssel vorhanden ist, kann dieser importiert werden. Wenn der Schlüssel mit einem Passwort geschützt ist, muss dieses dabei mit angegeben werden - LiveConfig braucht zwangweise Zugriff auf den „uncodierten“ Schlüssel. Intern speichert LiveConfig diesen aber wieder verschlüsselt ab ( jedoch mit einem anderen Passwort). 4.14.2. Zertifikatsanforderung (CSR) erzeugen Für die Bestellung eines SSL-Zertifikats wird normalerweise eine Zertifikatsanforderung (Certificate Signing Request - kurz CSR) benötigt. Diese CSR enthält unter anderem den öffentlichen Schlüssel für das gewünschte SSL-Zertifikat, sowie einige Angaben zum Antragsteller. Welche Angaben hier im einzelnen benötigt werden kommt auf den Zertifikatsaussteller (CA) sowie das jeweils bestellte Produkt an. In jedem Fall muss das Feld Allgemeiner Name (Common Name, kurz CN) exakt den Domainnamen enthalten, für den später das SSL-Zertifikat genutzt werden soll. Wenn Sie das Zertifikat bei- 75 Erste Schritte spielsweise für https://www.example.org nutzen möchten, tragen Sie hier www.example.org ein - und nicht nur example.org! Die weiteren Eingabefelder sind: • Organisation (O): Organisation, Firma oder Einrichtung, auf deren Namen das SSL-Zertifikat ausgestellt werden soll • Organisationseinheit (OU): Abteilung innerhalb der o.g. Organisation; kann im Zweifelsfall auch einfach leer gelassen werden • Stadt (L): die Stadt, in der sich die o.g. Organisation befindet • Bundesland (ST): das Bundesland, Kanton oder die Provinz, in der sich die o.g. Organisation befindet • Land (C): das Land, in dem sich die o.g. Organisation befindet • E-Mail-Adresse: eine (allgemeine) E-Mail-Adresse zur Kontaktaufnahme 4.14.3. Zertifikat Wenn der private Schlüssel vorliegt kann wahlweise mit eventuell erfassten CSR-Informationen ein selbst-signiertes Zertifikat erzeugt oder ein „offizielles“ SSL-Zertifikat importiert werden. Wenn der private Schlüssel unverändert bleibt kann das Zertifikat auch jederzeit ersetzt werden; so kann man beispielsweise mit einem selbst-signierten Zertifikat eine neue Website testen und dann zu einem späteren Zeitpunkt ein normales SSL-Zertifikat bestellen. 4.14.4. CA-Zwischenzertifikate Bei aktuellen SSL-Zertifikaten von offiziellen Zertifizierungsstellen (Certification Authorities, kurz CA) ist in den meisten Fällen die Verwendung von einem oder mehreren sogenannten „Zwischenzertifikaten“ notwendig, damit Browser keine Fehlermeldung erzeugen. Falls also entsprechende Zwischenzertifikate vorliegen, können diese hier importiert werden. 4.15. Nameserver (DNS) 4.15.1. DNS-Vorlagen Damit LiveConfig Ihre Domains automatisch auf eigenen Nameservern anlegen kann, müssen Sie als erstes mindestens eine DNS-Vorlage definieren. Die DNS-Vorlagen ( „Templates“) beschreiben, auf welchen Nameservern eine Domain jeweils eingerichtet werden soll sowie alle restlichen SOA-Parameter. 76 DNS-Vorlagen Eine Domain muss im Internet üblicherweise auf mindestens zwei verschiedenen Nameservern konfiguriert sein. Der primäre Nameserver muss dabei direkt durch LiveConfig verwaltet werden. Weitere (sekundäre) Nameserver können wahlweise direkt mit LiveConfig verwaltet oder extern genutzt werden (siehe Abschnitt 4.15.2, „ Externe DNS-Server “). Folgende Einstellungen können für DNS-Vorlagen vorgenommen werden: • Primärer DNS: Auswahl des primären Nameservers. Dieser muss direkt durch LiveConfig verwaltet werden. Alle DNS-Änderungen (Hinzufügen/Löschen von Subdomains etc.) werden auf diesem Nameserver ausgeführt und automatisch über Zonenupdates (AXFR/IXFR) an die sekundären Nameserver weitergeleitet. • Name: legt den Namen fest, der im SOA-Record sowie bei NS-Records für diesen Server verwendet werden soll. Sie können also auch abweichend vom Hostnamen des Nameservers einen „eigenen“ Servernamen festlegen. • Hidden Primary: mit dieser Option richten Sie ein sogenanntes „Hidden-Primary-Setup“ ein (siehe Wikipedia); der primäre DNS-Server wird dann nicht als zuständiger Nameserver für die Domains veröffentlich. In diesem Fall müssen Sie mindestens zwei sekundäre Nameserver angeben. • TTL: Gültigkeitsdauer („time to live“) für diesen Nameserver-Eintrag; dieser Wert wird für die NS Resource Records verwendet. 77 Erste Schritte • SOA-Einstellungen: diverse Parameter für den SOA Resource Record (Start of Authority). Die vorgeschlagenen Standardwerte richten sich nach den Empfehlungen der RIPE. • E-Mail-Adresse: diese Mailadresse wird in allen SOA-Records der mit dieser Vorlage verwalteten Domains eingetragen. Üblicherweise wird hier eine Adresse genutzt, unter welcher der Betreiber des primären DNS-Servers erreichbar ist, häufig so etwas wie hostmaster@.... 4.15.2. Externe DNS-Server Mit LiveConfig können Sie auch ganz bequem Nameserver von externen Anbietern (z.B. von Ihrem Domainanbieter) nutzen: Sie müssen lediglich beachten, dass LiveConfig auf externen Nameservern keine DNS-Zonen anlegen oder löschen kann. Neue Domains bzw. Domainlöschungen müssen Sie also manuell auf den externen Servern vornehmen. In Kürze wird es für LiveConfig eine Erweiterung der SOAPAPI geben, mit der Sie diesen Vorgang aber teilweise automatisieren können. Wenn Ihr Anbieter TSIG (Transaction Signatures) zur Absicherung von Zonentransfers anbietet, tragen Sie hier den Namen sowie den Schlüsselcode ein. Der Schlüsselname muss dabei exakt so auch auf dem externen Nameserver eingetragen sein. 4.16. Verzeichnisstruktur Die Verzeichnisse für die Kundendaten sind wie folgt organisiert: 78 Verzeichnisstruktur • Webspace: /var/www/<Vertrag>/ • <Webspace>/apps/ - Verzeichnis für über den Application Installer installierte Anwendungen • <Webspace>/conf/ - Konfigurationsdateien, php.ini-Dateien, FastCGI-PHP-Sockets, etc. (nur LiveConfig-intern) • <Webspace>/htdocs/ - Web-Dateien • <Webspace>/htdocs/cgi-bin/ - Verzeichnis für CGI-Scripte (falls im jeweiligen Hostingvertrag erlaubt) • <Webspace>/logs/ - Log-Dateien • <Webspace>/priv/ - Platz für „private“ Dateien außerhalb des Webspaces (für sensible PHP-Includes, für FTP-Accounts ohne Webspace, etc.) • <Webspace>/stats/ - grafisch aufbereitete Statistikdaten • <Webspace>/tmp/ - temporäre Dateien (PHP-Uploads, PHP-Sessions, etc.) • E-Mail: /var/mail/<Vertrag>/ 79 80 Kapitel 5. Fortgeschrittene Konfiguration In diesem Kapitel werden Konfigurationsmöglichkeiten für erfahrene Benutzer vorgestellt. 5.1. LiveConfig-Standardwerte ändern Viele Standardwerte und Limitierungen verwaltet LiveConfig in seiner eigenen Datenbank in der Tabelle LCDEFAULTS. Steht ein Schlüssel nicht in dieser Datenbanktabelle, dann gilt automatisch der Standardwert. Wenn Sie Änderungen an diesen Einträgen vornehmen, müssen Sie LiveConfig anschließend neu starten. Schlüssel Version Standard Beschreibung db.password.minScore 1.8.0 4 Erforderliche Passwort-Komplexität für Datenbank-Benutzer (Integer-Zahl, 0-8) ftp.login.minLength 1.8.0 5 Minimale Länge für FTP-Login-Namen ftp.password.minScore 1.8.0 4 Erforderliche Passwort-Komplexität für FTP-Accounts (Integer-Zahl, 0-8) liveconfig.web.template 1.8.0 default Name des Web-Templates für die LiveConfig-Oberfläche (/usr/ share/liveconfig/name.tmpl) login.concurrent 1.8.3 login.help.url Enthält eine mit Leerzeichen getrennte Liste von LiveConfig-Accounts, die sich gleichzeitig anmelden dürfen (normalerweise darf jeder Account nur einmal gleichzeitig angemeldet sein) 1.8.0 81 Fortgeschrittene Konfiguration Schlüssel Version Standard Beschreibung Wenn vorhanden, dann wird auf der Anmeldeseite von LiveConfig ein Link mit dem Titel „Hilfe“ eingeblendet, der auf die angegebene URL verweist. Aktiviert die Registrierung und Verwendung von fido-U2F Hardware-Tokens zur Anmeldung an LiveConfig. login.u2f.enabled1.9.0 mail.aliases.limit 1.8.1 10 Maximale Anzahl an Alias-Namen für ein E-Mail-Postfach (Integer-Zahl, 1-65535) mail.forwards.limit 1.8.1 25 Maximale Anzahl an Weiterleitungs-Zieladressen für ein EMail-Postfach (Integer-Zahl, 1-65535) mail.greylisting.enabled 1.8.0 0 Legt fest, ob Greylisting bei neuen Postfächern standardmäßig aktiviert werden soll („0“ oder „1“) mail.password.minScore 1.8.0 4 Erforderliche Passwort-Komplexität für E-Mail-Postfächer (Integer-Zahl, 0-8) mail.spam.enabled1.8.0 0 Legt fest, ob der Spamfilter bei neuen Postfächern standardmäßig aktiviert werden soll („0“ oder „1“) 82 Webspace Schlüssel Standard Beschreibung mail.spam.reject 1.8.0 5.0 Standard-Schwellwert für die Ablehnung von Mails durch den Spamfilter (Fließkomma-Zahl, 0.0-999) 1.8.0 3.0 Standard-Schwellwert für die Markierung von verdächtigen Mails durch den Spamfilter (Fließkomma-Zahl, 0.0-999) mail.weblogin.enabled 1.8.0 0 Legt fest, ob die WebAnmeldung für neue Postfächer standardmäßig aktiviert werden soll („0“ oder „1“) user.password.minScore 1.8.0 4 Erforderliche Passwort-Komplexität für LiveConfig-Benutzeraccounts (Integer-Zahl, 0-8) webspace.password.minScore 1.8.0 2 Erforderliche Passwort-Komplexität für Webspace-Verzeichnisschutz (Integer-Zahl, 0-8) mail.spam.warn Version 5.2. Webspace Webspace-Hauptverzeichnis ändern: LiveConfig legt alle Webspaces unter /var/www/ (bzw. bei OpenSUSE unter /srv/www/) an. Um diesen Pfad zu ändern, fügen Sie in die custom.lua folgende Zeilen ein: function LC.web.getWebRoot() return "/home/htdocs" end Diese Einstellung muss vor dem Anlegen eines ersten Hosting-Vertrags vorgenommen werden und kann später nicht mehr ohne Weiteres geändert werden! 83 Fortgeschrittene Konfiguration Webspace-Verzeichnis ändern: innerhalb der Kundenverzeichnisse liegen alle Webspace-Dateien bei LiveConfig üblicherweise im Verzeichnis /htdocs/. Um dieses zu ändern (z.B. auf /html/ ) fügen Sie in die custom.lua folgende Zeile hinzu: web.HTDOCS_PATH = 'html' Diese Einstellung muss vor dem Anlegen eines ersten Hosting-Vertrags vorgenommen werden und kann später nicht mehr ohne Weiteres geändert werden! Außerdem müssen Sie dann unbedingt in den PHP-Einstellungen den Eintrag open_basedir entsprechend anpassen (z.B. von %HOME %/htdocs auf %HOME/html). Zusätzliche Konfigurationen pflegen: wenn Sie zusätzliche, vertragsspezifische Konfigurationen pflegen wollen, biegen Sie über custom.lua die Funktion apache.configureVHost auf eine eigene Funktion um und rufen die Original-Funktion danach auf. Das folgende Beispiel zeigt, wie Sie über eine eigene Funktion individuelle suexec-Konfigurationsdateien verwalten können (unter Debian mit dem Paket apache2-suexec-custom): old_configureVHost = apache.configureVHost function apache.configureVHost(cfg, opts) -- 'cfg' enthält die von Lua erkannte Server-Konfiguration, -- 'opts' enthält alle vHost-spezifischen Einstellungen, u.a.: -- opts.name -> Vertragname (z.B. "web123") -- Beispiel für eine Log-Meldung LC.log.print(LC.log.INFO, "Eigene configureVHost()-Funktion aufgerufen") -- Datei öffnen: local filename = "/etc/apache2/suexec/" .. opts.name local fh, msg = io.open(filename, "w") if fh == nil then LC.log.print(LC.log.ERR, "Can't open '", filename, "' for writing: ", msg) return false, "Can't open '" .. filename .. "' for writing: " .. msg end -- suexec document root: fh:write(opts.path .. "/" .. LC.web.HTDOCS_PATH .. "\n") -- suexec userdir suffix: fh:write("# public_html/cgi-bin\n") fh:close() -- nun noch den Original-Handler aufrufen und dessen -- Rückgabewert zurück geben return old_configureVHost(cfg, opts) end 5.2.1. ProFTPD-Konfiguration Um eigene Anweisungen in die ProFTPD-Konfiguration aufzunehmen, haben Sie zwei Möglichkeiten: 84 E-Mail • legen Sie eine Datei namens /etc/proftpd/proftpd.local.conf an, oder • wenn das Verzeichnis /etc/proftpd/conf.d/ existiert, erstellen Sie darin Ihre eigene(n) Konfigurationsdatei(en). Diese müssen mit der Dateiendung .conf enden. Klicken Sie anschließend im LiveConfig in der ProFTPD-Verwaltung auf den Button neu konfigurieren. LiveConfig aktualisiert darauf hin die proftpd.conf und nimmt die o.g. Dateien per Include-Anweisung auf. 5.3. E-Mail 5.3.1. Autokonfiguration (Autodiscovery) LiveConfig unterstützt die Autokonfigurations-Protokolle von Mozilla Thunderbird und Microsoft Outlook (ab Version 2007). Damit muss ein Benutzer zur Einrichtung seines E-Mail-Accounts lediglich seine Mailadresse und -Passwort eingeben - alle restlichen Einstellungen (Mailserver, Verschlüsselung etc.) findet das E-Mail-Programm dann automatisch heraus. Eine ausführliche Anleitung finden Sie in der Wissensdatenbank unter Artikel Nr. 13. 5.3.2. Quota-Warnung Damit E-Mail-Benutzer eine Information darüber erhalten wenn der Speicherplatz ihres Postfachs aufgebraucht ist, versendet LiveConfig automatisch eine entsprechende Warnmeldung sobald das Postfach zu 80% bzw. zu 95% gefüllt ist. Diese Mail wird auch dann dem Postfach zugestellt, falls dieses komplett „voll“ ist. Als Vorlage für diese Warnmeldung dient die Datei /etc/liveconfig/mailquota.txt. Folgende Ersetzungen werden dabei vorgenommen: Platzhalter Ersetzung %USER% E-Mail-Adresse des betroffenen Postfachs %DATE% aktuelles Datum/Uhrzeit (RFC822-konform) %PERCENT% überschrittener Füllstand („80“ oder „95“) Die Warnmeldung wird nur bei erstmaliger Überschreitung der jeweiligen Schwelle (80% bzw. 95%) versendet. Wird der Füllstand von 80% wieder unterschritten, erfolgt keine Benachrichtigung. Wird der Füllstand von 80/95% danach wieder irgendwann erreicht, erfolgt wieder eine Benachrichtigung. 85 Fortgeschrittene Konfiguration 5.3.3. Postfix-Konfiguration Sie haben die Möglichkeit, eigene Einstellungen in die Postfix-Konfigurationdatei main.cf aufzunehmen. Erstellen Sie hierzu eine Tabelle namens postfix.LOCALCONFIG in der custom.lua. Beispiel: postfix.LOCALCONFIG = { ["authorized_mailq_users"] = "root, nrpe, $mail_owner" } Anschließend müssen Sie LiveConfig neu starten (damit die custom.lua neu eingelesen wird) sowie unter Serververwaltung - E-Mail die Postfix-Einstellungen erneut speichern. Die Werte aus der postfix.LOCALCONFIG-Tabelle überschreiben dabei ggf. auch von LiveConfig generierte Einstellungen. Komplett eigene Konfiguration verwenden: wenn Sie eine komplett eigene Postfix-Konfiguration verwenden möchten (bzw. wenn also LiveConfig die master.cf und main.cf nicht überschreiben soll), dann nehmen Sie in die custom.lua folgende Anweisung auf: postfix.NOUPDATE = true Die Tabellen (virtual_alias, virtual_domains etc.) werden trotzdem weiter durch LiveConfig aktualisiert. 5.3.4. Dovecot-Konfiguration Um eigene Optionen in die Dovecot-Konfiguration aufzunehmen, erstellen Sie eine Datei namens /etc/dovecot/dovecot.local.conf. Anschließend speichern Sie im LiveConfig in der Dovecot-Verwaltung die Einstellungen noch mal neu ab. LiveConfig erzeugt somit die dovecot.conf neu und nimmt die dovecot.local.conf per include-Anweisung auf. 86 Kapitel 6. Wartung und Pflege Dieses Kapitel widmet sich der professionellen Betreuung einer LiveConfig-Installation. Sobald LiveConfig mit größeren Benutzerzahlen oder strengen Verfügbarkeitsanforderungen eingesetzt wird, stellen die Bereiche Datensicherung (Backup), Wiederherstellung (Restore/Recovery) und Überwachung (Monitoring) ein wichtiges Thema dar. 6.1. Backup und Wiederherstellung 6.1.1. Backup LiveConfig speichert alle eigenen Daten und Einstellungen ausschließlich auf dem LiveConfig-Server. Das bedeutet, dass auch bei der Verwaltung mehrerer Server auf den Clients keine zu sichernden LiveConfig-Daten vorliegen. Auf dem LiveConfig-Server sollten folgende Dateien und Verzeichnisse in ein regelmäßiges Backup aufgenommen werden: • /etc/liveconfig/ (Konfiguration, Lizenzschlüssel, SSL-Zertifikate, etc.) • /var/lib/liveconfig/liveconfig/htdocs/ (hochgeladene Dateien, Logos, etc.) • SQLite- oder MySQL-Datenbank (s.u.) Zur Erstellung eines Backups muss LiveConfig nicht beendet werden - das kann problemlos im laufenden Betrieb erfolgen. LiveConfig speichert intern zwar alle Passwörter verschlüsselt bzw. gehashed, aber dennoch enthalten die Datenbanken alle Kundendaten (Namen, Anschriften, E-Mail-Adressen, usw.) im Klartext. Aus diesem Grund dürfen die Backup-Dateien niemals unverschlüsselt auf einen anderen Server kopiert oder abgelegt werden - insbesondere also nicht per FTP. Wir empfehlen dringend, die Sicherungskopie vor der Übertragung zu verschlüsseln (z.B. mit GPG). Bewahren Sie alle Backups grundsätzlich an einem anderen Ort, vor allem aber auf einem anderen Server auf, als auf welchem diese erstellt werden! Nur so können Sie auch im Falle von Festplatten-Defekten oder größeren Schäden (Brand etc.) eine Wiederherstellung durchführen. Sicherung der internen SQLite-Datenbank Normalerweise speichert LiveConfig alle internen Daten in der SQLite-Datenbank /var/lib/ liveconfig/liveconfig.db. Diese Datenbank kann mit dem Hilfsprogramm lcdbbackup gesichert werden. Beispiel zur Sicherung der SQLite-Datenbank: 87 Wartung und Pflege $> cd /var/lib/liveconfig $> /usr/lib/liveconfig/lcdbbackup liveconfig.db liveconfig.db.bak Creating SQLite Database Backup Input File: liveconfig.db Output File: liveconfig.db.bak Done. Sicherung einer internen MySQL-Datenbank Falls Sie LiveConfig so konfiguriert haben, dass die internen Daten in einer MySQL-Datenbank gespeichert werden (siehe Abschnitt 2.3.1, „ MySQL “), dann muss für ein Backup ein regelmäßiger Dump dieser Datenbank erzeugt werden. Beispiel zur Sicherung der MySQL-Datenbank: $> mysql -u liveconfig --password=SaFePaSsWoRd --add-drop-table LIVECONFIG > LiveConfig.sql 6.1.2. Wiederherstellung Zur Wiederherstellung eines LiveConfig-Backups verfahren Sie wie folgt: 1. Sollte LiveConfig nicht oder nicht mehr installiert sein, dann installieren Sie am besten die selbe Version, mit der auch die Backups erzeugt wurden. Alternativ können Sie auch eine neuere Version installieren (LiveConfig ist immer abwärtskompatibel mit älteren Datenbanken). 2. Falls LiveConfig noch läuft, beenden Sie dieses (z.B. liveconfig -k stop). 3. Entpacken Sie die Dateien aus dem Backup an ihren ursprünglichen Orten. 4. Für SQLite-Datenbanken: benennen Sie den Datenbank-Dump in den Original-Namen um (z.B. mv liveconfig.db.bak liveconfig.db). Für MySQL-Datenbanken: importieren Sie den MySQL-Dump (z.B. mysql -u liveconfig --password=SaFePaSsWoRd LIVECONFIG < LiveConfig.sql). 5. Starten Sie LiveConfig erneut (z.B. /etc/init.d/liveconfig start). 6. Prüfen Sie die Start-Meldungen sowie die LiveConfig-Logdatei (/var/log/liveconfig/liveconfig.log) ob alles in Ordnung ist. 6.2. Monitoring 6.2.1. Nagios® / Icinga® Zur Überwachung der Verfügbarkeit von LiveConfig mit Nagios (http://www.nagios.org) oder kompatiblen Programmen (z.B. Icinga, http://www.icinga.org) definieren Sie folgende Prüfbefehle: 88 Nagios® / Icinga® # Pruef-Befehl fuer LiveConfig define command{ command_name check_liveconfig command_line /usr/lib/nagios/plugins/check_http -H '$ARG1$' -I '$HOSTADDRESS$' -p '$ARG2$' -w '$ARG3$' -c '$ARG4$' --ssl -u /liveconfig/nagios-check -s "Status: OK" } # Pruef-Befehl fuer das LiveConfig SSL-Zertifikat define command{ command_name check_liveconfig_cert command_line /usr/lib/nagios/plugins/check_http -H '$ARG1$' -I '$HOSTADDRESS$' -p '$ARG2$' -C '$ARG3$' } Mit folgenden Service-Definitionen richten Sie schließlich die Überwachung ein: # Erreichbarkeit von LiveConfig pruefen: # Parameter: # (1) Hostname (auf den auch das SSL-Zertifikat ausgestellt ist) # (2) HTTPS-Port (meist 8443) # (3) Dauer (Sekunden) für Status "WARNING" (5) # (4) Dauer (Sekunden) für Status "CRITICAL" (10) define service { host_name ihr.liveconfig.server service_description LiveConfig Status check_command check_liveconfig!liveconfig.example.org!8443!5!10 use generic-service } # SSL-Zertifikat für LiveConfig pruefen: # Parameter: # (1) Hostname (auf den auch das SSL-Zertifikat ausgestellt ist) # (2) HTTPS-Port (meist 8443) # (3) Ablaufdauer (Tage) für SSL-Zertifikat (10) define service { host_name ihr.liveconfig.server service_description LiveConfig Status check_command check_liveconfig_cert!liveconfig.example.org!8443!10 use generic-service } Tragen Sie beim Befehl host_name den Namen des zu prüfenden Servers ein (so wie Sie diesen in Nagios konfiguriert haben; hier beispielsweise ihr.liveconfig.server), und als ersten Parameter beim check_command (also nach check_liveconfig) den Namen oder die IP-Adresse, unter der Sie LiveConfig normalerweise aufrufen - das sollte in der Regel der selbe Servername sein, auf den auch das SSL-Zertifikat ausgestellt ist (hier beispielsweise liveconfig.example.org). Der erste Test prüft, ob LiveConfig und dessen intern verwendete Datenbank erreichbar sind. Hierfür wird die spezielle Test-URL /liveconfig/nagios-check aufgerufen, welche bei Erfolg die Meldung „Status: OK“ ausgibt. 89 Wartung und Pflege Der zweite Test prüft die Gültigkeit des SSL-Zertifikats. Vor allem dann, wenn Sie ein „offizielles“ SSL-Zertifikat verwenden, sollte die Gültigkeit sichergestellt sein, da die Benutzer von LiveConfig bei abgelaufenem SSL-Zertifikat eine Warnmeldung im Browser erhalten (die Daten werden aber dennoch verschlüsselt übertragen). 90 Kapitel 7. Deinstallation Für den unwahrscheinlichen Fall, dass Sie LiveConfig wieder von Ihrem Server entfernen möchten, sind in den folgenden Abschnitten die notwendigen Schritte beschrieben. Da sich LiveConfig „minimal-invasiv“ verhält, ist eine rückstandsfreie Deinstallation möglich. 7.1. LiveConfig-Server deinstallieren 7.1.1. Debian GNU/Linux Mit folgendem Befehl wird LiveConfig deinstalliert: aptitude remove liveconfig Dabei werden die Konfigurationsdateien auf dem Server belassen. Sollen diese auch entfernt werden, verwenden Sie aptitude purge liveconfig. In diesem Fall werden Sie sicherheitshalber noch einmal gefragt, ob die LiveConfig-Datenbank (SQLite) wirklich gelöscht werden soll: 7.1.2. Ubuntu Linux Mit folgendem Befehl wird LiveConfig deinstalliert: sudo aptitude remove liveconfig Dabei werden die Konfigurationsdateien auf dem Server belassen. Sollen diese auch entfernt werden, verwenden Sie sudo aptitude purge liveconfig. In diesem Fall werden Sie sicherheitshalber noch einmal gefragt, ob die LiveConfig-Datenbank (SQLite) wirklich gelöscht werden soll: 91 Deinstallation 7.1.3. OpenSUSE, CentOS LiveConfig wird unter rpm-basierten Distributionen mit dem Befehl rpm -e liveconfig deinstalliert. 7.2. LiveConfig-Client deinstallieren 7.2.1. Debian GNU/Linux Mit folgendem Befehl wird der LiveConfig-Client deinstalliert: aptitude remove lcclient Dabei werden die Konfigurationsdateien auf dem Server belassen. Sollen diese auch entfernt werden, verwenden Sie aptitude purge lcclient. 7.2.2. Ubuntu Linux Mit folgendem Befehl wird der LiveConfig-Client deinstalliert: sudo aptitude remove lcclient Dabei werden die Konfigurationsdateien auf dem Server belassen. Sollen diese auch entfernt werden, verwenden Sie sudo aptitude purge lcclient. 7.2.3. OpenSUSE, CentOS Der LiveConfig-Client wird unter rpm-basierten Distributionen mit dem Befehl rpm -e lcclient deinstalliert. 92 Kapitel 8. Programmierschnittstellen (APIs) Über die in diesem Abschnitt beschriebenen Schnittstellen können externe Anwendungen mit LiveConfig kommunizieren sowie die Funktionen von LiveConfig angepasst und erweitert werden. Hierdurch ist eine Anpassung an spezielle Umgebungen sowie die Anbindung an eigene Systeme wie z.B. Auftragsverwaltung oder Abrechnungssystem möglich. Bitte beachten Sie, dass über die APIs ausgeführte Aktionen i.d.R. nicht rückgängig gemacht werden können. Für die Entwicklung und den Test Ihrer eigenen Anwendungen richten Sie am besten eine TestUmgebung mit LiveConfig ein. LiveConfig bietet drei Schnittstellen: • SOAP API - für die Fernsteuerung Diese Schnittstelle eignet sich besonders für den Import von Kundendaten, die Anbindung an bestehende Bestell-, Abrechnungs- und Verwaltungssysteme. • Lua API - für die Anpassungen Über diese Schnittstelle steuert und konfiguriert LiveConfig die verwalteten Server - Anpassungen an eigene Hosting-Umgebungen können hierüber vorgenommen werden. • IFRAME API - für die Erweiterungen Mit Hilfe „eigener Links“ können Sie eigene Webseiten über einen <IFRAME> in LiveConfig einbinden. 8.1. SOAP Webservice API Die Abkürzung SOAP steht für das Simple Object Access Protocol. Die meisten aktuellen Programmiersprachen unterstützen SOAP. Zusätzlich dient eine von LiveConfig bereitgestellte WSDL-Datei (Web Service Description Language) zur automatischen Erkennung der zur Verfügung stehenden Funktionen und Datentypen, so dass oft eine nahtlose Integration in eigene Anwendungen möglich ist. Die Kommunikation für den SOAP-Zugriff erfolgt in Form von XML-Nachrichten über „ganz normale“ HTTP(S)-Verbindungen. Beispielsweise sieht der Aufruf der SOAP-Funktion TestSayHello so aus: 93 Programmierschnittstellen (APIs) <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:LiveConfig"> <SOAP-ENV:Body> <ns1:TestSayHello> <ns1:auth> <ns1:login>admin</ns1:login> <ns1:timestamp>2009-12-22T19:20:59.000Z</ns1:timestamp> <ns1:token>7juGMfg7N/F1G4t+S7XW99nRidg=</ns1:token> </ns1:auth> <ns1:firstname>Manfred</ns1:firstname> <ns1:lastname>Mustermann</ns1:lastname> </ns1:TestSayHello> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Bei einem erfolgreichen Aufruf sieht die Antwort so aus: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <TestSayHelloResponse xmlns="urn:LiveConfig"> <greeting>Hello, Manfred Mustermann</greeting> </TestSayHelloResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Tritt während der Verarbeitung einer Anfrage ein Fehler auf, wird eine SOAP-Exception erzeugt. Diese enthält eine aussagekräftige Fehlermeldung. Die Fehlermeldung für einen abgelaufenen (ungültigen) Zeitstempel sieht beispielsweise so aus: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/ encoding/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Authentication timestamp too far in past or future</faultstring> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 8.1.1. Voraussetzungen Die SOAP-Schnittstelle von LiveConfig ist über die URL /liveconfig/soap zu erreichen. Die SOAP-Aufrufe müssen im document/literal-Stil formuliert sein (nicht als RPC/encoded). 94 Authentifizierung Zudem müssen Sie LiveConfig mit einer Standard- oder Business-Lizenz betreiben. Mit der BasicLizenz steht die SOAP-API nicht zur Verfügung. 8.1.2. Authentifizierung Zur Authentifizierung von SOAP-Zugriffen ist ein spezielles Token erforderlich - eine Prüfsumme aus Uhrzeit, Funktionsnamen und einem eigenen SOAP-Passwort. Zu jedem Benutzer in LiveConfig kann neben dem „normalen“ Passwort ein davon unabhängiges SOAP-Passwort hinterlegt werden (siehe auch Abschnitt 2.7, „ Passwort-Initialisierung “. Alle SOAP-Funktionen erfordern die Übermittlung eines auth-Parameters, welcher den Benutzernamen, einen Zeitstempel und das SOAP-Token enthält. Das Token ist eine Base64-codierte HMAC-SHA1-Prüfsumme über den Begriff „LiveConfig“, den eigenen Benutzernamen, den aufzurufenden Funktionsnamen und den Zeitstempel; als Schlüssel wird das SOAP-Passwort verwendet. Folgendes Beispiel demonstriert die Erzeugung des auth-Parameters in PHP 5: $user = 'admin'; $pass = 'PaSsWoRt'; $func = 'TestSayHello'; # Benutzername # SOAP-Passwort # aufzurufende SOAP-Funktion # Zeitstempel erzeugen; Beispiel: '2009-12-07T11:05:00.000Z' $ts = gmdate("Y-m-d") . "T" . gmdate("H:i:s") . ".000Z"; # Token erzeugen: $token = base64_encode(hash_hmac('sha1', 'LiveConfig' . $user . $func . $ts, $pass, true ) ); # auth-Parameter erzeugen: $auth = array('login' => $user, 'timestamp' => $ts, 'token' => $token ); Der im auth-Parameter angegebene Zeitstempel darf nicht mehr als 15 Minuten von der aktuellen Serverzeit auf dem LiveConfig-Server abweichen - ansonsten erfolgt eine Fehlermeldung. Die Uhrzeit muss als UTC/GMT-Zeit angegeben werden. Wiederverkäufer: Funktionen mit Kundenrechten ausführen Wiederverkäufer (Reseller) können alle SOAP-Funktionen auch mit den Rechten eines beliebigen ihrer Kunden ausführen. Das ist beispielsweise dann sinnvoll, wenn einem Kunden weitere untergeordnete Kunden zugeordnet werden sollen. 95 Programmierschnittstellen (APIs) Für diesen Fall wird vor Berechnung des Tokens noch die (codierte) Kundennummer angefügt, und das optionale Feld customer im auth-Parameter gesetzt. Der Kunde, mit dessen Rechten eine Funktion ausgeführt werden soll, muss für die jeweilige Funktion auch berechtigt sein - unabhängig von dem für die SOAP-Authentifizierung verwendeten Benutzer. Beispiel in PHP5 für Ausführung mit Kundenrechten: $user $pass $func $cust = = = = 'admin'; 'PaSsWoRt'; 'TestSayHello'; 'c9R4hQp.T-rF'; # # # # Benutzername SOAP-Passwort aufzurufende SOAP-Funktion codierte Kunden-ID # Zeitstempel erzeugen; Beispiel: '2009-12-07T11:05:00.000Z' $ts = gmdate("Y-m-d") . "T" . gmdate("H:i:s") . ".000Z"; # Token erzeugen: $token = base64_encode(hash_hmac('sha1', 'LiveConfig' . $user . $func . $ts . $cust, $pass, true ) ); # auth-Parameter erzeugen: $auth = array('login' => 'timestamp' => 'token' => 'customer' => ); $user, $ts, $token, $cust 8.1.3. WSDL Servicebeschreibung LiveConfig kann eine WSDL-Beschreibung mit allen für den jeweiligen Benutzer erlaubten Funktionen und den dazugehörigen Datentypen erzeugen. Hierfür werden an die SOAP-URL der Parameter ?wsdl sowie Benutzername und SOAP-Passwort angefügt. Eventuelle Sonderzeichen im Passwort müssen natürlich entsprechend URL-codiert werden. Das folgende Beispiel zeigt die Erzeugung eines SOAP-Clients mit PHP5 anhand einer automatisch generierten WSDL-Datei: 96 Programmbeispiele $user = 'admin'; $pass = 'PaSsWoRt'; # Benutzername # SOAP-Passwort # WSDL-URL erzeugen: $url = 'https://your.liveconfig.server:8443/liveconfig/soap' .'?wsdl' # WSDL anfordern .'&l=' . urlencode($user) .'&p=' . urlencode($pass); # SOAP-Client erzeugen: $client = new SoapClient($url, array('style' => SOAP_DOCUMENT, 'use' => SOAP_LITERAL, ) ); Derzeit wird das SOAP-Passwort für den WSDL-Abruf im Klartext an die WSDL-URL angefügt. Die Übertragung zum Server erfolgt über das HTTPS-Protokoll dennoch verschlüsselt, und im access_log von LiveConfig wird das Passwort ausgeblendet. In einer späteren Version von LiveConfig soll statt des Passworts auch ein Hash verwendet werden. Da jedoch in manchen Programmiersprachen (z.B. beim WebService-Wizzard von C#) die direkte Eingabe einer WSDL-URL erwartet wird, wäre eine manuelle HashBerechnung unzumutbar. 8.1.4. Programmbeispiele Im Folgenden finden Sie für die gängigsten Programmiersprachen kleine Beispielprogramme, welche die Verwendung der SOAP-Schnittstelle demonstrieren. 8.1.4.1. PHP 5 PHP5 unterstützt SOAP nativ und benötigt (im Gegensatz zu PHP4) keine weiteren PEAR/PECLPakete. Einzige Bedingung ist, dass PHP mit der Option --enable-soap übersetzt wurde. Ob die SOAP-Unterstützung aktiviert ist erkennt man an der phpinfo()-Ausgabe: Das folgende Beispielprogramm zeigt alle notwendigen Schritte zur Ausführung einer SOAPAnfrage an LiveConfig: 97 Programmierschnittstellen (APIs) <?php # Configuration parameters: $user = 'admin'; $pass = 'PaSsWoRd'; $url = 'https://your.liveconfig.server:8443/liveconfig/soap'; # Construct WSDL URL $wsdl_url = $url .'?wsdl' .'&l=' . urlencode($user) .'&p=' . urlencode($pass); # Create SOAP client $client = new SoapClient($wsdl_url, array('style' 'use' ) ); => SOAP_DOCUMENT, => SOAP_LITERAL, # Construct SOAP token: $ts = gmdate("Y-m-d") . "T" . gmdate("H:i:s") . ".000Z"; $token = base64_encode(hash_hmac('sha1', 'LiveConfig' . $user . 'TestSayHello' . $ts, $pass, true ) ); $auth = array('login' => $user, 'timestamp' => $ts, 'token' => $token); $params = array('auth' => $auth, 'firstname' => 'John', 'lastname' => 'Doe'); try { $response = $client->TestSayHello($params); } catch (SoapFault $soapFault) { die("Error while calling Web Service: " . $soapFault->faultstring . "\n"); } echo "Response: " . $response->greeting . "\n"; ?> 8.1.4.2. Perl Die bei Perl häufig für WebServices genutzte Bibliothek SOAP::Lite unterstützt leider nicht das document/literal-Format, welches sich inzwischen als De-Facto-Standard für WebServices durchgesetzt hat. 98 Programmbeispiele Statt dessen empfehlen wir das Paket SOAP::WSDL, welches sich ebenfalls via CPAN installieren lässt. Das folgende Beispielprogramm zeigt alle notwendigen Schritte zur Ausführung einer SOAPAnfrage an LiveConfig: 99 Programmierschnittstellen (APIs) #!/usr/bin/perl -w -t use use use use use strict; SOAP::WSDL; MIME::Base64; Digest::HMAC_SHA1; URI::Escape; # Configuration parameters: my $user = 'admin'; my $pass = 'PaSsWoRd'; my $url = 'http://your.liveconfig.server/liveconfig/soap'; # Construct WSDL URL my $wsdl_url = $url .'?wsdl' .'&l=' . uri_escape($user) .'&p=' . uri_escape($pass); my $firstname = 'John'; my $lastname = 'Doe'; # Create SOAP client my $soap = SOAP::WSDL->new( wsdl => $wsdl_url); # Construct SOAP token: my ($sec,$min,$hour,$mday,$mon,$year)=gmtime(time); my $ts = sprintf('%4d-%02d-%02dT%02d:%02d:%02d.000Z', $year+1900, $mon+1, $mday, $hour, $min, $sec); my $token = MIME::Base64::encode( Digest::HMAC_SHA1::hmac_sha1( 'LiveConfig' . $user . 'TestSayHello' . $ts, $pass ), '' ); my %auth = ('login' => $user, 'timestamp' => $ts, 'token' => $token ); my %params = ('auth' => \%auth, 'firstname' => $firstname, 'lastname' => $lastname ); my $som = $soap->call('TestSayHello', TestSayHello => \%params); if ($som->fault) { die "Error while calling Web Service: " . $som->faultstring . "\n"; } print "Response: " . $som->result() . "\n"; 100 SOAP-Referenz 8.1.5. SOAP-Referenz In der nachfolgenden Referenz sind alle SOAP-Funktionen aufgeführt. Funktion Beschreibung TestSayHello Test-Funktion zur Prüfung der SOAP-API LiveConfigVersion Versionsnummer des LiveConfig-Servers abfragen ContactAdd Kontaktdaten anlegen ContactEdit Kontaktdaten bearbeiten ContactGet Kontaktdaten abrufen CustomerAdd Kunden anlegen CustomerEdit Kunden bearbeiten CustomerGet Kundendaten auslesen HostingPlanAdd Webhosting-Angebot anlegen HostingPlanGet Webhosting-Angebot abrufen HostingSubscriptionAdd Webhosting-Vertrag anlegen HostingSubscriptionDelete Webhosting-Vertrag löschen HostingSubscriptionGet Details zu einem Webhosting-Vertrag auslesen HostingSubscriptionEdit Webhosting-Vertrag bearbeiten HostingDomainAdd Domain für Webhosting anlegen HostingSubdomainAdd Subdomain für Webhosting anlegen HostingDatabaseAdd Hosting-Vertrag eine bestehende Datenbank hinzufügen HostingMailboxAdd E-Mail-Postfach einrichten HostingMailboxEdit E-Mail-Postfach bearbeiten HostingCronAdd neuen Cron-Job erstellen HostingPasswordUserAdd neuen Benutzer für Verzeichnis-Passwortschutz anlegen HostingPasswordPathAdd Verzeichnispfad mit Passwort schützen HostingFtpAdd zusätzlichen FTP-Account anlegen UserAdd Benutzer anlegen UserGet Benutzerdaten abrufen SessionCheck Session-ID prüfen 101 Programmierschnittstellen (APIs) TestSayHello TestSayHello — Test-Funktion zum Prüfen der SOAP-Schnittstelle Beschreibung Mit dieser Funktion kann der Zugriff auf die SOAP-Schnittstelle getestet werden. Diese Funktion steht jedem Benutzer mit SOAP-Berechtigung zur Verfügung. Aufruf Field auth firstname lastname Type AuthData string string RegExp ^\w{1,30}$ ^\w{1,30}$ NULL? no no no Description Authentifizierungsdaten Vorname Nachname Type string RegExp - NULL? Description no Antwortmeldung Antwort Field greeting Die Antwortmeldung wird zusammengesetzt aus „Hello, <firstname> <lastname>“. LiveConfigVersion LiveConfigVersion — Versionsnummer des LiveConfig-Servers abfragen Beschreibung Diese Funktion liefert die genaue Versionsnummer des LiveConfig-Servers zurück. Diese kann beispielsweise zur Prüfung der Kompatiblität mit eigenen Programmen verwendet werden. Aufruf Field auth Type AuthData RegExp NULL? Description no Authentifizierungsdaten Field version revision Type string string RegExp - major minor patch integer integer integer - NULL? Description no Versionsnummer (z.B. 1.3.2) no Revisionsnummer (z.B. 1379 - kann in Ausnahmefällen auch Buchstaben enthalten) no Haupt-Versionsnummer (z.B. 1) no Unter-Versionsnummer (z.B. 3) no Patch-Versionsnummer (z.B. 2) Antwort 102 SOAP-Referenz ContactAdd ContactAdd — Neuen Kontaktdatensatz anlegen Beschreibung Mit dieser Funktion kann ein neuer Kontaktdatensatz angelegt werden. Rückgabewert ist die ID des neuen Datensatzes. Existiert bereits ein identischer Kontaktdatensatz, so wird dessen ID zurückgegeben. Aufruf Field auth type salutation title firstname lastname company address1 address2 zipcode city country phone fax mobile email Type AuthData integer integer string string string string string string string string string string string string string RegExp website string NULL? no yes ^[01]$ no ^.{1,50}$ yes ^.{1,128}$ no ^.{1,128}$ no ^.{1,128}$ yes ^.{1,128}$ yes ^.{1,128}$ yes ^.{1,10}$ yes ^.{1,64}$ yes ^\w\w$ no ^.{1,30}$ yes ^.{1,30}$ yes ^.{1,30}$ yes (?=^([\.a-z0-9_\- yes +]+@([a-z0-9\-]+ \.)+[a-z]{2,6})?$) (^.{6,128}$)$ ^.{1,128}$ yes Type string RegExp - Description Authentifizierungsdaten Typ (0=Person, 1=Firma/Organisation) Anrede (0=Herr, 1=Frau) Titel (z.B. Dr.) Vorname Nachname Firma Anschrift Anschrift (Forts.) Postleitzahl Stadt Land (als ISO 3166-1 Code) Telefonnummer Faxnummer Handynummer E-Mail-Adresse Website Antwort Field id NULL? Description no Datensatz-ID Die Datensatz-ID ist kundenspezifisch verschlüsselt. ContactEdit ContactEdit — Bestehende Kontaktdaten bearbeiten Beschreibung Mit dieser Funktion kann ein bestehender Kontaktdatensatz bearbeitet werden. 103 Programmierschnittstellen (APIs) Aufruf Field auth id type salutation title firstname lastname company address1 address2 zipcode city country phone fax mobile email Type AuthData string integer integer string string string string string string string string string string string string string RegExp website string NULL? no ^[\w.-]{12}$ yes no ^[01]$ no ^.{1,50}$ yes ^.{1,128}$ no ^.{1,128}$ no ^.{1,128}$ yes ^.{1,128}$ yes ^.{1,128}$ yes ^.{1,10}$ yes ^.{1,64}$ yes ^\w\w$ no ^.{1,30}$ yes ^.{1,30}$ yes ^.{1,30}$ yes (?=^([\.a-z0-9_\- yes +]+@([a-z0-9\-]+ \.)+[a-z]{2,6})?$) (^.{6,128}$)$ ^.{1,128}$ yes Type string RegExp - Description Authentifizierungsdaten ID des Kontaktdatensatzes Typ (0=Person, 1=Firma/Organisation) Anrede (0=Herr, 1=Frau) Titel (z.B. Dr.) Vorname Nachname Firma Anschrift Anschrift (Forts.) Postleitzahl Stadt Land (als ISO 3166-1 Code) Telefonnummer Faxnummer Handynummer E-Mail-Adresse Website Antwort Field status NULL? Description no Status („ok“) ContactGet ContactGet — Bestehende Kontaktdaten abrufen Beschreibung Mit dieser Funktion können Kontaktdaten abgerufen werden. Aufruf Field auth id Type AuthData string RegExp ^[\w.-]{12}$ NULL? Description no Authentifizierungsdaten no ID des Kontaktdatensatzes Type integer integer string string RegExp - NULL? no no yes no Antwort Field type salutation title firstname 104 Description Typ (0=Person, 1=Firma/Organisation) Anrede (0=Herr, 1=Frau) Titel (z.B. Dr.) Vorname SOAP-Referenz Field lastname company address1 address2 zipcode city country phone fax mobile email website Type string string string string string string string string string string string string RegExp - NULL? no yes yes yes yes yes no yes yes yes yes yes Description Nachname Firma Anschrift Anschrift (Forts.) Postleitzahl Stadt Land (als ISO 3166-1 Code) Telefonnummer Faxnummer Handynummer E-Mail-Adresse Website CustomerAdd CustomerAdd — Neuen Kunden anlegen Beschreibung Mit dieser Funktion kann ein neuer Kunde angelegt werden. Rückgabewert ist die ID des neuen Datensatzes sowie die Kundennummer (cid). Existiert bereits ein identischer Kunde, so wird dessen ID zurückgegeben. Die Kundennummer (cid) darf nur aus Zahlen bestehen und muss eindeutig sein. Wird dieses Feld leer gelassen, vergibt LiveConfig automatisch die nächste verfügbare Kundennummer. Aufruf Field auth cid owner_c admin_c billing_c locked Type AuthData long string string string integer RegExp ^\d{1,18}$ ^[\w.-]{12}$ ^[\w.-]{12}$ ^[\w.-]{12}$ ^[012]$ NULL? no yes no no no no Description Authentifizierungsdaten Kundennummer Kontakt-ID des Kunden Kontakt-ID des Ansprechpartners Kontakt-ID des Rechnungsempfängers Status (0=aktiv, 1=gesperrt, 2=deaktiviert) Type string long RegExp - NULL? Description no Datensatz-ID no Kundennummer Antwort Field id cid Die Datensatz-ID ist kundenspezifisch verschlüsselt. CustomerEdit CustomerEdit — Bestehenden Kunden bearbeiten 105 Programmierschnittstellen (APIs) Beschreibung Mit dieser Funktion können die Daten eines bestehenden Kunden bearbeitet werden (z.B. Kunde sperren, neue Kontaktdaten angeben, etc.). Die Kundennummer kann derzeit noch nicht über die SOAP-API geändert werden (bitte nutzen Sie dazu die Weboberfläche). Aufruf Field auth cid owner_c admin_c billing_c locked Type AuthData long string string string integer RegExp ^\d{1,18}$ ^[\w.-]{12}$ ^[\w.-]{12}$ ^[\w.-]{12}$ ^[012]$ NULL? no no yes yes yes yes Description Authentifizierungsdaten Kundennummer ggf. neue Kontakt-ID des Kunden ggf. neue Kontakt-ID des Ansprechpartners ggf. neue Kontakt-ID des Rechnungsempfängers ggf. neuer Status (0=aktiv, 1=gesperrt, 2=deaktiviert) Type string RegExp - NULL? Description no Status („ok“) Antwort Field status CustomerGet CustomerGet — Kundendaten auslesen Beschreibung Mit dieser Funktion können die Stammdaten einzelner oder aller Kunden ausgelesen werden. Wird das Feld cid leer gelassen, werden die Daten aller eigenen Kunden zurückgegeben, ansonsten nur die des angegebenen Kunden. Wird kein passender Datensatz gefunden, wird eine leere Liste zurückgegeben. Die in subscription zurückgegebenen Vertragsnamen können für den Aufruf von HostingSubscriptionGet verwendet werden. Aufruf Field auth cid Type AuthData long RegExp ^\d{1,18}$ NULL? Description no Authentifizierungsdaten yes Kundennummer Antwort Field customers Type RegExp CustomerDe- tails[] Die Kundendetails sind wie folgt aufgebaut: 106 NULL? Description yes Array mit Kundendatensätzen SOAP-Referenz Field id cid owner_c admin_c billing_c locked subscription Type string long string string string integer string[] RegExp - NULL? no no no no no no yes Description Datensatz-ID Kundennummer Kontakt-ID des Kunden Kontakt-ID des Kunden Kontakt-ID des Kunden Status (0=aktiv, 1=gesperrt, 2=deaktiviert) Liste mit Vertragsnamen, die dem Kunden zugeordnet sind HostingPlanAdd HostingPlanAdd — Neues Webhosting-Angebot anlegen Beschreibung Mit dieser Funktion kann ein neues Webhosting-Angebot angelegt werden. Rückgabewert ist die ID des neuen Datensatzes. Existiert für diesen Kunden bereits ein Angebot mit dem selben Namen, so wird ein Ausnahmefehler erzeugt. Aufruf Field auth name maxcustomers Type AuthData string integer RegExp ^.{1,50}$ ^-?\d{1,8}$ NULL? no no yes maxusers integer ^-?\d{1,8}$ no webspace integer ^-?\d{1,8}$ yes ssi php cgi integer integer integer ^[01]$ ^[0123]$ ^[012]$ yes yes yes ssl integer ^[01]$ yes cronjobs apps ftpaccounts shellaccess integer integer integer integer ^-?\d{1,8}$ ^-?\d{1,8}$ ^-?\d{1,8}$ ^[012]$ yes yes yes yes databases subdomains extdomains integer integer integer ^-?\d{1,8}$ ^-?\d{1,8}$ ^-?\d{1,8}$ yes yes yes mailboxes integer ^-?\d{1,8}$ yes Description Authentifizierungsdaten Name/Titel des Angebots Maximale Kundenzahl für Reseller (NULL: kein Reseller-Paket, -1: unbegrenzt) Maximale Anzahl an Benutzern (muss >= 1 sein, oder -1: unbegrenzt) Enthaltener Webspace (MB) (NULL: kein Webspace, -1: unbegrenzt) Server-Side Includes (SSI) PHP (0=nein, 1=suPHP, 2=FastCGI, 3=mod_php) CGI-Scripte (0: nein, 1: ja, in /cgi-bin/, 2: ja, in jedem Verzeichnis) SSL-Verschlüsselung (HTTPS-Zugriff) (0: nein, 1: ja) Anzahl Cron-Jobs (-1: unbegrenzt) Anzahl installierbarer Apps (-1: unbegrenzt) Enthaltene FTP-Zugänge (-1: unbegrenzt) Shell-Zugriff erlaubt? (0: nein, 1: scponly/sftp, 2: ja (Bash)) Enthaltene Datenbanken (-1: unbegrenzt) Enthaltene Subdomains (-1: unbegrenzt) Max. Anzahl externer Domains (NULL: keine, -1: unbegrenzt) Enthaltene E-Mail-Postfächer (-1: unbegrenzt) 107 Programmierschnittstellen (APIs) Field mailaddrs mailquota Type integer integer RegExp ^-?\d{1,8}$ ^-?\d{1,8}$ traffic integer ^-?\d{1,8}$ NULL? Description yes Enthaltene E-Mail-Adressen (-1: unbegrenzt) yes E-Mail-Speicherplatz (insgesamt) (-1: unbegrenzt) no Enthaltener IP-Traffic (-1: unbegrenzt) Type string RegExp - NULL? Description no Datensatz-ID Antwort Field id Die Datensatz-ID ist kundenspezifisch verschlüsselt. HostingPlanGet HostingPlanGet — Eigenschaften eines oder mehrerer Hosting-Angebote abrufen Beschreibung Mit dieser Funktion können die Eigenschaften eines oder mehrerer Hosting-Angebote abgerufen werden. Wird ein Name in name angegeben, werden nur die Daten dieses Angebots zurückgegeben, ansonsten alle Daten. Wird ein Name angegeben, zu dem kein Angebot gefunden werden kann, wird eine leere Liste zurückgegeben. Die Rückgabe der Angebotsdaten erfolgt stets als Liste, auch wenn nur ein Angebot abgerufen wird. Aufruf Field auth name Type AuthData string RegExp ^.{1,50}$ NULL? Description no Authentifizierungsdaten yes Name/Titel des Angebots Antwort Field plans Type RegExp HostingPlan- Details NULL? Description no Array mit Angebots-Details Die Angebots-Details sind wie folgt aufgebaut: Field name maxcustomers Type string integer RegExp - maxusers integer - webspace integer - ssi integer - 108 NULL? Description no Name/Titel des Angebots yes Maximale Kundenzahl für Reseller (NULL: kein Reseller-Paket, -1: unbegrenzt) no Maximale Anzahl an Benutzern (muss >= 1 sein, oder -1: unbegrenzt) yes Enthaltener Webspace (MB) (NULL: kein Webspace, -1: unbegrenzt) yes Server-Side Includes (SSI) erlaubt? (1: ja) SOAP-Referenz Field php Type integer RegExp - cgi integer - ssl cronjobs apps ftpaccounts shellaccess integer integer integer integer integer - databases subdomains extdomains integer integer integer - mailboxes mailaddrs mailquota integer integer integer - traffic integer - NULL? Description yes PHP erlaubt? (0=nein, 1=suPHP, 2=FastCGI, 3=mod_php) yes CGI-Scripte erlaubt? (1: ja, in /cgi-bin/, 2: ja, in jedem Verzeichnis) yes SSL-Zugriff (HTTPS) erlaubt? (1: ja) yes Anzahl Cron-Jobs (-1: unbegrenzt) yes Anzahl installierbarer Apps (-1: unbegrenzt) yes Enthaltene FTP-Zugänge (-1: unbegrenzt) yes Shell-Zugriff erlaubt? (0:nein, 1: scponly/sftp, 2: ja (Bash)) yes Enthaltene Datenbanken (-1: unbegrenzt) yes Enthaltene Subdomains (-1: unbegrenzt) yes Maximale Anzahl externer Domains (-1: unbegrenzt) yes Enthaltene E-Mail-Postfächer (-1: unbegrenzt) yes Enthaltene E-Mail-Adressen (-1: unbegrenzt) yes E-Mail-Speicherplatz (insgesamt) (-1: unbegrenzt) yes Enthaltener IP-Traffic (-1: unbegrenzt) HostingSubscriptionAdd HostingSubscriptionAdd — Neuen Webhosting-Vertrag anlegen Beschreibung Mit dieser Funktion kann ein neuer Webhosting-Vertrag angelegt werden. Wird der neue Webhosting-Vertrag innerhalb eines Reseller-Vertrags angelegt, so muss der Name des jeweiligen Reseller-Vertrags in resalecontract angegeben werden. Wird resalecontract leer gelassen, dann müssen in den Feldern webserver, mailserver und dbserver die Namen der Server angegeben werden, auf denen die jeweiligen Dienste (Webspace, E-Mail, Datenbanken) eingerichtet werden sollen, sofern diese im Hostingvertrag enthalten sind. Wird das Feld plan leer gelassen, dann wird ein individuelles Hosting-Paket eingerichtet. Ansonsten wird das angegebene Hostingangebot als Basis verwendet, und ggf. abweichende Parameter (Webspace, Datenbanken etc.) als „Sonderausstattung“ verwaltet. Der Vertragsname (subscriptionname) muss systemweit eindeutig sein. Wenn das Passwort mit $1$ beginnt, dann geht LiveConfig davon aus dass es sich bereits um einen MD5-Passwort-Hash und nicht um ein Klartext-Passwort handelt. Dieses wird dann unverändert als Passwort in /etc/shadow geschrieben. Auf Systemen mit aktiviertem SELinux funktioniert das allerdings nicht! 109 Programmierschnittstellen (APIs) Wenn das Feld customerid leer gelassen wird, dann legt LiveConfig diesen Hostingvertrag unter „Mein Hosting“ an. Aufruf Field Type auth AuthData subscriptionname string RegExp ^[a-z][a-z0-9_-] {0,63}$ ^.{5,63}$ password string resalecontract string webserver string ^[a-z][a-z0-9_-] {0,63}$ ^[\w.-]{1,255}$ mailserver string ^[\w.-]{1,255}$ dbserver string ^[\w.-]{1,255}$ customerid string ^[\w.-]{12}$ plan maxcustomers string integer ^.{1,50}$ ^-?\d{1,8}$ maxusers integer ^-?\d{1,8}$ webspace integer ^-?\d{1,8}$ ssi php integer integer ^[01]$ ^[0123]$ cgi ssl integer integer ^[012]$ ^[012]$ cronjobs integer ^-?\d{1,8}$ apps integer ^-?\d{1,8}$ ftpaccounts shellaccess integer integer ^-?\d{1,8}$ ^[012]$ databases integer ^-?\d{1,8}$ subdomains integer ^-?\d{1,8}$ extdomains integer ^-?\d{1,8}$ mailboxes integer ^-?\d{1,8}$ 110 NULL? Description no Authentifizierungsdaten no eindeutiger Vertragsname (Auftragsnummer o.ä.) yes Passwort für den Vertrags-Account (i.d.R. FTPAccount) yes Name des Reseller-Vertrages, in dessen Rahmen dieser Hosting-Vertrag erzeugt wird yes ggf. Name des Servers, auf dem der Webspace eingerichtet werden soll yes ggf. Name des Servers, auf dem E-Mail eingerichtet werden soll yes ggf. Name des Servers, auf dem Datenbanken eingerichtet werden sollen yes ID des Kunden, dem der Vertrag zugewiesen wird (NULL: „Mein Hosting“) yes Name des Webhosting-Angebots yes Maximale Kundenzahl für Reseller (NULL: kein Reseller-Paket, -1: unbegrenzt) yes ggf. abweichende Anzahl an Benutzern (-1: unbegrenzt) yes ggf. abweichender Webspace (MB) (-1: unbegrenzt) yes ggf. abweichende Server-Side Includes (SSI) yes ggf. abweichende PHP-Erlaubnis (0: kein PHP, 1: suPHP, 2: FastCGI, 3: mod_php) yes ggf. abweichende CGI-Erlaubnis yes ggf. abweichende SSL-Erlaubnis (HTTPS) (0: nein, 1: ja, 2 ja (mit Zertifikatsverwaltung) yes ggf. abweichende Anzahl Cron-Jobs (-1: unbegrenzt) yes ggf. abweichende Anzahl installierbarer Apps (-1: unbegrenzt) yes ggf. abweichende FTP-Zugänge (-1: unbegrenzt) yes ggf. abweichender Shell-Zugriff (0: nein, 1: scponly/sftp, 2: Ja (bash)) yes ggf. abweichende Datenbank-Anzahl (-1: unbegrenzt) yes ggf. abweichende enthaltene Subdomains (-1: unbegrenzt) yes ggf. abweichende Anzahl externer Domains (-1: unbegrenzt) yes ggf. abweichende Anzahl an E-Mail-Postfächern (-1: unbegrenzt) SOAP-Referenz Field mailaddrs Type integer RegExp ^-?\d{1,8}$ mailquota integer ^-?\d{1,8}$ traffic webstats integer integer ^-?\d{1,8}$ ^[012]$ comment string ^.{1,100}$ NULL? Description yes ggf. abweichende Anzahl an E-Mail-Adressen (-1: unbegrenzt) yes ggf. abweichender E-Mail-Speicherplatz (-1: unbegrenzt) yes ggf. abweichender IP-Traffic (-1: unbegrenzt) yes Webstatistik-Einstellung (0: keine Statistik, 1: Webalizer, 2: AWStats) yes optionaler Kommentar RegExp - NULL? Description no Datensatz-ID no Vertragsname Antwort Field Type id string subscriptionname string Die Datensatz-ID ist kundenspezifisch verschlüsselt. HostingSubscriptionDelete HostingSubscriptionDelete — Webhosting-Vertrag löschen Beschreibung Mit dieser Funktion kann ein Webhosting-Vertrag gelöscht werden. Alle Objekte dieses Vertrags (Postfächer, Datenbanken, Domains, FTP-Accounts etc.) werden automatisch mit gelöscht. Um einen Wiederverkäufer-Vertrag zu löschen, müssen vorab all dessen Endkunden-Verträge gelöscht sein. Aufruf Field Type auth AuthData subscriptionname string RegExp ^[a-z][a-z0-9_-] {0,63}$ NULL? Description no Authentifizierungsdaten no Name des zu löschenden Vertrags Antwort Field status Type string RegExp - NULL? Description no Ausführungsstatus (ok) HostingSubscriptionGet HostingSubscriptionGet — Details zu einem Webhosting-Vertrag auslesen 111 Programmierschnittstellen (APIs) Beschreibung Mit dieser Funktion können Details zu einem Hosting-Vertrag ausgelesen werden. Aufruf Field Type auth AuthData subscriptionname string RegExp ^[a-z][a-z0-9_-] {0,63}$ NULL? Description no Authentifizierungsdaten no Vertragsname Antwort Field hostname Type string RegExp - customerid string - plan maxcustomers string integer - maxusers webspace integer integer - ssi php integer integer - cgi ssl integer integer - cronjobs apps integer integer - ftpaccounts shellaccess integer integer - databases subdomains extdomains mailboxes mailaddrs mailquota traffic comment domains integer integer integer integer integer integer integer string HostingSubs- criptionDomain[] HostingData- base[] databaseList 112 NULL? Description yes Name des Servers, auf dem das Hosting-Paket eingerichtet ist yes ID des Kunden, dem der Vertrag zugewiesen ist (ist NULL, wenn es sich um einen „eigenen“ Hostingvertrag handelt) yes Name des Webhosting-Angebots yes Maximale Kundenzahl für Reseller (NULL: kein Reseller-Paket, -1: unbegrenzt) no Maximale Anzahl an Benutzern (-1: unbegrenzt) yes Webspace (MB) (NULL: kein Webspace, -1: unbegrenzt) no SSI (Server-Side Includes) erlaubt (0: nein, 1: ja) no PHP erlaubt (0: nein, 1: suPHP, 2: FastCGI, 3: mod_php) no CGI erlaubt (0: nein, 1: ja) no SSL (HTTPS) erlaubt (0: nein, 1: ja, 2: ja (mit Zertifikatsverwaltung)) no Anzahl Cron-Jobs (-1: unbegrenzt) no Anzahl installierbarer Web-Anwendungen (-1: unbegrenzt) no Anzahl FTP-Zugänge (-1: unbegrenzt) no Shell-Zugriff erlaubt (0: nein, 1: scponly/sftp, 2: bash) no Datenbanken (-1: unbegrenzt) no Subdomains (-1: unbegrenzt) no Externe Domains (-1: unbegrenzt) no Anzahl Postfächer (-1: unbegrenzt) no Anzahl E-Mail-Adressen (-1: unbegrenzt) no E-Mail-Speicherplatz (-1: unbegrenzt) no Enthaltener IP-Traffic (-1: unbegrenzt) yes optionaler Kommentar yes zugeordnete Domains yes Datenbanken SOAP-Referenz Wird kein entsprechender Vertrag gefunden (weil er nicht existiert, oder der SOAP-Benutzer nicht für diesen berechtigt ist), wird ein Ausnahmefehler erzeugt. HostingSubscriptionDomain Field name Type string RegExp - NULL? Description no Domain-Name NULL? Description no Datenbank-Typ (MySQL) no Name des Servers, auf dem die Datenbank eingerichtet ist no Datenbank-Name no Datenbank-Login HostingDatabase Field type server Type string string RegExp - name login string string - HostingSubscriptionEdit HostingSubscriptionEdit — Hosting-Vertrag bearbeiten Beschreibung Mit dieser Funktion können die Eigenschaften eines bestehenden Hosting-Vertrags bearbeitet werden. Es werden nur die Werte geändert, die mit dem SOAP-Request übermittelt werden. Wenn der bearbeitete Vertrag nicht auf einem Reseller-Vertrag basiert und Ressourcen wie Webspace, E-Mail oder Datenbanken erstmals hinzugefügt werden, dann müssen Sie zusätzlich den Namen des Server für die jeweiligen Dienste angeben. Aufruf Field Type auth AuthData subscriptionname string RegExp NULL? Description no Authentifizierungsdaten no Vertragsname plan maxusers string integer ^[a-z][a-z0-9_-] {0,63}$ ^.{1,50}$ ^-?\d{1,8}$ webspace integer ^-?\d{1,8}$ yes ssi php integer integer ^[01]$ ^[01]$ yes yes cgi ssl cronjobs integer integer integer ^[012]$ ^[012]$ ^-?\d{1,8}$ yes yes yes yes yes Name des Webhosting-Angebots ggf. abweichende Anzahl an Benutzern (-1: unbegrenzt) ggf. abweichender Webspace (MB) (-1: unbegrenzt) ggf. abweichende Server-Side Includes (SSI) ggf. abweichende PHP-Erlaubnis (0: kein PHP, 1: suPHP, 2: FastCGI, 3: mod_php) ggf. abweichende CGI-Erlaubnis ggf. abweichende SSL-Erlaubnis (HTTPS) ggf. abweichende Anzahl Cron-Jobs (-1: unbegrenzt) 113 Programmierschnittstellen (APIs) Field apps Type integer RegExp ^-?\d{1,8}$ ftpaccounts shellaccess integer integer ^-?\d{1,8}$ ^[012]$ databases integer ^-?\d{1,8}$ dbserver string ^[\w.-]{1,255}$ subdomains integer ^-?\d{1,8}$ extdomains integer ^-?\d{1,8}$ mailboxes integer ^-?\d{1,8}$ mailaddrs integer ^-?\d{1,8}$ mailquota integer ^-?\d{1,8}$ traffic webstats integer integer ^-?\d{1,8}$ ^[012]$ comment string ^.{1,100}$ NULL? Description yes ggf. abweichende Anzahl installierbarer Apps (-1: unbegrenzt) yes ggf. abweichende FTP-Zugänge (-1: unbegrenzt) yes ggf. abweichender Shell-Zugriff (0: nein, 1: scponly/sftp, 2: Ja (bash)) yes ggf. abweichende Datenbank-Anzahl (-1: unbegrenzt) yes ggf. Name des Servers, auf dem Datenbanken eingerichtet werden sollen yes ggf. abweichende enthaltene Subdomains (-1: unbegrenzt) yes ggf. abweichende Anzahl externer Domains (-1: unbegrenzt) yes ggf. abweichende Anzahl an E-Mail-Postfächern (-1: unbegrenzt) yes ggf. abweichende Anzahl an E-Mail-Adressen (-1: unbegrenzt) yes ggf. abweichender E-Mail-Speicherplatz (-1: unbegrenzt) yes ggf. abweichender IP-Traffic (-1: unbegrenzt) yes Webstatistik-Einstellung (0: keine Statistik, 1: Webalizer, 2: AWStats) yes optionaler Kommentar Type string RegExp - NULL? Description no Status („ok“) Antwort Field status HostingDomainAdd HostingDomainAdd — Neue Domain für Webhosting anlegen Beschreibung Mit dieser Funktion kann dem Webhosting-Vertrag eines Kunden eine weitere Domain zugeordnet werden. Rückgabewert ist die ID des neuen Datensatzes. Existiert bereits eine identische Domain im Vertrag, so wird deren ID zurückgegeben. Wird das Feld web auf NULL gesetzt, dann ist der Webspace für diese Domain deaktiviert. Für „normalen“ (aktivierten) Webspace muss das Feld web auf einen leeren String („“) oder auf ein beliebiges Verzeichnis (z.B. „/“) gesetzt werden. Aufruf Field 114 Type RegExp NULL? Description SOAP-Referenz Field auth subscription Type AuthData string RegExp NULL? Description no Authentifizierungsdaten no Name des Webhosting-Vertrags (siehe HostingSubscriptionAdd) no Domainname (inkl. TLD) domain string mail web integer string ^[a-z][a-z0-9_-] {1,63}$ ^[^+<>&%\s] {1,255}$ ^[01]$ ^.{1,255}$ dnstemplate string ^.{1,255}$ yes Type string string[] RegExp - NULL? Description no Datensatz-ID yes IP-Adressen, auf denen diese Domain konfiguriert ist yes yes Domain für E-Mail nutzbar? (0=nein, 1=ja) Webspace-Ziel (Verzeichnis, oder URL für Weiterleitung) ggf. Name des DNS-Templates, mit dem diese Domain auf eigenen Nameservern angelegt werden soll Antwort Field id webip Die Datensatz-ID ist kundenspezifisch verschlüsselt. HostingSubdomainAdd HostingSubdomainAdd — Neue Subdomain für Webhosting anlegen Beschreibung Mit dieser Funktion kann dem Webhosting-Vertrag eines Kunden eine weitere Subdomain zugeordnet werden. Rückgabewert ist die ID des neuen Datensatzes. Existiert bereits eine identische Subdomain im Vertrag, so wird deren ID zurückgegeben. Bevor eine Subdomain angelegt werden kann, muss eine entsprechende Domain bereits existieren. Wird das Feld web auf NULL gesetzt, dann ist der Webspace für diese Subdomain deaktiviert. Für „normalen“ (aktivierten) Webspace muss das Feld web auf einen leeren String („“) oder auf ein beliebiges Verzeichnis (z.B. „/“) gesetzt werden. Aufruf Field auth subscription Type AuthData string subdomain string mail web integer string RegExp ^[a-z][a-z0-9_-] {1,63}$ ^[^+<>&%\s] {1,100}$ ^[01]$ ^.{1,255}$ NULL? Description no Authentifizierungsdaten no Name des Webhosting-Vertrags (siehe HostingSubscriptionAdd) no vollständige Subdomain (inkl. TLD) yes yes Domain für E-Mail nutzbar? (0=nein, 1=ja) 115 Programmierschnittstellen (APIs) Field Type RegExp ipgroup string ^.{1,50}$ Type string string[] RegExp - NULL? Description Webspace-Ziel (Verzeichnis, oder URL für Weiterleitung) yes optional: Name der IP-Gruppe (für Webspace) (ab v1.8.1) Antwort Field id webip NULL? Description no Datensatz-ID yes IP-Adressen, auf denen diese Domain konfiguriert ist Die Datensatz-ID ist kundenspezifisch verschlüsselt. HostingDatabaseAdd HostingDatabaseAdd — Webhosting-Vertrag eine weitere (bestehende) Datenbank zuordnen Beschreibung Mit dieser Funktion kann dem Webhosting-Vertrag eines Kunden eine Datenbank zugeordnet werden. Rückgabewert ist die ID des neuen Datensatzes. Existiert bereits eine identische Datenbank im Vertrag, so wird deren ID zurückgegeben. Nur wenn der Parameter create auf 1 gesetzt ist, wird die Datenbank auch angelegt - in diesem Fall ist das Feld password obligatorisch. Ist create=0 (Standard), dann wird die Datenbank nur in LiveConfig aufgenommen, aber nicht auf dem Datenbank-Server erzeugt - das wird dann benötigt, wenn die Datenbank-Accounts anderweitig angelegt werden/wurden. Das Passwort (falls angegeben) darf maximal 40 Zeichen lang sein. Als Ausnahme darf ein 41 Zeichen langes, vor-gehashtes MySQL-Password (beginnt mit „*“) übergeben werden. Falls das Passwort genau 22 Zeichen lang ist und mit „MYSQL:“ beginnt, dann wird dieses als MySQL-4.xPasswort-Hash interpretiert und ebenfalls unverändert übernommen. Aufruf Field auth subscription Type AuthData string name login comment extern string string string integer 116 RegExp ^[a-z][a-z0-9_-] {1,63}$ ^[\w_-]{1,64}$ ^[\w_-]{1,16}$ ^.{0,255}$ ^[012]$ NULL? Description no Authentifizierungsdaten no Name des Webhosting-Vertrags (siehe HostingSubscriptionAdd) no Datenbankname no Datenbank-Login yes Beschreibung (optional) yes Datenbank extern erreichbar (0=nein (Standard), 1=ja, 2=nur mit SSL) SOAP-Referenz Field create password Type integer string RegExp ^[01]$ ^.{0,41}$ NULL? Description yes Datenbank erzeugen? (0=nein (Standard), 1=ja) yes Passwort (Pflichtfeld, wenn create!=0) Type string RegExp - NULL? Description no Datensatz-ID Antwort Field id Die Datensatz-ID ist kundenspezifisch verschlüsselt. HostingMailboxAdd HostingMailboxAdd — E-Mail-Postfach einrichten Beschreibung Diese Funktion ermöglicht das Anlegen neuer E-Mail-Adressen bzw. -Postfächer. Das Passwort kann optional als gesalzener MD5-Passwort-Hash (z.B. $1$abcdefgh$abcdefghijklmnopqrstuv) übergeben werden; dieses wird dann unverändert in die PasswortDatenbank übernommen (wichtig für den Import von Postfach-Passwörtern aus anderen Control Panels). In diesem Fall sollte aber der Authentifikations-Mechanismus CRAM-MD5 auf dem Server deaktiviert werden, da es sonst zu Problemen bei der Anmeldung kommen kann. Aufruf Field auth subscription Type AuthData string RegExp NULL? Description no Authentifizierungsdaten no Name des Webhosting-Vertrags (siehe HostingSubscriptionAdd) no Name der E-Mail-Adresse (links vom „@“) no vollständiger Domainname (rechts vom „@“) name domain string string alias string[] ^[a-z][a-z0-9_-] {1,63}$ ^[\w_]{1,64}$ ^[^+<>&%\s] {1,255}$ ^[\w_]{1,64}$ mailbox password integer string ^[01]$ ^.{5,40}$ no yes weblogin quota integer integer ^[01]?$ ^\d{1,6}$ yes yes forward autoresponder autosubject string[] integer string EMAIL(128) ^[01]$ ^.{5,80}$ yes no yes automessage string ^.{5,4096}$ yes yes Array mit Alias-Namen für diese Adresse (max. 10) 0=nur Weiterleitung, 1=POP3/IMAP-Postfach Passwort (bei POP3/IMAP ein Pflichtfeld, sonst optional) Anmeldung an LiveConfig erlaubt? (1=ja) maximale Postfachgröße in MB (Pflichtfeld bei POP3/IMAP-Postfach) Array mit E-Mail-Adressen für Weiterleitungen Autoresponder aktiviert? (0=nein, 1=ja) Betreff für den Autoresponder (Pflichtfeld wenn der Autoresponder aktiviert ist) 117 Programmierschnittstellen (APIs) Field Type RegExp greylisting integer ^[01]?$ spamfilter integer ^[01]?$ spamwarn integer spamreject integer ^(\\d+([.,]\\d +)?)?$ ^(\\d+([.,]\\d +)?)?$ NULL? Description Text für den Autoresponder (Pflichtfeld wenn der Autoresponder aktiviert ist) yes Greylisting aktiviert? (nur wenn Greylisting unterstützt wird!) (1=ja) yes Spam-Analyse aktiviert? (nur wenn Spamfilter unterstützt wird!) (1=ja) yes Schwellwert für Spam-Warnung (nur wenn Spamfilter aktiviert ist) yes Schwellwert für Spam-Ablehnung (nur wenn Spamfilter aktiviert ist) Antwort Field id folder Type string string RegExp - NULL? Description no Datensatz-ID yes Verzeichnis, in dem das POP3/IMAP-Postfach angelegt wurde (das Postfach liegt dann i.d.R. unter /var/mail/<Vertrag>/<Verzeichnis>/) Die Datensatz-ID ist kundenspezifisch verschlüsselt. HostingMailboxEdit HostingMailboxEdit — E-Mail-Postfach bearbeiten Beschreibung Mit dieser Funktion können Einstellungen eines E-Mail-Postfachs bearbeitet werden. Das Passwort kann optional als gesalzener MD5-Passwort-Hash (z.B. $1$abcdefgh$abcdefghijklmnopqrstuv) übergeben werden; dieses wird dann unverändert in die PasswortDatenbank übernommen (wichtig für den Import von Postfach-Passwörtern aus anderen Control Panels). In diesem Fall sollte aber der Authentifikations-Mechanismus CRAM-MD5 auf dem Server deaktiviert werden, da es sonst zu Problemen bei der Anmeldung kommen kann. Aufruf Field auth address mailbox password Type AuthData string integer string RegExp EMAIL(128) ^[01]$ ^.{5,40}$ NULL? no no yes yes weblogin quota integer integer ^[01]?$ ^\d{1,6}$ yes yes 118 Description Authentifizierungsdaten zu bearbeitende E-Mail-Adresse 0=nur Weiterleitung, 1=POP3/IMAP-Postfach Passwort (bei POP3/IMAP ein Pflichtfeld, sonst optional) Anmeldung an LiveConfig erlaubt? (1=ja) SOAP-Referenz Field Type RegExp autoresponder autosubject integer string ^[01]$ ^.{5,80}$ automessage string ^.{5,4096}$ greylisting integer ^[01]?$ spamfilter integer ^[01]?$ spamwarn integer spamreject integer ^(\\d+([.,]\\d +)?)?$ ^(\\d+([.,]\\d +)?)?$ NULL? Description maximale Postfachgröße in MB (Pflichtfeld bei POP3/IMAP-Postfach) yes Autoresponder aktiviert? (0=nein, 1=ja) yes Betreff für den Autoresponder (Pflichtfeld wenn der Autoresponder aktiviert ist) yes Text für den Autoresponder (Pflichtfeld wenn der Autoresponder aktiviert ist) yes Greylisting aktiviert? (nur wenn Greylisting unterstützt wird!) (1=ja) yes Spam-Analyse aktiviert? (nur wenn Spamfilter unterstützt wird!) (1=ja) yes Schwellwert für Spam-Warnung (nur wenn Spamfilter aktiviert ist) yes Schwellwert für Spam-Ablehnung (nur wenn Spamfilter aktiviert ist) RegExp - NULL? Description no Status („ok“) Antwort Field status Type string HostingCronAdd HostingCronAdd — Neuen Cron-Job erstellen Beschreibung Mit dieser Funktion kann zu einem Webhosting-Vertrag ein neuer Cron-Job eingerichtet werden. Aufruf Field auth subscription active minute hour day month weekday command Type AuthData string integer string string string string string string RegExp ^.{1,64}$ ^[01]$ ^.{1,50}$ ^.{1,50}$ ^.{1,50}$ ^.{1,50}$ ^.{1,50}$ ^.{1,250}$ NULL? no no no no no no no no no Description Authentifizierungsdaten Name des Webhosting-Vertrags Cron-Job aktiv? 0=nein, 1=ja Minuten-Angabe (z.B. */5 oder 10,20,30) Stunden-Angabe Tages-Angabe Monats-Angabe Wochentag-Angabe auszuführender Befehl Type string RegExp - NULL? Description no Status Antwort Field status Ausführungs-Status (ok) 119 Programmierschnittstellen (APIs) HostingPasswordUserAdd HostingPasswordUserAdd — Neuen Benutzer für Verzeichnis-Passwortschutz anlegen Beschreibung Mit dieser Funktion kann ein neuer Benutzer (mit Passwort) für einen Passwort-Verzeichnisschutz angelegt werden. Die Groß-/Kleinschreibung beim Login wird berücksichtigt (Test ist also ein anderer Benutzer als test). Wenn das Passwort mit $1$ beginnt und 34 Zeichen lang ist, wird es als gesalzener MD5-Hash interpretiert - in allen anderen Fällen wird es als Klartext-Passwort interpretiert und automatisch in einen Hash umgewandelt. Aufruf Field auth subscription login password Type AuthData string string string RegExp ^.{1,64}$ ^.{1,40}$ ^.{1,64}$ NULL? no no no no Description Authentifizierungsdaten Name des Webhosting-Vertrags Benutzername Passwort Type string RegExp - NULL? Description no Status Antwort Field status Ausführungs-Status (ok) HostingPasswordPathAdd HostingPasswordPathAdd — Passwort-Schutz für Webspace-Verzeichnis einrichten Beschreibung Diese Funktion erlaubt das Einrichten eines Passwort-Schutzes (HTTP Basic Auth) für ein Webspace-Verzeichnis. Um mehreren verschiedenen Benutzern den Zugriff auf ein Verzeichnis zu erlauben, kann die Funktion mehrfach (mit dem jeweils hinzuzufügendem Benutzernamen) aufgerufen werden. Die Benutzer und Passwörter werden über die Funktion HostingPasswordUserAdd verwaltet. Aufruf Field auth subscription 120 Type AuthData string RegExp ^.{1,64}$ NULL? Description no Authentifizierungsdaten no Name des Webhosting-Vertrags SOAP-Referenz Field path Type string RegExp ^.{1,255}$ title login string string ^.{1,100}$ ^.{1,40}$ NULL? Description no Pfad (muss mit /htdocs/ oder /apps/ beginnen) no Beschreibung/Titel der Passwortabfrage no erlaubter Benutzername; *=alle Benutzer Type string RegExp - NULL? Description no Status Antwort Field status Ausführungs-Status (ok) HostingFtpAdd HostingFtpAdd — zusätzlichen FTP-Account anlegen Beschreibung Mit dieser Funktion kann für einen bestehenden Webspace-Vertrag ein weiterer (virtueller) FTPAccount erstellt werden. Aufruf Field auth subscription login Type AuthData string string RegExp password path string string ^.{1,64}$ ^[a-z][a-z0-9_-] {3,63}[a-z0-9]$ ^.{5,40}$ ^.{0,200}$ Type string RegExp - NULL? no no no Description Authentifizierungsdaten Name des Webhosting-Vertrags FTP-Benutzername no no FTP-Passwort Startverzeichnis Antwort Field status NULL? Description no Status Ausführungs-Status (ok) UserAdd UserAdd — Neuen Benutzer anlegen Beschreibung Mit dieser Funktion kann ein neuer Benutzer für einen Kunden angelegt werden. Rückgabewert ist die ID des neuen Datensatzes. Existiert bereits ein identischer Benutzer, so wird dessen ID zurückgegeben. 121 Programmierschnittstellen (APIs) Der Benutzername muss systemweit eindeutig sein. Wenn das Passwort mit $1$ beginnt, dann geht LiveConfig davon aus dass es sich bereits um einen MD5-Passwort-Hash und nicht um ein Klartext-Passwort handelt. Aufruf Field auth customer Type AuthData string RegExp contact login password string string string ^[\w.-]{12}$ ^[\w.-_]{2,50}$ ^\.{2,30}$ NULL? Description no Authentifizierungsdaten no ID des Kunden, dem der Benutzer zugewiesen wird no Kontakt-ID des Benutzers no Benutzername no Passwort Type string RegExp - NULL? Description no Datensatz-ID ^[\w.-]{12}$ Antwort Field id Die Datensatz-ID ist kundenspezifisch verschlüsselt. UserGet UserGet — Benutzerdaten auslesen Beschreibung Diese Funktion liefert Daten zu einem oder mehreren LiveConfig-Benutzern zurück. Wird das Feld login leer gelassen, werden die Daten aller vorhandenen Benutzer zurückgegeben, ansonsten nur die mit dem angegebenen Benutzernamen. Um alle Benutzer eines bestimmten Kunden zu erhalten, muss dessen Kundennummer im Feld cid übergeben werden. Aufruf Field auth cid login Type AuthData long string RegExp ^\d{1,18}$ ^[\w.-_]{2,50}$ NULL? no yes yes Description Authentifizierungsdaten Kundennummer Benutzername Antwort Field users Type RegExp UserDetails[] - NULL? Description yes Array mit Kundendatensätzen Die Benutzerdaten sind wie folgt aufgebaut: Field login 122 Type string RegExp - NULL? Description no Benutzername (LiveConfig-Login) SOAP-Referenz Field locked contact Type integer string RegExp - NULL? Description no Status (0: aktiv, 1: gesperrt) no Kontakt-ID des Benutzers SessionCheck SessionCheck — Session-ID prüfen Beschreibung Diese Funktion wird für die IFRAME API benötigt, um die Gültigkeit der übermittelten Session-ID zu prüfen. So kann sicher gestellt werden, dass der angegebene Benutzer auch tatsächlich noch an LiveConfig angemeldet ist; außerdem werden bei dieser Gelegenheit gleich noch weitere Informationen zum angemeldeten Benutzer zurückgegeben. Aufruf Field auth sid ua Type AuthData string string RegExp Field status language Type string string RegExp - login name string string - cid subscriptions long string[] - ^[\w.-]{24}$ ^.{0,200}$ NULL? no no no Description Authentifizierungsdaten Session-ID User-Agent-String des Kunden Antwort NULL? Description no Status („ok“) no Aktuell eingestellte Sprache des Benutzers (z.B. de oder en) no Login-Name (z.B. a12345) no Name des Benutzers (z.B. Manfred Mustermann) no Kundennummer (z.B. 123) yes Array mit Namen der zugeordneten Verträge, auf die der Benutzer Zugriff hat 8.2. Lua API Lua ist eine einfache, aber dennoch sehr mächtige Scriptsprache (siehe http://www.lua.org). Die meisten Funktionen, in denen LiveConfig mit anderen Programmen kommuniziert oder Konfigurationsdateien erzeugt, sind in Lua programmiert. Alle Lua-Programme liegen LiveConfig im Quelltext bei, somit sind Anpassungen an spezielle Anforderungen relativ einfach. 8.2.1. Organisation und Funktionsweise Die Lua-Programme liegen im Verzeichnis <library_path>/lua/ (der library_path kann über die LiveConfig-Konfigurationsdatei verändert werden); üblicherweise ist das /usr/lib/ liveconfig/lua/. Sowohl beim LiveConfig Server als auch beim LiveConfig Client werden alle 123 Programmierschnittstellen (APIs) Lua-Programme installiert (der Server enthält ja praktisch einen integrierten LiveConfig-Client zur Steuerung des lokalen Systems). Beim Start von LiveConfig werden mehrere Threads für die Systemverwaltung gestartet; jeder davon enthält eine eigene Lua-Umgebung. In jeder Lua-Umgebung werden zuerst die internen Bibliotheksfunktionen registriert (z.B. LC.expect, LC.sys, u.v.m.), und anschließend das Programm liveconfig.lua ausgeführt. Dieses lädt alle restlichen, in Lua programmierten Module nach (z.B. LC.web, LC.dns, etc.). Außerdem prüft dieses, ob eine Datei namens custom.lua existiert (s.u.). Falls ja, wird dieses ebenfalls geladen und ausgeführt. Tritt bei diesem Ladevorgang irgendwo ein Fehler auf, dann bricht LiveConfig an dieser Stelle mit einer Fehlermeldung ab. Außerdem dürfen auch keine Bildschirmausgaben (print()) während der Initialisierung erfolgen. Platz für Änderungen/Erweiterungen: custom.lua Eigene Erweiterungen, die beim Start der Lua-Umgebung berücksichtigt werden sollen, sollten idealerweise in die Datei custom.lua aufgenommen werden. Standardmäßig existiert diese Datei nicht; gleichzeitig wird diese bei eventuellen Updates/Upgrades von LiveConfig auch nicht angerührt. Bei Updates von LiveConfig ist es grundsätzlich möglich (und sogar recht wahrscheinlich), dass auch die mitgelieferten Lua-Programme aktualisiert werden. Sollten Sie daran eventuelle Änderungen vorgenommen haben, gehen diese dabei verloren. Daher wird empfohlen, dass Sie Ihre eigenen Modifikationen ausschließlich über die Datei custom.lua verwalten. Sollten Sie Änderungen an den von LiveConfig mitgelieferten Lua-Programmen vornehmen, kann selbstverständlich keine Gewährleistung für deren Korrektheit übernommen werden. Prüfen Sie eigene Funktionen bitte entsprechend sorgfältig, bevor Sie diese produktiv einsetzen! Nach Änderungen an der Datei custom.lua oder irgend einem anderen Lua-Script muss LiveConfig neu gestartet werden, damit die Änderungen wirksam werden. 8.2.2. Testen eigener Programme Für das Testen eigener Lua-Programme dient lclua, welches ebenfalls sowohl dem LiveConfig-Client als auch dem Server beiliegt. Dieses enthält einen Lua-Interpreter, und stellt gleichzeitig alle Bibliotheks-Funktionen von LiveConfig zur Verfügung. 8.2.3. Programmbeispiel Wenn Sie beispielsweise die Erkennung der Linux-Distribution anpassen möchten, könnte die Datei custom.lua so aussehen: 124 Lua-Referenz -- Namespace "MY" einführen: MY = { } -- Original-Funktion "LC.distribution.detect" merken MY.orig_detect = LC.distribution.detect -- Funktion zur Betriebssystem-Erkennung umbiegen: function LC.distribution.detect() if (LC.fs.is_file("/etc/exampLinux")) then -- wir haben ein "ExampleLinux"... LC.distribution.name = "ExampLinux" LC.distribution.codename = "example" LC.distribution.family = "Debian" LC.distribution.version = "1.0" LC.distribution.description = "Example Linux 1.0 (example)" return true else -- Original-Funktion zur Betriebssystem-Erkennung aufrufen: return MY.orig_detect() end end 8.2.4. Lua-Referenz In der nachfolgenden Referenz sind alle Lua-Module beschrieben. LiveConfig verwendet für alle bereitgestellten Module und Bibliotheksfunktionen den Namespace-Präfix LC. LC.crypt LC.crypt — Verschlüsselungsfunktionen Beschreibung Mit LC.crypt stehen verschiedene Verschlüsselungsfunktionen zur Verfügung. • LC.crypt.cram_md5 LC.crypt.cram_md5(input) Mit dieser Funktion kann der in input übergebene Wert für einen CRAM-MD5-Hashvergleich vorberechnet werden. Der Haupteinsatzbereich ist für POP3/IMAP-Mailserver, bei denen eine Anmeldung mit Klartext-Verfahren (LOGIN/PLAIN) und dem etwas sichererem CRAM-MD5-Verfahren möglich sein soll, ohne die Passwörter dabei im Klartext auf dem Server speichern zu müssen. • LC.crypt.crypt LC.crypt.crypt(input) 125 Programmierschnittstellen (APIs) Diese Funktion erzeugt mittels DES-Algorithmus einen crypt()-kompatiblen Hash des übergebenen Parameters. Dieses Format kann z.B. in typischen Passwort-Dateien (/etc/passwd) verwendet werden. • LC.crypt.crypt_md5 LC.crypt.crypt_md5(input) Diese Funktion erzeugt ein 8 Zeichen langes „Salt“ und berechnet aus diesem sowie dem übergebenen Passwort einen MD5-Hash. Dieses Format kann z.B. in moderneren Passwort-Dateien verwendet werden. Beispiel pw = LC.crypt.cram_md5("test") -- Ergebnis: e02d374fde0dc75a17a557039a3a5338c7743304777dccd376f332bee68d2cf6 pw = LC.crypt.crypt("test") -- Ergebnis: z.B. SALwWlL5CAfNE pw = LC.crypt.crypt_md5("test") -- Ergebnis: z.B. $1$u5OJQYF3$jG4Q5xqQd1tE10d27XgC40 LC.exec LC.exec — Ausführung von Programmen Beschreibung Mit LC.exec können Programme ähnlich wie mit os.execute ausgeführt werden. Jedoch liefert LC.exec die Meldungen der Standardausgabe (STDOUT), Fehlermeldungen (STDERR) sowie den Exit-Code des ausgeführten Programms zurück. Gleichzeitig werden diese Daten im LiveConfig-Log protokolliert. • LC.exec LC.exec(cmd) Führt den Befehl cmd aus und liefert den Exitcode, die Standardausgaben und die Fehlermeldungen des ausgeführten Programms zurück. Beispiel local ex, stdout, stderr = LC.exec("service apache2 restart") 126 Lua-Referenz LC.expect LC.expect — Aufruf und „Fernsteuerung“ von Programmen Beschreibung Mit LC.expect können Programme aufgerufen und „ferngesteuert“ werden. Mit LC.expect wird die Ausgabe eines aufgerufenen Programmes ausgelesen, und anhand von bestimmten Mustern Aktionen ausgeführt. Ein häufiger Anwendungsfall ist der Aufruf eines Programmes zum Ändern von Passwörtern: es muss auf eine bestimmte Eingabeaufforderung gewartet werden (z.B. „Enter new password:“), und anschließend das neue Passwort gesendet werden. LC.expect arbeitet objekt- und eventorientiert. Zuerst wird ein LC.expect-Objekt erstellt, dann mit spawn() das gewünschte Programm ausgeführt, und mit expect() und send() auf Ausgaben gewartet bzw. Daten gesendet. • LC.expect.new LC.expect.new() Erzeugt ein neues LC.expect-Objekt und liefert dieses zurück. • LC.expect:expect LC.expect:log(list, timeout) Wartet auf die in list angegebenen Muster, bricht nach maximal timeout Sekunden ab. Die Liste ist ein Array mit aus match- und action-Einträgen bestehenden Tabellen. In match ist jeweils ein regulärer Ausdruck angegeben, auf den die empfangene Programmausgabe überprüft wird, und action die Funktion, die bei einem Treffer jeweils aufgerufen wird. Die Handler-Funktion (action) bekommt als Parameter ein Array mit allen im regulären Ausdruck erkannten Mustern. Der erste Eintrag enthält das vollständige erkannte Muster, alle weiteren Einträge eventuelle Suchausdrücke. • LC.expect:log LC.expect:log(boolean) Aktiviert/deaktiviert die ausführliche Protokollierung. • LC.expect:logfile LC.expect:logfile(filename) 127 Programmierschnittstellen (APIs) Ausgabe der Protokollierung in der angegebenen Datei. • LC.expect:send LC.expect:send(string) Sendet die in string übergebenen Daten an das ausgeführte Programm. • LC.expect:spawn LC.expect:spawn(program, args) Startet das Programm program mit den in dem Array args angegebenen Optionen. Beispiel e = LC.expect.new() successful = false e:log(true) e:logfile("expect_test.log") -- Passwort für Benutzer 'dummy' ändern: e:spawn("/usr/bin/passwd", { "dummy" } ) function send_password(m) -- neues Passwort senden (mit '\n' am Ende!) e:send("PaSsWoRd\n") end function pwd_success(m) successful = true end list = { { match action { match action } = = = = "new UNIX password:", send_password }, "updated successfully", pwd_success } e:expect(list, 5) if (successful) then print("Successful.") else print("NOT successful.") end LC.fs LC.fs — Funktionen zur Verwaltung von Dateien und Verzeichnissen 128 Lua-Referenz Beschreibung Die Bibliothek LC.fs stellt Funktionen zur Verwaltung von Dateien und Verzeichnissen bereit. • LC.fs.copy LC.fs.copy(sourcefile, destfile) Kopiert die Datei sourcefile nach destfile. Die Dateieigenschaften (Besitzer, Berechtigungen und Änderungs-/Zugriffsdatum) werden dabei mit kopiert. • LC.fs.filecount LC.fs.filecount(name) Gibt die Anzahl der Dateien und Verzeichnisse (außer . und ..) im Verzeichnis name zurück. • LC.fs.is_dir LC.fs.is_dir(name) Gibt true zurück, wenn name ein Verzeichnis ist. • LC.fs.is_file LC.fs.is_file(name) Gibt true zurück, wenn name eine reguläre Datei ist. • LC.fs.mkdir LC.fs.mkdir(name) Erzeugt ein neues Verzeichnis. • LC.fs.mkdir_rec LC.fs.mkdir_rec(name) Erzeugt ein neues Verzeichnis. Falls ein oder mehrere übergeordnete Verzeichnisse noch nicht existieren, werden diese ebenfalls erstellt. • LC.fs.rename LC.fs.rename(oldname, newname) Benennt eine Datei oder ein Verzeichnis von oldname nach newname um. 129 Programmierschnittstellen (APIs) • LC.fs.setperm LC.fs.setperm(name, mode, user, group) Ändert die Berechtigungen für die in name angebenene Datei/Verzeichnis. mode ist ein als String angegebener Oktal-Wert (z.B. 0755) für die Berechtigungsmaske, und user bzw. group die jeweiligen Dateibesitzer. • LC.fs.setUserQuota LC.fs.setUserQuota(user, path, limit) Setzt das Benutzer-Quota für den Benutzer user auf dem Gerät auf welchem der Pfad path gemounted ist, auf das (harte) Limit von limit Kilobytes. Beispiel: Limit von 200 MB (= 204800 KB) auf dem Pfad /var/www/v12007 für den Benutzer v12007: LC.fs.setUserQuota("v12007", "/var/www/v12007", 204800)) • LC.fs.setGroupQuota LC.fs.setGroupQuota(group, path, limit) Setzt das Gruppen-Quota für die Gruppe group auf dem Gerät auf welchem der Pfad path gemounted ist, auf das (harte) Limit von limit Kilobytes. • LC.fs.getUserQuota LC.fs.getUserQuota(user, path) Liefert das Benutzer-Quota für den Benutzer user auf dem Gerät auf welchem der Pfad path gemounted ist, zurück. Das Ergebnis wird als Tabelle mit folgenden Feldern zurückgegeben: kb_soft, kb_hard, kb_used: Soft- bzw. Hard-Limit und Anzahl des belegten Speichers in Kilobyte (1024 Byte) n_soft, n_hard, n_used: Soft- bzw. Hard-Limit und Anzahl der belegten Dateisystem-Inodes (praktisch der Anzahl der Dateien & Verzeichnisse) • LC.fs.getGroupQuota LC.fs.getGroupQuota(group, path) Liefert das Gruppen-Quota für die Gruppe group auf dem Gerät auf welchem der Pfad path gemounted ist, zurück. Die Ergebnistabelle ist analog zu LC.fs.getUserQuota. 130 Lua-Referenz LC.log LC.log — Logging-Funktion Beschreibung Mit LC.log können Log-Meldungen erzeugt werden, die im LiveConfig-Log enthalten sind. • LC.log.print LC.log.print(level, message [, ...]) Protokolliert die Meldung message mit dem Log-Level level. Es können mehrere Parameter übergeben werden. Gültige Konstanten für den Log-Level sind: LC.log.DEBUG, LC.log.INFO, LC.log.NOTICE, LC.log.WARNING, LC.log.ERR, LC.log.CRIT, LC.log.ALERT und LC.log.EMERG. Beispiel LC.log.print(LC.log.INFO, "Example value: ", value) LC.mutex LC.mutex — Mutex-Funktionen Beschreibung Mit LC.mutex können sogenannte „Mutexe“ zur Synchronisation von mehreren Lua-Threads verwendet werden. • LC.mutex.debug LC.mutex.debug(bool) Aktiviert oder deaktiviert das Debugging für Mutex-Operationen. Bei aktiviertem Debugging wird jeder lock- bzw. unlock-Aufruf über die Log-Funktion (LC.log) protokolliert. • LC.mutex.lock LC.mutex.lock(name) Fordert eine Sperre für den in name angegebenen Mutex an. Existiert noch kein solcher Mutex, wird er automatisch erzeugt. 131 Programmierschnittstellen (APIs) • LC.mutex.unlock LC.mutex.unlock(name) Gibt die Sperre für den in name angegebenen Mutex wieder frei. Die Mutex-Sperre muss vorher erfolgreich angefordert worden sein, ansonsten kann ein nicht definierbares Fehlverhalten auftreten. LC.sys LC.sys — Systemfunktionen Beschreibung Die Bibliothek LC.sys stellt Funktionen zum Zugriff auf einige Systeminformationen bereit. • LC.sys.get_fqdn LC.sys.get_fqdn() Liefert den vollständigen (qualifizierten) Hostnamen (inkl. Domain) zurück. Das Ergebnis entspricht dem Befehl hostname --fqdn. • LC.sys.get_machine LC.sys.get_machine() Liefert den Hardwarenamen zurück (z.B. „x86_64“). Das Ergebnis entspricht dem Befehl uname -m. • LC.sys.get_name LC.sys.get_name() Liefert den Kernelnamen zurück (z.B. „Linux“). Das Ergebnis entspricht dem Befehl uname -k. • LC.sys.get_node LC.sys.get_node() Liefert den Hostnamen (ohne Domain) zurück. Das Ergebnis entspricht dem Befehl uname -n. • LC.sys.get_release LC.sys.get_release() 132 Lua-Referenz Liefert die Kernel-Release zurück (z.B. „2.6.18-6-xen-amd64“). Das Ergebnis entspricht dem Befehl uname -r. • LC.sys.get_version LC.sys.get_version() Liefert die Kernel-Version zurück (z.B. „#1 SMP Sun Feb 21 00:50:59 UTC 2010“). Das Ergebnis entspricht dem Befehl uname -v. • LC.sys.group_exists LC.sys.group_exists(group_name) Prüft, ob eine Gruppe mit dem angegebenen Namen existiert. Die Prüfung wird mittels getgrnam() ausgeführt, berücksichtigt üblicherweise also auch NIS und LDAP. Wenn die Gruppe existiert, wird deren Group-ID zurückgegeben, ansonsten false. • LC.sys.user_exists LC.sys.user_exists(user_name) Prüft, ob ein Benutzer mit dem angegebenen Namen existiert. Die Prüfung wird mittels getpwnam() ausgeführt, berücksichtigt üblicherweise also auch NIS und LDAP. Wenn der Benutzer existiert, wird dessen User-ID zurückgegeben, ansonsten false. LC.timeout LC.timeout — Timer Beschreibung Die Bibliothek LC.timeout stellt derzeit nur die Funktion set zur Verfügung, mit der eine LuaFunktion verzögert aufgerufen werden kann. • LC.timeout.set LC.timeout.set(command, min, max) Es wird ein Timer zum Aufruf des in command übergebenen Befehls gesetzt. Der Aufruf erfolgt frühestens nach min Sekunden, spätestens nach max Sekunden. Ein erneuter Aufruf dieser 133 Programmierschnittstellen (APIs) Funktion mit dem selben command führt zum Zurücksetzen des internen Timers, außer der max-Wert wurde erreicht. Diese Funktion wird beispielsweise dann eingesetzt, wenn ein (idempotentes) Programm ausgeführt werden soll, mehrere Aufrufe kurz hintereinander aber vermieden werden sollen. Der in command übergebene Funktionsname muss in allen Lua-Instanzen im globalen Namespace verfügbar sein und kann keine Parameter entgegennehmen. Beispiel Mit dem nachfolgenden Beispiel wird die Funktion apache.reload frühestens 10 Sekunden nach dem letzten Aufruf von LC.timeout.set('apache.reload', ...) und spätestens 60 Sekunden nach dem ersten Aufruf ausgeführt: LC.timeout.set('apache.reload', 10, 60) 8.3. IFRAME API Mit Hilfe der IFRAME-API können Sie eigene Inhalte nahtlos in LiveConfig einbinden und somit dessen Funktionsumfang erweitern. Hierbei wird über ein <IFRAME>-Tag der gewünschte Inhalt von einer externen URL geladen und innerhalb der LiveConfig-Oberfläche angezeigt. Die aufgerufene Seite bekommt dabei Informationen über den angemeldeten Benutzer mit übermittelt. 8.3.1. Einrichtung „eigener Links“ Als Administrator (ab späteren LiveConfig-Versionen auch als Wiederverkäufer) können Sie die „eigenen Links“ direkt über die LiveConfig-Oberfläche unter Verwaltung # LiveConfig # Eigene Links konfigurieren. Diese Links werden jeweils allen Benutzern auf der selben Verwaltungsebene sowie allen eigenen Kunden (ersten Grades) angezeigt. 134 Einrichtung „eigener Links“ 8.3.1.1. Abschnitte verwalten Alle eigenen Links werden in Abschnitten verwaltet (das entspricht den Abschnitten im Navigationsmenü). Sie müssen also mindestens einen neuen Abschnitt anlegen, um diesen dann für die Links verwenden zu können. Die Optionen für einen Abschnitt sind: • Titel: der Titel für den neuen Abschnitt. • URI: URI-Pfad für diesen Abschnitt (nur Buchstaben, Ziffern, Punkt, Bindestrich und Unterstrich erlaubt). Die vollständige URL zu einem eigenen Link lautet immer: /liveconfig/ext/<Abschnitt-URI>/<Link-URI> 8.3.1.2. Links verwalten Die Optionen für eigene Links sind: • Abschnitt: Auswahl des Abschnitts, unter dem dieser Link erscheinen soll. • Titel: der Titel für den neuen Link (wird für den Navigationsbereich und als Seitentitel verwendet) • URI: URI-Pfad für diesen Link (nur Buchstaben, Ziffern, Punkt, Bindestrich und Unterstrich erlaubt). Die vollständige URL zu dieser Seite lautet dann: /liveconfig/ext/<AbschnittURI>/<Link-URI> 135 Programmierschnittstellen (APIs) • Zieladresse: die vollständige URL, welche im <IFRAME> geöffnet werden soll. Es sollte sich hier unbedingt um eine HTTPS-URL (SSL) handeln, da die meisten Browser sonst eine Fehlermeldung ausgeben, wenn man per HTTPS auf LiveConfig zugreift, eingebettete Inhalte aber unverschlüsselt geladen werden sollen. Die URL darf keine CGI-Parameter enthalten, da LiveConfig automatisch einige Parameter anfügt (siehe Abschnitt 8.3.2, „Programmierung eigener Inhalte“). • Passwort: das Passwort welches zur Erzeugung der Prüfsumme beim Aufruf der Zieladresse verwendet wird (siehe Abschnitt 8.3.2, „Programmierung eigener Inhalte“). 8.3.2. Programmierung eigener Inhalte Beim Aufruf eines eigenen Links erzeugt LiveConfig eine Seite mit einem <IFRAME>, in dem die hinterlegte Zieladresse geöffnet wird. Dieser IFRAME bekommt die restliche Bildschirmbreite (100%) und wird per JavaScript auf die Höhe der eingebetteten Seite vergrößert, so dass normalerweise keine Scrollbalken am Rand entstehen dürften (somit ist der Inhalt nahtlos integriert). Ein kleines Beispielscript sowie Hilfsfunktionen können Sie in der Wissensdatenbank herunterladen: http://www.liveconfig.com/de/kb/12. Bei der Gestaltung der einzubettenden Seiten sind praktisch keine Grenzen gesetzt. Es gibt nur wenige Dinge, die unbedingt beachtet werden müssen: • Verwendung von lc-api.js Damit die Größe des IFRAMEs automatisch angepasst werden kann ist der Aufruf einer bestimmten JavaScript-Funktion notwendig sobald der Inhalt vollständig geladen wurde. Die Datei lc-api.js enthält den dazu notwendigen Code. • CGI-Parameter sid, ts, chk und lang An die aufzurufende Zieladresse fügt LiveConfig automatisch noch die CGI-Parameter sid (Session-ID des LiveConfig-Benutzers), ts (aktueller Zeitstempel), chk (Prüfsumme) und lang (gewählte Sprache) an. Mit der Prüfsumme können Manipulationen in den CGI-Parametern schnell erkannt werden. Mit Hilfe der Session-ID kann über einen Aufruf der SOAP-Funktion SessionCheck() überprüft werden, ob der Benutzer derzeit noch in LiveConfig angemeldet ist zusätzlich werden weitere Informationen zurückgegeben, unter anderem der Login-Name, der vollständige Name und eine Liste aller zugewiesenen Verträge. Wenn Sie eigene Eingabeformulare innerhalb der eingebetteten Seite verwenden, reichen Sie diese CGI-Parameter am besten weiter, so dass Sie bei jedem Verarbeitungsschritt die Gültigkeit der Session prüfen können. Bei komplexeren Anwendungen können Sie auch eine eigene PHPSession für diesen Besucher erzeugen und die genannten CGI-Parameter als Session-Daten ablegen. 136 Programmierung eigener Inhalte Für ein vollständiges Beispiel werfen Sie bitte einen Blick auf example.php in dem o.g. Download-Paket. Wenn die angezeigten Daten optisch zu den restlichen LiveConfig-Seiten passen soll, finden Sie mit lc-api.css die passenden CSS-Stile. 137 138 Anhang A. Fehlerbehebung Dieser Abschnitt enthält Entscheidungsbäume, um eventuelle Probleme schnell zu identifizieren und eine Lösung zu finden. A.1. LiveConfig-Server A.1.1. Serverzugriff Wenn Sie die LiveConfig-Oberfläche nicht erreichen können, prüfen Sie bitte folgende Punkte: • Läuft der LiveConfig-Server-Prozess? • Rufen Sie liveconfig -s auf. Falls der LiveConfig-Server nicht läuft, erhalten Sie etwa folgende Ausgabe: $> liveconfig -s _ _ ___ __ _ (R) | | (_)_ _____ / __|___ _ _ / _(_)__ _ | |__| \ V / -_) (__/ _ \ ' \| _| / _` | |____|_|\_/\___|\___\___/_||_|_| |_\__, |_____________________________________ |___/ Can't get shared memory segment: No such file or directory Server not running? ______________________________________________________________________________ Copyright (c) 2009-2012 Keppler IT GmbH. http://www.liveconfig.com Falls der Prozess läuft, erhalten Sie dagegen etwa folgende Ausgabe: $> liveconfig -s _ _ ___ __ _ (R) | | (_)_ _____ / __|___ _ _ / _(_)__ _ | |__| \ V / -_) (__/ _ \ ' \| _| / _` | |____|_|\_/\___|\___\___/_||_|_| |_\__, |_____________________________________ |___/ Process ID: 31838 Uptime: 0 days, 00:35:19 Server generation: 1 Child generation: 1 ______________________________________________________________________________ Copyright (c) 2009-2012 Keppler IT GmbH. http://www.liveconfig.com • Starten Sie LiveConfig mit dem Befehl /etc/init.d/liveconfig start. Prüfen Sie anschließend noch einmal, ob LiveConfig nun läuft (s.o.). • Öffnen Sie die Logdatei mit dem Befehl less /var/lib/liveconfig/liveconfig.log. Normalerweise finden Sie am Ende der Datei Hinweise, warum 139 Fehlerbehebung LiveConfig nicht startet (mit dem Befehl 'G' (Großbuchstabe!) können Sie im Programm less ans Ende der Datei springen). • Wenn Sie die Fehlermeldung Server already running? Can't create shared memory segment: File exists erhalten und LiveConfig sicher nicht läuft, dann existiert vermutlich noch ein altes sog. „Shared-Memory-Segment“. Geben Sie den Befehl ipcs ein. Sie erhalten eine Liste aller derzeit registrierten Shared-Memory-Segmente, z.B.: ------ Shared Memory Segments -------key shmid owner perms 0x1700d389 31784961 root 640 bytes 296 nattch status 0 Findet sich in dieser Liste ein Eintrag mit dem Besitzer (owner) root, den Berechtigungen (perms) 0640 und (ganz wichtig) dem Wert nattch=0, dann ist das vermutlich ein „verlorenes“ Shared-Memory-Segment, welches manuell gelöscht werden muss (das kann eigentlich nur auftreten, wenn LiveConfig mit dem KILL-Signal beendet wird oder ein ernster Softwarefehler vorliegt). Zum Löschen des Shared-Memory-Segments suchen Sie den in der Spalte shmid angegebenen Schlüssel heraus, und führen ipcrm -m <shmid> aus. Prüfen Sie anschließend mittels ipcs, ob das Segment gelöscht wurde, und starten Sie LiveConfig neu (s.o.). • (nur Gentoo Linux): Wenn Sie die Fehlermeldung * WARNING: liveconfig has already been started erhalten und LiveConfig sicher nicht läuft, dann hat Gentoo eventuell noch einen falschen Prozessstatus gecached. Geben Sie den Befehl /etc/init.d/liveconfig zap ein, und starten Sie anschließend LiveConfig mit /etc/init.d/liveconfig start erneut. • Verwenden Sie das richtige Protokoll (HTTP bzw. HTTPS)? • Standardmäßig ist LiveConfig an Port 8443 über HTTPS (SSL-verschlüsselte Verbindung) erreichbar. Prüfen Sie, welchen Port Sie in Ihrer URL angegeben haben, und ob das Protokoll stimmt: 140 Port Protokoll 8443 HTTPS Beispiel LiveConfig-Client Port Protokoll Beispiel https://x.x.x.x:8443/ 8080 HTTP http://x.x.x.x:8080/ Standardmäßig öffnet LiveConfig nur den Port 8443 für HTTPS. Weitere Informationen hierzu siehe Abschnitt 2.4.3, „HTTP-Protokoll-Einstellungen“. • Verhindert eine Firewall den Zugriff auf LiveConfig? • Prüfen Sie, ob eventuell eine Firewall auf Ihrem PC, an Ihrem Internetzugang oder auf dem mit LiveConfig betriebenem Server einen Zugriff auf den gewünschten Port verbietet (s.o., in der Regel Port 8443). Ob ein Verbindungsaufbau grundsätzlich möglich ist, können Sie mit dem Programm telnet prüfen, das meistens installiert ist: telnet <Server-IP> <Port>, also zum Beispiel telnet 192.168.1.100 8443. Wenn keine Verbindung aufgebaut werden kann, erhalten Sie eine entsprechende Fehlermeldung. A.2. LiveConfig-Client Der LiveConfig-Server enthält auch einen integrierten Client (zur Verwaltung des lokalen Systems), daher prüfen Sie bitte auch die hier beschriebenen Lösungsansätze: • Problem: in der Logdatei erscheint die Fehlermeldung Can't get group quota for 'web###' (path '/var/www/web###'): No such file or directory Lösung: wahrscheinlich ist das Gruppen-Quota nicht aktiviert. Prüfen Sie, auf welchem Dateisystem sich die Webspace-Verzeichnisse befinden (z.B. mit df /var/www) und ob für dieses Dateisystem Gruppen-Quota aktiv ist (mit repquota -ag <Dateisystem>). Weitere Informationen zur Konfiguration des Gruppen-Quotas siehe Abschnitt 2.1.2, „ Dateisystem-Quota “. • Problem: in der Logdatei erscheint die Fehlermeldung Can't get system informations: open(/dev/mem) failed: Operation not permitted Lösung: diese Fehlermeldung können Sie ignorieren. LiveConfig versucht beim Start einige Informationen über den Server zu bekommen, u.a. durch Auslesen der DMI-Informationen im BIOS. Auf manchen Virtualisierungsplattformen wie z.B. Virtuozzo und OpenVZ ist dies nicht möglich - dort erscheint die o.g. Fehlermeldung. Auswirkungen auf die Funktion von LiveConfig hat das aber nicht. 141 142 Anhang B. Copyright-Hinweise In diesem Abschnitt werden alle relevanten Urheberrechts-Hinweise und Lizenzbedingungen aufgeführt. Sie finden eine vollständige Liste aller Lizenzbedingungen auch in der Datei /usr/ share/docs/liveconfig/COPYRIGHT. B.1. LiveConfig Copyright © 2009-2015 Keppler IT GmbH. Alle Rechte vorbehalten. „LiveConfig“ ist ein eingetragenes Markenzeichen der Keppler IT GmbH. B.2. Verwendete Bibliotheken Um das Rad nicht zweimal zu erfinden, greift LiveConfig auf eine Reihe frei verfügbarer Bibliotheken zurück. Nachfolgend sind alle verwendeten Bibliotheken mitsamt deren Copyright-Hinweisen und Lizenzbedingungen aufgeführt. Wir möchten uns nochmals ausdrücklich bei den Entwicklern dieser Bibliotheken für die tolle Arbeit bedanken! • APR - Apache Portable Runtime (http://apr.apache.org/) Copyright 2008 The Apache Software Foundation. This product includes software developed by The Apache Software Foundation (http:// www.apache.org/). Portions of this software were developed at the National Center for Supercomputing Applications (NCSA) at the University of Illinois at Urbana-Champaign. This software contains code derived from the RSA Data Security Inc. MD5 Message-Digest Algorithm. This software contains code derived from UNIX V7, Copyright © Caldera International Inc. • Expat XML Parser Library (http://expat.sourceforge.net/) Copyright © 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper Copyright © 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers. • libcaptcha (http://brokestream.com/captcha.html) 143 Copyright-Hinweise Copyright © 2009 Ivan Tikhonov. • Lua (http://www.lua.org/) Copyright © 1994–2008 Lua.org, PUC-Rio. • OpenSSL Toolkit (http://www.openssl.org/) This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/). Copyright © 1998-2011 The OpenSSL Project. All rights reserved. Copyright © 1995-1998 Eric Young (<[email protected]>). All rights reserved. This product includes cryptographic software written by Eric Young (<[email protected]>). This product includes software written by Tim Hudson (<[email protected]>). • PCRE - Perl Compatible Regular Expressions (http://www.pcre.org/) This product includes the PCRE library (Perl Compatible Regular Expressions) written by Philip Hazel. Copyright © 1997-2012 University of Cambridge. All rights reserved. • zlib (http://www.zlib.net/) This product includes the zlib Data Compression Library Copright © 1995-2012 Jean-loup Gailly and Mark Adler • This product includes QR Code Generator for JQuery Copyright (c) 2009 Kazuhiko Arase (http://www.d-project.com/) Copyright (c) 2011 Jerome Etienne (http://jetienne.com) Copyright (c) 2012 davidshimjs (http://davidshimjs.github.io/qrcodejs/) The word 'QR Code' is registered trademark of DENSO WAVE INCORPORATED B.3. Verwendete Software Zur Erstellung von LiveConfig sind insbesondere die nachfolgend aufgeführten Werkzeuge zum Einsatz gekommen. Auch hierfür möchten wir uns ausdrücklich bei deren Entwicklern bedanken! (Diese Liste erhebt keinen Anspruch auf Vollständigkeit.) 144 Verwendete Software • GNU Compiler Collection (GCC) für die Compilierung unter allen Unix-artigen Betriebssystemen (derzeit Linux, FreeBSD und OpenSolaris) • Subversion (svn) für die Versionierung und Verwaltung des gesamten Projektcodes. • Valgrind: Debugging und Profiling • Docbook-XML und Apache FOP für die Erstellung dieser Dokumentation • Doxygen für die Quellcode-Dokumentation • Jenkins - der ultimative Continuous-Integration-Server • Selenium für automatisierte Tests im Rahmen der Continuous Integration • Xen als Virtualisierungsplattform für die Entwicklungs- und Testumgebungen 145 146 Stichwortverzeichnis Symbole --activate LiveConfig Client, 39 LiveConfig Server, 27 --config LiveConfig Client, 40 LiveConfig Server, 27 --configtest LiveConfig Client, 40 LiveConfig Server, 28 --diag LiveConfig Client, 40 LiveConfig Server, 27 --foreground LiveConfig Client, 40 LiveConfig Server, 27 --help LiveConfig Client, 40 LiveConfig Server, 27 --init LiveConfig Server, 27 --status LiveConfig Client, 40 LiveConfig Server, 28 --version LiveConfig Client, 40 LiveConfig Server, 28 -k LiveConfig Client, 40 LiveConfig Server, 27 A Admin-Sitzung, 61 Apache httpd, 51 Application Installer, 74 Auto-Discovery, 85 Auto-Konfiguration, 85 AWstats, 51 B Backup, 87 base_path, 19, 37 Benutzer Begriffsklärung, 2 Benutzerverwaltung, 65 C Catch-All-Adressen, 71 CentOS Deinstallation Client, 92 Server, 92 Installation Client, 35 Server, 16 Cron-Jobs, 73 custom.lua, 124 D Datenbanken, 72 externer Zugriff, 73 Datenbankserver verwalten, 56 Datensicherung, 87 db_driver, 21 db_host, 21 db_name, 21 db_password, 21 db_user, 21 Debian GNU/Linux Deinstallation Client, 92 Server, 91 Installation Client, 30 Server, 12 Deinstallation, 91 Client, 92 147 Stichwortverzeichnis Server, 91 DNS, 57 DNS-Server, 76 externe, 78 Vorlagen, 76 DNSSEC, 63 Domaineinstellungen, 66 Domains, 63 DNSSEC, 63 Dovecot, 54 fortgeschrittene Konfiguration, 86 E E-Mail-Postfächer, 69 Einstellungen verwalten, 44 F Fehlerbehebung Client, 141 Server, 139 Firewall-Einstellungen Client, 29 Server, 10 FTP-Server verwalten, 52 FTP-Zugänge, 65 G group, 21, 38 H Hosting-Angebote, 58 host_id Client-Konfiguration, 38 http_access_log, 22 http_canonical_host, 23 http_canonical_redirect, 23 http_hsts_time, 24 http_htdocs_path, 22 http_keepalive_requests, 22 http_keepalive_timeout, 22 148 http_max_connections, 22 http_read_timeout, 22 http_redirect, 23 http_rewrite, 23 http_socket, 21 http_ssl_certificate, 23 http_ssl_socket, 22 I Icinga, 88 IFRAME API, 134 Installation Client, 30 Server, 12 K Kontakte Begriffsklärung, 2 Kunden Begriffsklärung, 2 sperren, 61 verwalten, 59 Kundennummern, 48 L LCCP Server-Einstellungen, 24 lccp_socket, 24 lcdbbackup, 28 LCDEFAULTS, 81 lclogparse, 41 lclogsplit, 41 lclua, 41, 124 libexec_path, 20, 37 library_path, 20, 37 license_file, 19, 37 Lizenz aktivieren, 25 austauschen, 26 Logo ändern, 48 log_file, 19, 37 log_level, 20 Lua, 123 LC.crypt, 125 LC.crypt.cram_md5, 125 LC.crypt.crypt, 125 LC.crypt.crypt_md5, 126 LC.exec, 126, 126 LC.expect, 126 LC.expect.new, 127 LC.expect:expect, 127 LC.expect:log, 127 LC.expect:logfile, 127 LC.expect:send, 128 LC.expect:spawn, 128 LC.fs, 128 LC.fs.copy, 129 LC.fs.filecount, 129 LC.fs.getGroupQuota, 130 LC.fs.getUserQuota, 130 LC.fs.is_dir, 129 LC.fs.is_file, 129 LC.fs.mkdir, 129 LC.fs.mkdir_rec, 129 LC.fs.rename, 129 LC.fs.setGroupQuota, 130 LC.fs.setperm, 130 LC.fs.setUserQuota, 130 LC.log, 130 LC.log.print, 131 LC.mutex, 131 LC.mutex.debug, 131 LC.mutex.lock, 131 LC.mutex.unlock, 132 LC.sys, 132 LC.sys.get_fqdn, 132 LC.sys.get_machine, 132 LC.sys.get_name, 132 LC.sys.get_node, 132 LC.sys.get_release, 132 LC.sys.get_version, 133 LC.sys.group_exists, 133 LC.sys.user_exists, 133 LC.timeout, 133 LC.timeout.set, 133 Programme testen, 124 M mailquota.txt, 85 Mailserver verwalten, 54 Monitoring, 88 MySQL, 56 als LiveConfig-Datenbank, 18 N Nagios, 88 Nameserver, 76 externe, 78 Vorlagen, 76 Nameserver verwalten, 57 NGINX, 51 O OpenSUSE Deinstallation Client, 92 Server, 92 Installation Client, 34 Server, 15 OTP (One Time Passwords) (Siehe Zwei-Faktor-Authentifizierung) P Passwort admin-Passwort ändern (Siehe Initialisierung) ändern, 45 Initialisierung, 26 Perl SOAP-Beispielcode, 98 149 Stichwortverzeichnis PHP 5 SOAP-Beispielcode, 97 phpMyAdmin, 56 pid_file, 20, 37 Postfix, 54 fortgeschrittene Konfiguration, 86 ProFTPd, 52 ProFTPD fortgeschrittene Konfiguration, 84 Q Quota, 10 E-Mail, 85 R Recovery, 88 Reseller-Einstellungen, 47 resource_path, 20 Restore, 88 S server Client-Konfiguration, 38 Server verwalten, 49 SNI, 69 SOAP, 93 Authentifizierung, 95 ContactAdd, 102 ContactEdit, 103 ContactGet, 104 CustomerAdd, 105 CustomerEdit, 105 CustomerGet, 106 HostingCronAdd, 119 HostingDatabaseAdd, 116 HostingDomainAdd, 114 HostingFtpAdd, 121 HostingMailboxAdd, 117 HostingMailboxEdit, 118 HostingPasswordPathAdd, 120 150 HostingPasswordUserAdd, 119 HostingPlanAdd, 107 HostingPlanGet, 108 HostingSubdomainAdd, 115 HostingSubscriptionAdd, 109 HostingSubscriptionDelete, 111 HostingSubscriptionEdit, 113 HostingSubscriptionGet, 111 LiveConfigVersion, 102 Referenz, 101 SessionCheck, 123 TestSayHello, 102 UserAdd, 121 UserGet, 122 WSDL, 96 Sprache ändern, 45 SSL, 52 SSL-Zertifikate, 74 CA (CA-Zwischenzertifikate), 76 CRT (Zertifikat), 76 CSR (Certificate Signing Request), 75 KEY (Privater Schlüssel), 75 Standardwerte ändern, 81 T Testlizenz (Siehe Lizenz austauschen) U Überwachung, 88 Ubuntu Linux Deinstallation Client, 92 Server, 91 Installation Client, 32 Server, 14 user, 20, 37 V Verträge, 62 Begriffsklärung, 2 neu zuordnen, 62 Vertragsnummern, 48 vsftpd, 52 W Webalizer, 51, 65 Webserver verwalten, 50 Webservices, 93 Webspace Hosting-Angebote, 58 Webspace-Verwaltung, 65 Wiederherstellung, 88 Wiederverkäufer-Einstellungen, 47 WSDL, 96 Z Zeitzone ändern, 45 Zugriffsstatistiken, 51, 65 Zwei-Faktor-Authentifizierung, 45 151 152 Die neue Generation der Serververwaltung. LiveConfig ist eine völlig neuartige Software zur Verwaltung von Servern. LiveConfig erkennt und berücksichtigt die jeweilige Distribution, bietet eine blitzschnelle und elegante Web-Oberfläche und benötigt dabei weder PHP noch MySQL. Dieses Referenzhandbuch umfasst alle Aspekte von LiveConfig - von der Installation und den ersten Schritten über Monitoring und Backup bis hin zu Programmierschnittstellen und Erweiterungsmöglichkeiten. Hosting. Software. Keppler IT GmbH Am Weichselgarten 7 91058 Erlangen Tel.: +49-9131-691 480 Fax: +49-9131-691 489 [email protected] www.liveconfig.com facebook.com/liveconfig twitter.com/liveconfig
© Copyright 2024 ExpyDoc