Integritätsprüfung im ePages-System | → 6.12.2 | Created: 6.0.8; Updated: 6.0.8 |
Um die Sicherheit des ePages-Systems weiter zu erhöhen, kann die Integrität des System jetzt regelmäßig automatisch überprüft werden.
Dabei wird folgendes Verfahren angewendet:
Im Abschnitt Installation und Ausführung lesen Sie, wie die Integritätsprüfung standardmäßig eingerichtet und genutzt wird.
Im Abschnitt Auswertung und Fehlermeldung lesen Sie, welche Ergebnisse erstehen und wie Sie im Fehlerfall informiert werden.
Im Abschnitt Konfiguration lesen Sie, wie Sie die Integritätsprüfung bei Bedarf Ihren Erfordernissen anpassen können.
Im Abschnitt Einrichten der Scheduler lesen Sie, wie die entsprechenden Scheduler eingerichtet und gestartet werden.
Im Abschnitt Signieren von externen Cartridges lesen Sie, wie Sie die Integritätsprüfung für selbst entwickelte Cartridges einrichten.
Inhaltsverzeichnis |
Die Integritätsprüfung wird mit Patch oder Vollinstallation ab ePages-Version 6.0.7 installiert. Sie wird mit Standardparametern konfiguriert, die den meisten Erfordernissen entsprechen.
Die Integritätsprüfung muss manuell gestartet werden. Gehen Sie dabei wie folgt vor:
Führen Sie folgenden Befehl im Patch-Verzeichnis aus:
perl patch.pl start_sic
Führen Sie folgende Befehle aus:
Bei UNIX:
perl $EPAGES/bin/CheckIntegrity.PL -add scheduler /etc/init.d/epages6 start_cron
Bei Windows:
perl %EPAGES%\bin\CheckIntegrity.PL -add scheduler %EPAGES%\bin\epagesScheduler.cmd restart
Der Sollwertvergleich wird standardmäßig jede Minute ausgeführt. Die Signaturen werden jede Stunde geprüft. Tritt eine Differenz auf, werden die abweichenden Dateien in einem .tar.gz-Paket gespeichert und eine Fehlermeldung wird per E-Mail versendet. Diese E-Mail wird standardmäßig an die Adresse gesendet, die im TBO als Empfängeradresse für Fehlermeldungen hinterlegt ist.
Tritt beim nächsten Aufruf genau das gleiche Fehlverhalten auf (die gleichen Dateien haben die gleichen Unterschiede zur Norm).erfolgt keine Reaktion.
Alle Dateien, die CheckIntegrity.PL erzeugt, liegen:
*.NOMINAL : Sollzustand *.ACTUAL : Istzustand *.ERROR : Dateisystem-Inkonsistenzen *.tar.gz : Paket mit von der Norm abweichenden Dateien *.txt : (nur bei Windows) Liste aller in *.tar.gz enthaltenen Dateien, durch NULL (\0) getrennt
Die Integritätsprüfung wird mit Standardeinstellungen installiert und gestartet, die für die meisten Installationen ausreichend sind.
Bei Bedarf können Sie den Integritätstest speziellen Bedürfnissen oder Notwendigkeiten anpassen. Die Konfiguration wird in folgender Datei eingestellt:
$EPAGES_CONFIG/CheckIntegrity.conf
Die wichtigsten Parameter sind die, mit denen Sie festlegen, welche Dateien in welchen Verzeichnisen wie getestet werden:
Check=signature,size,mode,owner,inode,ctime,mtime
CheckFiles= .pl|.pm
CheckPath=$ENV{EPAGES_PERL}/bin
1 [:Default:] 2 # Each parameter in this section can also be written as parameter:HOSTNAME. 3 # If parameter:HOSTNAME exists, then host HOSTNAME uses parameter:HOSTNAME, 4 # otherwise it uses parameter (HOSTNAME is the short name without dots). 5 6 # Path to CheckIntegrity.PL (parameter must be set) 7 Command=$ENV{EPAGES}/bin/CheckIntegrity.PL 8 # VarDir contains variable data files (default: ~/.epages) 9 VarDir= 10 ### For GPG: 11 # Path to the gpg program (if not in PATH) 12 GpgPath= 13 # list of public keys (files,dirs,URLs) to import separated by ',' 14 PublicKeys=$ENV{EPAGES_CONFIG}/pubring.txt 15 #PublicKeys=http://epages.com/security/b1d28320.txt 16 ### For mail: 17 # e-mail address of sender (default: as defined in MailConnection resp. MailStore) 18 MailSender= 19 # list of recipients separated by [;,] (default: MailSender) 20 MailRecipient= 21 # EITHER use the e-mail connection as defined in store (only with ePages perl; default: Site): 22 MailStore= 23 # OR define the e-mail connection explicitly (default: localhost): 24 # Format: passwd:user@server or user@server or server 25 MailConnection= 26 ### For UNIX: 27 # Path to wrapScheduler.sh script (default: $ENV{EPAGES}/bin/wrapScheduler.sh) 28 WrapSchedulerSh= 29 # Path to wrapScheduler.PL script (default: $ENV{EPAGES}/bin/wrapScheduler.PL) 30 WrapSchedulerPl= 31 # Use '/bin/env perl' or ePages perl? (default: ePages perl) 32 UseBinEnvPerl=
Der :Default:-Abschnitt enthält Parameter-Werte die gesetzt werden, sofern die Parameter in den eigentlichen Abschnitten fehlen.
Pfad zu CheckIntegrity.PL, muss für Scheduler gesetzt sein.
Alle Abschnitte, die sowohl mit ':' beginnen als auch enden, werden ignoriert (Ausnahme: :Default:). Der Abschnitt ':Example:' zeigt alle möglichen Einstellungen, die an CheckIntegrity.PL vorgenommen werden können.
Achtung!: Kein Abschnittsname, der wirklich benutzt werden soll (außer :Default:), darf ':' enthalten. Windows kann Dateien mit ':' im Namen nicht schreiben.
34 [:Example:] 35 # check what: 36 Check=signature,size,mode,owner,inode,ctime,mtime 37 # check internal signature of files ending in: (separated by |) 38 InternalSignatures=.conf|.PL|.pl|.pm|.t|.sh 39 # check external signature of files ending in: (separated by |) 40 ExternalSignatures=.so|.exe|.dll 41 # check status of files ending in: (separated by |) 42 CheckFiles=.so|.exe 43 # check where (if SignaturePath isn't defined: path list separated by ',') 44 CheckPath=$ENV{EPAGES_PERL}/bin 45 # check against (if detached signatures): 46 SignaturePath=$ENV{EPAGES_PERL}/.gpg/bin 47 # run? (1 - yes, else - no) 48 IsActive=1 49 # what? (section names separated by ',') 50 SubTasks=DE_EPAGES_Size,Perl_Size,Perl_Signature,Config,Core 51 # where? (separated by ','; unset -> any) 52 Machine= 53 # when? (job wont't run if Cron= (UNIX) or Schtasks= and At= (Win) is/are unset) 54 # when? (Unix: minute/hour/day of month/month/day of week) [see 'man crontab'] 55 Cron=* * * * * 56 # when? (Windows: schtasks arguments) [see online help of schtasks] 57 Schtasks=/st 00:00 /sc MINUTE /mo 1 58 # when? (Windows: at args) [if schtasks runs, ignore at; see online help of at] 59 At=00:00 /every:5,10,15,20,25,30,35,40,45,50,55 60 # how long the cronjob may take without a subsequent instance reports 61 # an error? (default: until the next instance occurs) 62 # MaxDuration has one of the formats: 63 # <DAYS>-<HOURS>:<MINUTES> (e.g.: MaxDuration=3-12:00) 64 # <HOURS>:<MINUTES> (e.g.: MaxDuration=2:16) 65 # <MINUTES> (e.g.: MaxDuration=18) 66 MaxDuration=4 67 # what command options? (-section SECTION must be set) 68 Options=-section :Example:
Hier werden einige Abschnitte der Standard-Konfigurationsdatei erklärt.
70 [DE_EPAGES_Signature] 71 Check=signature 72 InternalSignatures=.pl|.pm 73 CheckPath=$ENV{EPAGES_CARTRIDGES}/DE_EPAGES
75 [DE_EPAGES_Stat] 76 Check=size,owner,mode,mtime 77 CheckPath=$ENV{EPAGES_CARTRIDGES}/DE_EPAGES
79 [Perl_Signature] 80 IsActive=0 81 Check=signature 82 ExternalSignatures= 83 CheckPath=$ENV{EPAGES_PERL}/bin 84 SignaturePath=$ENV{EPAGES_PERL}/.gpg/bin
90 [bin_Signature] 91 Check=signature 92 InternalSignatures=.PL|.pl|.sh 93 CheckPath=$ENV{EPAGES}/bin
99 [Core_Signature] 100 Check=signature 101 InternalSignatures=.pl|.pm 102 CheckPath=$ENV{EPAGES_CARTRIDGES} /DE_EPAGES/Core,$ENV{EPAGES_CARTRIDGES}/DE_EPAGES/WebInterface
104 [Config_Stat] 105 Check=size,owner,mode,mtime 106 CheckFiles=Servlet.conf|log4perl.conf 107 CheckPath=$ENV{EPAGES_CONFIG}
109 [Task_Cartridges_Hourly] 110 IsActive=1 111 SubTasks=DE_EPAGES_Signature 112 Machine= 113 Cron=55 * * * * 114 MaxDuration= 115 Options=-section Task_Cartridges_Hourly -again
117 [Task_Cartridges_UNIX] 118 IsActive=1 119 SubTasks=DE_EPAGES_Stat,Core_Signature 120 Machine= 121 Cron=* * * * * 122 MaxDuration=4 123 Options=-section Task_Cartridges_UNIX
125 [Task_Cartridges_Win32] 126 IsActive=1 127 SubTasks=DE_EPAGES_Stat 128 Machine= 129 Schtasks=/st 00:00 /sc MINUTE /mo 1 130 At=00:00 /every:5,10,15,20,25,30,35,40,45,50,55 131 MaxDuration=4 132 Options=-section Task_Cartridges_Win32
Voraussetzung: Kenntnis des ePages-Schedulerkonzepts
Bisher gab es nur ePages-Scheduler, jetzt können unter UNIX auch direkt Cronjobs verwaltet werden. Das hat den Vorteil, dass unter UNIX der gesamte Integritäts-Test außerhalb von ePages laufen kann.
Wird der Option -add der Parameter scheduler=epages mitgegeben, wird der ePages-Scheduler benutzt (Voreinstellung bei Windows). Bei UNIX kann der Parameter auch scheduler=cron heißen, dann wird ein Standard-UNIX- Cronjob benutzt (Voreinstellung beim UNIX-Integritätstest).
Durch das erweiterte Scheduler-Konzept werden Scheduler-Tasks neben $EPAGES_CONFIG/Scheduler.conf und $EPAGES_CONFIG/Scheduler.d/*.env auch durch $HOME/.epages/cron.d/* definiert. $HOME ist das Homedir eines der Nutzer 'root', '$AMUSER', 'ep_appl', 'ep_db' oder 'ep_web'.
Die Dateien in $HOME/.epages/cron.d/* werden bei /etc/init.d/epages6 start_cron (bzw. start) nach /etc/cron.d kopiert und umgekehrt bei stop wieder von dort entfernt. Dateien in /etc/cron.d werden als Cronjobs ausgeführt.
Unter UNIX sind folgende Aufrufe gleichwertig:
perl $EPAGES/bin/CheckIntegrity.PL -add scheduler=cron perl $EPAGES/bin/CheckIntegrity.PL -add scheduler
Diese Aufrufe erzeugen Cronjob-Dateien in $HOME/.epages/cron.d/. /etc/init.d/epages6 start startet die Cronjobs dann.
Der Output der Cronjobs wird von wrapscheduler.PL via SendProgramOutput.pl (für ePages-Perl) bzw. SMTPSendProgramOutput.PL (für beliebiges Perl) versendet.
Die Verbindung zum Mailserver kann in der Scheduler-Konfigurationsdatei (z.B. Scheduler.conf) durch einen der folgenden Parameter definiert werden:
Dieser Abschnitt ist nicht für Windows relevant.
Bisher wurden alle in Scheduler.conf definieren Jobs vom UNIX-User 'ep_appl' ausgeführt. Ab sofort kann man den Nutzer durch den Parameter 'User=' wählen:
[ClearTrash] # run? (1 - yes, else - no) IsActive=1 # who? (UNIX user) User=$ENV{EPAGES_APPUSER} ...
Ist kein User angegeben, wird 'ep_appl' angenommen. Als User sind erlaubt:
In /etc/init.d/epages6 steht:
[ -z "$EPAGES_IGNORE_CRON" ] && $SU_EXE ep_web -c ". \"$EP_DEFAULT\" ; LOGNAME=ep_web \"$EPAGES\"/bin/epagesScheduler.sh start" 2>/dev/null [ -z "$EPAGES_IGNORE_CRON" ] && $SU_EXE ep_db -c ". \"$EP_DEFAULT\" ; LOGNAME=ep_db \"$EPAGES\"/bin/epagesScheduler.sh start" 2>/dev/null $SU_EXE ep_appl -c ". \"$EP_DEFAULT\" ; LOGNAME=ep_appl \"$EPAGES\"/bin/epagesScheduler.sh start" 2>/dev/null $SU_EXE $EPAGES_APPUSER -c ". \"$EP_DEFAULT\" ; LOGNAME= $EPAGES_APPUSER \"$EPAGES\"/bin/epagesScheduler.sh start" 2> /dev/null
Das Patch setzt für alle Jobs 'User=$ENV{EPAGES_APPUSER}' außer für Jobs, die mit 'Sybase' beginnen (Jobs aus Database/Data/Scheduler/Scheduler.conf).
Dies gilt auch für Cronjobs, die nicht von ePages kommen! Sollte ein Cronjob nicht laufen, dann statt 'User=$ENV{EPAGES_APPUSER}' 'User= ep_appl' benutzen (oder umgekehrt).
Von ePages wird das Script "SignFiles.PL" wird benutzt, um Dateien mit dem ePages-Key zu signieren. Es kann aber auch von Dritten benutzt werden, um z.B. eigenentwickelte Cartridges mit ihrem eigenen Schlüssel zu unterschreiben.
Daher benötigt man als Dritter zunächst ein Private-/Public-Key-Paar. Mit dem privaten Schlüssel unterschreibt man die Dateien. Den öffentlichen Schlüssel gibt man dem Code- (z.B. Cartridge-) Benutzer. Der Benutzer muss den Pfad zum öffentlichen Schlüssel dem Parameter PublicKeys= in CheckIntegrity.conf hinzufügen.
Die Signaturen werden mit folgendem Script erzeugt:
$EPAGES/bin/SignFiles.PL
Das Script dient hauptsächlich dem Erzeugen von GPG-Signaturen, es kann aber auch GPG-Signaturen überprüfen (wie CheckIntegrity.PL) oder entfernen. SignFiles.PL benutzt im Gegensatz zu CheckIntegrity.PL keine Konfigurationdatei. Alle Parameter werden auf der Kommandozeile angegeben. Folgender Aufruf zeigt die möglichen Parameter und deren Anwendung an:
perl SignFiles.PL -help
Folgende Modi kennt SignFiles.PL:
-verify : verifiziert Files -unsign : entfernt die Signatur -resign : entfernt die Signatur und schreib sie neu (sonst): signiert Files
Die restlichen Optionen entsprechen Parametern in CheckIntegrity.conf:
-files "LIST" : siehe InternalSignatures= bzw. ExternalSignatures= -dir DIR : siehe CheckPath= -detach DIR : siehe SignaturePath=