AWS Zeitzone richtig einstellen Amazon Linux 2 und RDS MySQL

Damit in den Logs und in der Datenbank die korrekten Zeitstempel der eigenen Zeitzone verwendet werden, muss man

1. Die Systemzeit der EC2 Instanz konfigurieren

sudo ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime

und in der Datei /etc/sysconfig/clock die Zeitzone eintragen:

sudo vi /etc/sysconfig/clock
ZONE="Europe/Berlin"

Danach muss ein Reboot der Instanz erfolgen:

sudo reboot

Die Anpassung kann überprüft werden mit

date

Quelle weiterlesen…

letsencrypt AWS http challenge

Ich hatte das Problem, dass beim Erneuern des Letsencrypt Zertifikates per Cronjob unter Amazon Linux 2

certbot renew --post-hook "systemctl reload httpd"  >> /var/log/certbot.log 2>&1

das SSL Zertifikat nicht erneuert wurde, sondern folgende Fehlermeldung auftrat:

Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)
Attempting to renew cert (foo.de) from /etc/letsencrypt/renewal/foo.conf produced an unexpected error: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',). Skipping.

Ich habe dann in Konfiguration geschaut: /etc/letsencrypt/renewal/foo.conf und dort den Authentificator geändert auf apache und den Authentificator Challenge auf HTTP (über den Webserver).

# Options used in the renewal process
[renewalparams]
account = xxx
server = https://acme-v02.api.letsencrypt.org/directory
authenticator = apache
installer = apache
pref_challs = http-01,

Danach war wichtig noch den Port 80 in der Security Group freizuschalten für die Authentifizierung und nach erneuter Eingabe des Befehls

certbot renew

wurde das Zertifikat wurde erfolgreich erneuert.

Cert is due for renewal, auto-renewing...
Plugins selected: Authenticator apache, Installer apache
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for foo.de
Waiting for verification...
Cleaning up challenges

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of apache server; fullchain is
/etc/letsencrypt/live/foo.de/fullchain.pem

PHP Skript als Windows-Dienst ausführen

Unter Windows lassen sich Skripte, die endlos laufen sollen mit PHP mittels eines Dienstes realisieren.

Dies hat den Vorteil, dass der Speicherverbrauch nicht mit der Zeit ins unendliche geht, bei endloser Skriptausführungen und eine Recovery und Restart Funktionalität implementiert werden kann, um den Dienst über lange Zeiträume am Laufen zu halten.

Außerdem erhält der Dienst vom Betriebsystem Events, wenn z.B. eine Shutdown ansteht, um sich rechtzeitig selber beenden zu können und keine korrupten Daten zu produzieren beim Abbruch in einer nicht atomaren Operation.

Um einen Windows Dienst anzulegen benötigt man die win32service PHP-Library.

Diese kann man hier downloaden und in der php.ini einbinden:

extension=php_win32service.dll

Dienst anlegen weiterlesen…

Windows 10 geplante Aufgabe für PHP Skript anlegen analog Crontab

Für wiederkehrende PHP Jobs kann man den Betriebsystem Scheduler verwenden, unter Linux ist das cron und unter Windows Aufgaben.

Um ein PHP Skript zu starten C:\foo\bar.php mittels der Aufgabenplanung jede Minute kann man unter Windows 10 und darunter wie folgt neue Aufgaben anlegen.

Unter Systemsteuerung -> Aufgabenplanung lassen sich neue Aufgaben verwalten:

Systemsteuerung -> Aufgabenplanung

weiterlesen…

proftp log user traffic mit mod_sql

Um den User Traffic in proftp mitzuloggen in einer MySQL Datenbank, muss man nur in der User Tabelle eine Spalte “traffic” hinzufügen vom Typ BIGINT, Default 0:

ALTER TABLE `ftpuser` ADD COLUMN `traffic` BIGINT NOT NULL DEFAULT '0';

Dann kan man einen SQLNamedQuery verwenden in der sql.conf, um die Menge des Traffics mitzuschneiden:

SQLLog RETR,STOR,APPE extendedlog
SQLNamedQuery extendedlog UPDATE "traffic= (traffic + %b) WHERE userid='%u'" ftpuser

Achtung, die Verwendung führt zu erhöhtem Traffic auf der Datenbank.

AWS: verifizieren einer Email Adresse in SES ohne Zugriff auf das Postfach

Um bei Amazon SES Email verschicken zu können, muss man die E-Mail Adresse erst verifizieren. Dies ist ein Problem, wenn man zwar Zugriff auf die Domain hat, aber keinen Mail-Server eingerichtet hat.

Um das Problem zu umgehen, verifiziert man erst die Domain in SES und richtet dann unter Configure Email Receiving die zu verifierende E-Mail Adresse ein und verbindet diese mit einem SNS Topic. Danach kann man eine Subscription einrichten auf das SNS Topic via Email und sich so die Verifikations-Email weiterleiten lassen auf ein vorhandenes Postfach.

Microsoft IIS REST API erlauben von PUT, DELETE

Um beim IIS 7.5 alle HTTP Verben wie PUT, POST, DELETE und PATCH zu aktivieren, muss man in der web.config folgende Module und Handler deaktivieren:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <modules>
         <remove name="WebDAVModule" />
      </modules>
        <handlers>
            <remove name="WebDAV" />
            <remove name="OPTIONSVerbHandler" />
            <remove name="TRACEVerbHandler" />
        </handlers>
    </system.webServer>
</configuration>