Konfiguration mehrere Instanzen mit ansible

In manchen Szenarien gibt es mehrere Instanzen einer Software und jede hat ein eigenes systemd unit file in der Form app-instance-X.

Man kann nun natürlich durch die verschiedenen Instanzen loopen, möchte aber nur jeweils diese neu starten, wo sich die Konfiguration auch geändert hat.

Continue reading Konfiguration mehrere Instanzen mit ansible

apache: ProxyPassMatch für PHP umgeht htaccess Zugangsbeschränkungen

Ich hatte einen kuriosen Fall, den ich erst nicht verstanden hatte.

Ein Verzeichnis war mit einer .htaccess Datei und HTTP BASIC AUTH Zugangsbeschränkt. Das funktionierte auch ganz gut, wenn man nur die URL (z.B.: https://example.org/private/ oder https://example.org/private/index.html ) aufrufte, nicht aber, wenn man eine PHP direkt anwählte.

Der Aufruf von https://example.org/private/info.php führte die PHP Datei aus und zeigte den Inhalt an. – Was natürlich ein Skandal ist und genauer untersucht werden muss.

Continue reading apache: ProxyPassMatch für PHP umgeht htaccess Zugangsbeschränkungen

bind: refused notify from non-master

Auf einem bind9 SLAVE Server erscheint nach eienm restart des anmed Daemons die Meldung:

general: info: zone example.com/IN/external-zone: refused notify from non-master: 1.2.3.4

Nur: Die Angegebene IP ist die IP des SLAVE Servers selbst und dieser ist halt nun Mal kein MASTER. 😉

Continue reading bind: refused notify from non-master

robots.txt im HTTP Header

Da in der robots.txt häufig Applikationsinterne Pfade stehen, die der Webmaster vor den Suchmaschinen „verstecken“ möchte, kann das teils von security auditoren bemängelt werden.

In diesem Fall hat man die Möglichkeit mittels dem X-Robots-Tag die ensprechenden Anweisungen für die Crawler der Suchmaschinen auch im HTTP Header der betreffenden URLs auszugeben.

Continue reading robots.txt im HTTP Header

SMTP-Sinkhole mit postfix smtp-sink

Beim Testen von Applikationen oder beispielsweise Lasttests will man verhindern, dass irgendwelche Mails an Benutzer raus gehen.

Um das zu erreichen bietet postfix das kleine Tool smtp-sink an. Hier werden E-Mails vom MTA normal angenommen, aber statt tatsächlich verschickt, dann einfach in eine Datei geschrieben.

Continue reading SMTP-Sinkhole mit postfix smtp-sink

HTTP Header mit tcpdump anzeigen

Wenn man den Web-Traffic zwischen einem Reverse Proxy (z.B. HAProxy) und einem Web Server (z.B. apache) zwecks Problemdiagnose analysieren will geht das nur mit tcpdump auf dem Web Server, da im Browser die HTTP Header, welche vom Reverse Proxy kommen nicht angezeigt werden.

Continue reading HTTP Header mit tcpdump anzeigen

tomcat systemd service

Einen Java Applikationsserver wie tomcat, so scheint es, ist nicht einfach in eine systemd Service Unit zu packen.
Der Grund dafür ist, dass es in den meisten Tutorials und HowTos falsch gemacht wird.
Hier ein stabil funktionierendes template für einen tomcat systemd Service.

Continue reading tomcat systemd service

nginx reverse-proxy per source IP

Es gibt Situationen da möchte man in einem nginx reverse-proxy die Requests je nach Client IP zu einem anderen Server umleiten. Nützlich ist das beispielsweise bei einer Server Migration, wo man nur eine handvoll interner IPs zuerst auf den neuen Server proxy-en kann und wenn alles läuft dann alle.

Die Option mit „if Statements“ sollte man dabei möglichst nicht verwenden. Und es gibt auch eine viel elegantere Option.

Continue reading nginx reverse-proxy per source IP

JSON output in ansible verwenden

Hat man in einem Task JSON als Ausgabe (etwa bei einer REST-API Abfrage) könnte man auf die Werte gleich in ansible Zugreifen, welches ebenfalls JSON für die Variablen verwendet.
Zuvor muss die Ausgabe aber in JSON umgewandelt werden. Ansible stellt dazu den Filter to_json zur Verfügung.

Continue reading JSON output in ansible verwenden

Ansible: Globale Variablen

Normalerweise kann man in ansible nur auf die Variablen des gerade ausführenden hosts zugreifen. Ein Konzept von „Globalen Variablen“, welche im ganzen Playbook gültig sind gibt es nicht.
Man kann sich jedoch behelfen, in dem man einfach die Variablen eines bestimmten Hosts zugreift.

Continue reading Ansible: Globale Variablen