

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>tom.aeby@omnespro.ch &#8211; OmnesPRO GmbH</title>
	<atom:link href="https://www.omnespro.ch/post/tag/tom-aebyomnespro-ch/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.omnespro.ch</link>
	<description></description>
	<lastBuildDate>Tue, 09 Jun 2026 23:46:45 +0000</lastBuildDate>
	<language>de-CH</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.omnespro.ch/wp-content/uploads/2023/07/cropped-OmnesPRO-final-large-32x32.png</url>
	<title>tom.aeby@omnespro.ch &#8211; OmnesPRO GmbH</title>
	<link>https://www.omnespro.ch</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordPress: &#171;Downloads&#187;-Seite funktioniert nicht (404)</title>
		<link>https://www.omnespro.ch/post/wordpress-downloads-seite-funktioniert-nicht-404/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Thu, 28 Dec 2023 21:53:38 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[gewusstwie]]></category>
		<category><![CDATA[hint]]></category>
		<category><![CDATA[tom.aeby@omnespro.ch]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://omnespro.fuertests.ch/post/wordpress-downloads-seite-funktioniert-nicht-404/</guid>

					<description><![CDATA[Ausgangslage: Eine Seite namens &#034;Downloads&#034; ist erstellt, ist aber nicht zug&#228;nglich. Jeder Versuch, die Seite anzusprechen, endet mit einem 404-Fehler (Seite nicht gefunden). Workaround: Wenn Sie die Seite umbenennen in &#034;Download&#034;, dann funktioniert sie (wenn nicht, dann sind Sie vermutlich auf ein anderes Problem gestossen als dieser Beitrag beschreibt). Ursache: Sehr wahrscheinlich belegt eins der [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><b>Ausgangslage</b>: Eine Seite namens &#034;Downloads&#034; ist erstellt, ist aber nicht zug&#228;nglich. Jeder Versuch, die Seite anzusprechen, endet mit einem 404-Fehler (Seite nicht gefunden).</p>
<div></div>
<div><b>Workaround</b>: Wenn Sie die Seite umbenennen in &#034;Download&#034;, dann funktioniert sie (wenn nicht, dann sind Sie vermutlich auf ein anderes Problem gestossen als dieser Beitrag beschreibt).</div>
<div></div>
<div><b>Ursache</b>: Sehr wahrscheinlich belegt eins der aktiven Plugins den Slug &#034;downloads&#034;, so dass beim Zugriff auf eine URL, die &#034;downloads&#034; enth&#228;lt, statt Ihrer Seite dieses Plugin angesprochen wird. Ber&#252;chtigt daf&#252;r ist vor allem das verbreitete Woocommerce-Plugin. Falls Sie dieses installiert haben, navigieren Sie unter Woocommerce zu dessen <i>Einstellungen</i>. Unter <i>Erweitert</i> finden Sie die Konto-Endpunkte. Ist dort unter <i>Downloads</i> &#034;downloads&#034; eingestellt, so d&#252;rften Sie die Ursache des Problems gefunden haben. Falls Sie in Woocommerce keine Downloads ben&#246;tigen leeren Sie den Eintrag, ansonsten w&#228;hlen Sie einen anderen Namen f&#252;r den Endpunkt, z.B. &#034;shop-downloads&#034;.</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Fortigate: Virtual-IP / Port-Forwarding funktioniert nicht</title>
		<link>https://www.omnespro.ch/post/fortigate-virtual-ip-port-forwarding-funktioniert-nicht/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Thu, 28 Dec 2023 21:17:16 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Fortigate]]></category>
		<category><![CDATA[gewusstwie]]></category>
		<category><![CDATA[hint]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[tom.aeby@omnespro.ch]]></category>
		<guid isPermaLink="false">https://omnespro.fuertests.ch/post/fortigate-virtual-ip-port-forwarding-funktioniert-nicht/</guid>

					<description><![CDATA[Alles sieht richtig aus, die Virtual-IPs sind konfiguriert und werden laut Z&#228;hlern sogar verwendet, die Firewall-Regeln sind alle korrekt &#8211; und trotzdem funktioniert der Zugang zu Diensten hinter der Fortigate nicht? Genau diese Situation kann eintreten, wenn mehrere konkurrierende Routen zum Ziel dieselbe Admin-Distanz aufweisen. Achten Sie insbesondere darauf, die Default-Route mit einer kleineren Admin-Distanz [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Alles sieht richtig aus, die Virtual-IPs sind konfiguriert und werden laut Z&#228;hlern sogar verwendet, die Firewall-Regeln sind alle korrekt &#8211; und trotzdem funktioniert der Zugang zu Diensten hinter der Fortigate nicht?</p>
<div></div>
<div>Genau diese Situation kann eintreten, wenn mehrere konkurrierende Routen zum Ziel dieselbe Admin-Distanz aufweisen. Achten Sie insbesondere darauf, die Default-Route mit einer kleineren Admin-Distanz einzurichten als die spezifischeren Routen zu internen Netzen.</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>transparenter Reverse-Proxy mit SNIProxy</title>
		<link>https://www.omnespro.ch/post/transparenter-reverse-proxy-mit-sniproxy/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 27 Dec 2023 21:14:29 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[gewusstwie]]></category>
		<category><![CDATA[hint]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[SNI]]></category>
		<category><![CDATA[tom.aeby@omnespro.ch]]></category>
		<category><![CDATA[Transparent]]></category>
		<category><![CDATA[Webserver]]></category>
		<guid isPermaLink="false">https://omnespro.fuertests.ch/post/transparenter-reverse-proxy-mit-sniproxy/</guid>

					<description><![CDATA[Vor einer Weile haben wir uns mit SNIProxy als einem sehr einfachen Reverse Proxy&#160;befasst. Ein Nachteil, den die Verwendung von Reverse Proxies f&#252;r Web-Zugriffe oft hat, ist, dass aus Sicht des dahinterliegenden Webservers Requests nicht vom eigentlichen Client zu kommen scheinen, sondern eben vom Proxy-Rechner. Das ist unpraktisch, da in Logs und Statistiken so der [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Vor einer Weile haben wir uns mit <a href="https://www.omnespro.ch/post/einfacher-reverse-proxy-als-weiche-zu-mehreren-webservern-und-verteilte-ssl-zertifikate">SNIProxy als einem sehr einfachen Reverse Proxy&#160;befasst</a>. Ein Nachteil, den die Verwendung von Reverse Proxies f&#252;r Web-Zugriffe oft hat, ist, dass aus Sicht des dahinterliegenden Webservers Requests nicht vom eigentlichen Client zu kommen scheinen, sondern eben vom Proxy-Rechner. Das ist unpraktisch, da in Logs und Statistiken so der eigentliche Client nicht auftaucht.</p>
<p>&#010;&#010;</p>
<p>Manche Proxies kennen M&#246;glichkeiten, um dieses Problem zu umgehen. SNIProxy l&#228;sst sich in einem transparenten Modus betreiben, in dem die Quell-Adresse der Verbindungen beibehalten wird.</p>
<p>&#010;&#010;</p>
<h3>SNIProxy im transparenten Modus</h3>
<p>&#010;&#010;</p>
<p>SNIProxy in den transparenten Modus zu versetzen ist auf den ersten Blick ganz einfach: &#220;ber die Konfigurationsdirektive <em>source client</em>&#160;im passenden Listener teilt man dem SNIProxy mit, er m&#246;chte doch bitte als Quell-Adresse f&#252;r die Verbindungen gegen innen die urspr&#252;ngliche IP des Clients verwenden, z.B. so:</p>
<p>&#010;&#010;</p>
<pre><code>listen 192.168.1.15 80 {&#010;   proto http&#010;   source client&#010;....&#010;</code></pre>
<p>&#010;&#010;</p>
<p>Als Beispiel verwenden wir 192.168.1.15 als IP f&#252;r den Proxy. Es gibt dabei allerdings die eine oder andere H&#252;rde zu umschiffen:</p>
<p>&#010;&#010;</p>
<ul>&#010;&#009;</p>
<li>Der transparente Modus funktioniert nur bei Listenern, die nur eine IP-Version verwenden. Es ist also notwendig, separate Listener f&#252;r IPv4- und IPv6-Verbindungen einzurichten. In obigem Beispiel geben wir explizit die Adresse an, auf die der Listener h&#246;ren soll, d.h. wir legen uns in diesem Beispiel auf IPv4 fest.</li>
<p>&#010;&#009;</p>
<li>Die Antwort-Pakete der Webserver, auf die SNIProxy weiterverbindet, m&#252;ssen durch den Proxy-Rechner geroutet werden. Im einfachsten Fall wird dieser als Router aufgesetzt und die Webserver erhalten ihn als Default-Gateway.</li>
<p>&#010;&#009;</p>
<li>Auf dem Proxy-Rechner selbst muss per IPTables daf&#252;r gesorgt werden, dass die Pakete auch tats&#228;chlich durch den transparenten Proxy laufen.<br />&#010;&#009;&#009;&#160;</li>
<p>&#010;</ul>
<p>&#010;&#010;</p>
<h3>iptables und Policy Route&#160;auf dem Proxy-Rechner</h3>
<p>&#010;&#010;</p>
<p>Damit der Transparentmodus richtig funktioniert, m&#252;ssen Pakete passend geleitet werden. Dies geschieht durch eine separate Routing-Tabelle, auf die Pakete per Markierung durch iptables geleitet werden:</p>
<p>&#010;&#010;</p>
<pre><code>iptables -t mangle -N DIVERT&#010;iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT&#010;iptables -t mangle -A DIVERT -j MARK --set-mark 1&#010;iptables -t mangle -A DIVERT -j ACCEPT&#010;&#010;ip rule add fwmark 1 lookup 100&#010;ip route add local 0.0.0.0/0 dev lo table 100&#010;</code></pre>
<p>&#010;&#010;</p>
<p>Auf dem Proxy-Rechner muss ausserdem Forwarding eingeschaltet sein, z.B. durch folgende Eintr&#228;ge in /etc/sysctl.conf:</p>
<p>&#010;&#010;</p>
<pre><code>net.ipv4.ip_forward=1&#010;net.ipv6.conf.all.forwarding=1&#010;</code></pre>
<p>&#010;&#010;</p>
<h3>&#010;&#009;Webtraffic auf den Webservern durch den Proxy umleiten</h3>
<p>&#010;&#010;</p>
<p>Im einfachsten Fall wird ganz einfach die Default-Route der Webserver auf den Proxy gelegt. Das ist nicht immer praktikabel. Eine Variante davon ist, lediglich die Antworten des Webservers &#252;ber den Proxy umzuleiten. Auch dies gelingt mit einer Policy-Route und einer iptables-Markierung, etwa so:</p>
<p>&#010;&#010;</p>
<pre><code>iptables -t mangle -A OUTPUT -p tcp --sport 443 -j MARK --set-mark 0x8&#010;iptables -t mangle -A OUTPUT -p tcp --sport 80 -j MARK --set-mark 0x8&#010;&#010;ip rule add fwmark 8 lookup 101&#010;ip route add 192.168.1.15 dev eth0 table 101&#010;ip route add default via 192.168.1.15 table 101&#010;</code></pre>
<p>&#010;&#010;</p>
<p>Auch hier gegen wir als Beispiel wieder vom auf der Adresse 192.168.1.15 laufenden Proxy aus und leiten alle ausgehenden Pakete mit Quellport 80 oder 443 auf diesen um.</p>
<p>&#010;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>vim im Terminal: Copy &#038; Paste mit mittlerer Maustaste funktioniert nicht</title>
		<link>https://www.omnespro.ch/post/vim-im-terminal-copy-paste-mit-mittlerer-maustaste-funktioniert-nicht/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 27 Dec 2023 21:14:29 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[gewusstwie]]></category>
		<category><![CDATA[hint]]></category>
		<category><![CDATA[tom.aeby@omnespro.ch]]></category>
		<guid isPermaLink="false">https://omnespro.fuertests.ch/post/vim-im-terminal-copy-paste-mit-mittlerer-maustaste-funktioniert-nicht/</guid>

					<description><![CDATA[Wenn Sie vim in einem Text-Terminal benutzen, dann funktioniert manchmal eine Selektion per Maus mit anschliessendem Copy&#38;Paste (z.B. per mittlerem Mausklick oder per Men&#252;) nicht wie gewohnt. Versuchen Sie einmal, ob es funktioniert, wenn Sie die Shift-Taste gedr&#252;ckt halten mittels&#160; :set mouse=r die Mausunterst&#252;tzung ziemlich einschr&#228;nken &#160; Wenn im vim die Mausunterst&#252;tzung eingeschaltet ist und [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Wenn Sie vim in einem Text-Terminal benutzen, dann funktioniert manchmal eine Selektion per Maus mit anschliessendem Copy&amp;Paste (z.B. per mittlerem Mausklick oder per Men&uuml;) nicht wie gewohnt.</p>
<p>Versuchen Sie einmal, ob es funktioniert, wenn Sie</p>
<ul>
<li>die Shift-Taste gedr&uuml;ckt halten</li>
<li>mittels&nbsp;
<pre><code>:set mouse=r</code></pre>
<p>die Mausunterst&uuml;tzung ziemlich einschr&auml;nken</p>
</li>
</ul>
<p>&nbsp;</p>
<p>Wenn im vim die Mausunterst&uuml;tzung eingeschaltet ist und das Terminal dies unterst&uuml;tzt, dann wird eine Selektion per Maus vom vim abgefangen. Typischerweise verwendet vim das *-Register (System-Clipboard), so dass eigentlich alles wie gewohnt funktioniert. In manchen Konstellationen funktioniert allerdings die Mausunterst&uuml;tzung im Terminal, aber nicht das System-Clipboard. Dann bleiben Selektionen nur innerhalb der gleichen vim-Instanz verf&uuml;gbar, aber es ist nicht m&ouml;glich, z.B. zwischen verschiedenen Fenstern zu Copy&amp;Pasten.</p>
<p>Die L&ouml;sung besteht darin, die Mausunterst&uuml;tzung auszuschalten (dann wird auch wieder die Copy&amp;Paste-Funktion des Systems aktiv) oder per Druck auf die Shift-Taste nur f&uuml;r gerade diese Selektion per System zu machen.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Windows Update bleibt hängen / dauert sehr lange</title>
		<link>https://www.omnespro.ch/post/windows-update-bleibt-haengen-dauert-sehr-lange/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 27 Dec 2023 21:14:29 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[gewusstwie]]></category>
		<category><![CDATA[hint]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[tom.aeby@omnespro.ch]]></category>
		<category><![CDATA[Update]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[wsusoffline]]></category>
		<guid isPermaLink="false">https://omnespro.fuertests.ch/post/windows-update-bleibt-haengen-dauert-sehr-lange/</guid>

					<description><![CDATA[&#220;ber dieses Problem stolpern wir gelegentlich, vor allem bei Windows-Installationen, die eigentlich schon etwas l&#228;nger mal wieder Updates brauchen oder nach Neu-Aufsetzen viele Updates ben&#246;tigen. Bei Windows 7 kommt es h&#228;ufiger vor, Windows 10 hat das Problem seltener: Windows Update braucht sehr lange, beisst sich&#160;in manchen F&#228;llen beim Suchen von Updates fest und macht keine [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>&Uuml;ber dieses Problem stolpern wir gelegentlich, vor allem bei Windows-Installationen, die eigentlich schon etwas l&auml;nger mal wieder Updates brauchen oder nach Neu-Aufsetzen viele Updates ben&ouml;tigen. Bei Windows 7 kommt es h&auml;ufiger vor, Windows 10 hat das Problem seltener: Windows Update braucht sehr lange, beisst sich&nbsp;in manchen F&auml;llen beim Suchen von Updates fest und macht keine Fortschritte mehr.</p>
<p>F&uuml;r diese Probleme gibt es verschiedene Ursachen und verschiedene L&ouml;sungen.</p>
<p>Eine, die uns immer wieder auch bei den h&auml;rteren F&auml;llen hilft, ist der</p>
<blockquote>
<p>WSUS Offline Updater</p>
</blockquote>
<p>Seine Funktion klingt auf den ersten Blick &uuml;berfl&uuml;ssig: Das Tool l&auml;dt Updates von den offiziellen Microsoft-Update-Quellen herunter und installiert sie dann in einem zweiten Schritt. Das hat allerdings zwei Vorteile gegen&uuml;ber dem in Windows eingebauten Windows-Update:</p>
<ol>
<li>Sind die Updates einmal heruntergeladen, dann kann man sie gleich auf mehreren PCs installieren, ohne sie nochmals herunterzuladen</li>
<li>Stottert das normale Windows-Update, dann schafft es der WSUS Offline Updater meistens, die Updates doch noch zu installieren</li>
</ol>
<p>
	Die Nutzung ist denkbar einfach:</p>
<ul>
<li>Laden Sie das Tool von der Webseite des <a href="http://download.wsusoffline.net/">WSUS Offline Updater</a> herunter und packen Sie in aus</li>
<li>Starten Sie das&nbsp;<em>UpdateGenerator.exe</em>, w&auml;hlen Sie aus, f&uuml;r welche Betriebssystemversionen und (allenfalls) Office-Versionen Sie Updates bereitstellen m&ouml;chten</li>
<li>Mehrfachnennungen sind m&ouml;glich</li>
<li>Klicken Sie <em>Start</em></li>
<li>Nach einiger Zeit sind die Updates bereit zur Installation</li>
<li>Starten Sie nun im client-Verzeichnis den <em>UpdateInstaller</em></li>
<li>Der Bequemlichkeit halber k&ouml;nnen Sie allenfalls die Option zum automatischen Reboot anw&auml;hlen</li>
<li>Starten Sie den Updater per Klick auf <em>Start</em></li>
</ul>
<p>
	Falls Sie mehrere Windows-Installationen aufdatieren m&ouml;chten, k&ouml;nnen Sie nachdem der UpdateGenerator seine Arbeit getan hat, das komplette Verzeichnis auf mehreren PCs nutzen, ohne die Updates immer wieder herunterzuladen.</p>
<p>Nach Fertigstellung des Updates sollten Sie nicht vergessen, Windows Update noch einmal durchzuf&uuml;hren &#8211; der Offline Updater erwischt nicht immer alle Updates.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Xen und beim Booten hängende Adaptec RAID Adapter</title>
		<link>https://www.omnespro.ch/post/xen-und-beim-booten-haengende-adaptec-raid-adapter/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 27 Dec 2023 21:14:29 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[aacraid]]></category>
		<category><![CDATA[adaptec]]></category>
		<category><![CDATA[gewusstwie]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[hint]]></category>
		<category><![CDATA[tom.aeby@omnespro.ch]]></category>
		<category><![CDATA[xen]]></category>
		<guid isPermaLink="false">https://omnespro.fuertests.ch/post/xen-und-beim-booten-haengende-adaptec-raid-adapter/</guid>

					<description><![CDATA[Herausforderung: Auf einem neuen Server wollten wir Debian+Xen installieren. Beim Booten hing der Server allerdings regelmässig, obwohl wir ihn ohne Xen Hypervisor problemlos booten konnten. Nach einigem Suchen konnten wir feststellen, dass Linux beim Zugriff auf die per Adaptec RAID 8405 eingebundenen Disk-Volumes hing. Offenbar wurde vor einiger Zeit eine Änderung im aacraid-Treiber vorgenommen, der [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Herausforderung: Auf einem neuen Server wollten wir Debian+Xen installieren. Beim Booten hing der Server allerdings regelmässig, obwohl wir ihn ohne Xen Hypervisor problemlos booten konnten.</p>
<p>Nach einigem Suchen konnten wir feststellen, dass Linux beim Zugriff auf die per Adaptec RAID 8405 eingebundenen Disk-Volumes hing. Offenbar wurde vor einiger Zeit eine Änderung im aacraid-Treiber vorgenommen, der genau die von uns beobachteten Hänger verursacht. Betroffen sind dabei unseres Wissens mindestens Debian, RedHat/CentOS, SuSE &#8211; vermutlich aber alle Distributionen.</p>
<p>Als Workaround hat in unserem Fall geholfen, den aacraid-Treiber mit der Option</p>
<pre><code>aac_sync_mode=1"</code></pre>
<p>
	zu verwenden. Da der Treiber bereits relativ früh im Bootprozedere benötigt wird verwenden wir die entsprechende Option bereits direkt auf der Kernel-Kommandozeile als</p>
<pre><code>aacraid.aac_sync_mode=1</code></pre>
<p>
	Unter Debian erreichen wir dies, indem wir den folgenden Eintrag in /etc/default/grub vornehmen:</p>
<pre><code>GRUB_CMDLINE_LINUX="aacraid.aac_sync_mode=1" 
</code></pre>
<p>
	Nicht vergessen: Nach Modifikation der Datei muss &#187;update-grub&#187; ausgeführt werden.</p>
<p>Wie Sie Argumente zur Kernel-Kommandozeile hinzufügen ist distributionsabhängig &#8211; konsultieren Sie die jeweilige Dokumentation.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Simples POP-Before-SMTP für Sendmail</title>
		<link>https://www.omnespro.ch/post/simples-pop-before-smtp-fuer-sendmail/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 27 Dec 2023 21:12:56 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[gewusstwie]]></category>
		<category><![CDATA[hint]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[pop]]></category>
		<category><![CDATA[relay]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[tom.aeby@omnespro.ch]]></category>
		<guid isPermaLink="false">https://omnespro.fuertests.ch/post/simples-pop-before-smtp-fuer-sendmail/</guid>

					<description><![CDATA[POP before SMTP (die Erlaubnis, Mail &#252;ber einen Server zu versenden, wenn man sich per POP3 oder IMAP vorg&#228;ngig erfolgreich angemeldet hat &#8211; und ohne SMTP-Authentifizierung)&#160;ist eigentlich nicht mehr empfehlenswert. Trotzdem begegnet uns dieses Relikt aus &#228;lterer Zeit gelegentlich wieder, und dann ist es ganz praktisch, wenn man eine passende Implementation, die sich rasend schnell [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>POP before SMTP (die Erlaubnis, Mail &uuml;ber einen Server zu versenden, wenn man sich per POP3 oder IMAP vorg&auml;ngig erfolgreich angemeldet hat &#8211; und ohne SMTP-Authentifizierung)&nbsp;ist eigentlich nicht mehr empfehlenswert. Trotzdem begegnet uns dieses Relikt aus &auml;lterer Zeit gelegentlich wieder, und dann ist es ganz praktisch, wenn man eine passende Implementation, die sich rasend schnell und (fast) ohne Konfiguration einsetzen l&auml;sst, ganz praktisch.</p>
<p>Wir stellen&nbsp;eine solche auf unserer <a href="http://www.omnespro.ch/support/downloads/">Download</a>-Seite zur Verf&uuml;gung. Die Funktionsweise ist betont simpel</p>
<ul>
<li>es handelt sich um ein einfaches Shell-Skript</li>
<li>das Sie aus Cron regelm&auml;ssig (1x pro Minute ist zu empfehlen) starten</li>
<li>es holt aus /var/log/syslog (Sie k&ouml;nnen es an Ihr System anpassen, indem Sie /var/log/syslog z.B. durch /var/log/messages ersetzen) Logeintr&auml;ge erfolgreicher&nbsp;POP3/IMAP-Logins</li>
<li>unter /var/spool/pop-before-smtp merkt es sich die gefundenen IP-Adressen und den Zeitpunkt, wann diese zuletzt im Log aufgetaucht sind</li>
<li>aus dieser Information generiert es Eintr&auml;ge in /etc/mail/access und l&ouml;scht sie (nach 50 Minuten) auch wieder</li>
</ul>
<p>
	Die meisten Sendmail-Standardinstallationen verwenden sowieso /etc/mail/access, d.h. das Skript funktioniert sofort ohne &Auml;nderung an der Sendmail-Konfiguration. Sollte dies doch nicht der Fall sein, so l&auml;sst sich die access-Datei so in sendmail.mc konfigurieren:</p>
<pre><code>FEATURE(`access_db', , `skip')dnl</code></pre>
<p>
	Falls die Access-Datei in Ihrem Fall nicht unter /etc/mail liegt, passen Sie den Pfad im Skript an.</p>
<p>Trotzdem erwarten Sie bitte keine Wunder. Es handelt sich um eine schreiend einfache Quick&amp;Dirty-L&ouml;sung, die uns auch schon aus der Patsche geholfen hat. Sie hat auch Nachteile:</p>
<ul>
<li>Unterst&uuml;tzung f&uuml;r Dovecot und Courier ist implementiert.&nbsp;Verwenden Sie einen POP/IMAP-Server, mit dem das Skript nicht zusammenarbeitet, dann m&uuml;ssen die grep- und sed-Anweisungen passend angepasst&nbsp;werden.</li>
<li>Zur Zeit unterst&uuml;tzt das Skript IPv6-Adressen nicht</li>
<li>Der Aufruf per Cron sorgt daf&uuml;r, dass maximal die Zeit zwischen zwei Aufrufen vergehen kann, bis SMTP nach einer erfolgreichen Anmeldung freigeschaltet wird</li>
<li>Da das Skript direkt /etc/mail/access bearbeitet, muss man bei manuellen &Auml;nderungen darauf R&uuml;cksicht nehmen, dass die Datei w&auml;hrend des Bearbeitens auch mal aufdatiert werden kann.</li>
<li>Weder das Abarbeiten des Logs per tail noch&nbsp;das Aufnehmen von Adressen in /etc/mail/access ist&nbsp;besonders elegant oder effizient und nur f&uuml;r kleine Mailserver geeignet. Verwalten Sie auf Ihrem Mailserver tausende von Mailboxen, dann nehmen Sie sich bitte die Zeit, eine effizientere Implementation zu verwenden oder noch besser POP-Before-SMTP auszumerzen.</li>
<li>IPv6-Unterst&uuml;tzung fehlt noch.</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Surfen per SSH-Tunnel (zu Test- und Admin-Zwecken)</title>
		<link>https://www.omnespro.ch/post/surfen-per-ssh-tunnel-zu-test-und-admin-zwecken/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 27 Dec 2023 21:12:56 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[gewusstwie]]></category>
		<category><![CDATA[hint]]></category>
		<category><![CDATA[SOCKS]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[tom.aeby@omnespro.ch]]></category>
		<category><![CDATA[Tunnel]]></category>
		<guid isPermaLink="false">https://omnespro.fuertests.ch/post/surfen-per-ssh-tunnel-zu-test-und-admin-zwecken/</guid>

					<description><![CDATA[Als Systemadministratoren sind wir gelegentlich in der Situation, einen Web-Browser in einem entfernten Netz zu ben&#246;tigen, ohne auf eine Maschine mit graphischer Oberfl&#228;che oder ein vollwertiges VPN zur Verf&#252;gung zu haben, z.B. um auf webbasierte Ger&#228;tekonfigurationen zuzugreifen Probleme der Anwender vor Ort mit dem Internetzugang nachvollziehen zu k&#246;nnen Tats&#228;chlich gen&#252;gt ein Shell-Zugang per SSH, um [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Als Systemadministratoren sind wir gelegentlich in der Situation, einen Web-Browser in einem entfernten Netz zu ben&ouml;tigen, ohne auf eine Maschine mit graphischer Oberfl&auml;che oder ein vollwertiges VPN zur Verf&uuml;gung zu haben, z.B. um</p>
<ul>
<li>auf webbasierte Ger&auml;tekonfigurationen zuzugreifen</li>
<li>Probleme der Anwender vor Ort mit dem Internetzugang nachvollziehen zu k&ouml;nnen</li>
</ul>
<p>
	Tats&auml;chlich gen&uuml;gt ein Shell-Zugang per SSH, um notfalls wie im entfernten Netz zu surfen. Dazu gehen wir wie folgt vor:</p>
<ul>
<li>einen SSH-Tunnel auf einen Rechner vor Ort aufbauen
<ul>
<li>per Kommandozeile (OpenSSH unter Linux oder auf dem Mac): Verwenden Sie zum Einloggen zus&auml;tzlich die Option <em>-D 2001</em></li>
<li>per Putty: Navigieren Sie in der Oberfl&auml;che zu <em>SSH / Tunnels</em>, tragen unter <em>Source Port</em> 2001 ein, selektieren die Option <em>Dynamic</em> und f&uuml;gen mit <em>Add</em> dieses Portforwarding hinzu. Loggen Sie sich nun wie gewohnt per Putty ein.</li>
</ul>
</li>
<li>Starten Sie einen Browser. In den Einstellungen (unter Windows: Internet Optionen) konfigurieren Sie einen manuellen Proxy: Geben Sie als <em>SOCKS Host</em> &quot;localhost&quot; an und als <em>Port </em>&quot;2001&quot;</li>
<li>Wenn Sie nun einen URL &ouml;ffnen, wird die Anforderung durch den SSH-Tunnel auf den entfernten Rechner &uuml;bertragen und von diesem ausgef&uuml;hrt</li>
<li>Beachten Sie, dass auf diese Weise die Namensaufl&ouml;sung immer noch lokal bei Ihnen stattfindet &#8211; Sie werden also Ger&auml;te&nbsp;vor Ort eher mit IP-Adresse als mit Namen ansprechen (Sie k&ouml;nnen mit der Proxy-DNS-Einstellung experimentieren, wenn Ihr Browser Sie anbietet)</li>
</ul>
<p>
	Vergessen Sie nicht, nach getaner Arbeit die Proxy-Einstellung wieder zu entfernen.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Proxmox und DRBD für verteiltes Storage in kleinen Clustern</title>
		<link>https://www.omnespro.ch/post/proxmox-und-drbd-fuer-verteiltes-storage-in-kleinen-clustern/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 27 Dec 2023 21:12:55 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[DRBD]]></category>
		<category><![CDATA[gewusstwie]]></category>
		<category><![CDATA[hint]]></category>
		<category><![CDATA[Proxmox]]></category>
		<category><![CDATA[tom.aeby@omnespro.ch]]></category>
		<guid isPermaLink="false">https://omnespro.fuertests.ch/post/proxmox-und-drbd-fuer-verteiltes-storage-in-kleinen-clustern/</guid>

					<description><![CDATA[Ausgangslage Die bevorzugte Methode, um verteilten Storage in Proxmox-Clustern zu verwenden, ist aktuell CEPH. CEPH ist ein grossartiger Ansatz, jedoch auch nicht ganz einfach in Betrieb zu nehmen und f&#252;r einen kleinen Cluster eigentlich &#252;berdimensioniert. DRBD hingegen ist recht schnell in Betrieb genommen, und f&#252;gt sich problemlos in eine Serverinstallation mit LVM ein. Der&#160;Storage-Treiber basierend [&#8230;]]]></description>
										<content:encoded><![CDATA[<h3>Ausgangslage</h3>
<p>Die bevorzugte Methode, um verteilten Storage in Proxmox-Clustern zu verwenden, ist aktuell CEPH. CEPH ist ein grossartiger Ansatz, jedoch auch nicht ganz einfach in Betrieb zu nehmen und f&uuml;r einen kleinen Cluster eigentlich &uuml;berdimensioniert.</p>
<p>DRBD hingegen ist recht schnell in Betrieb genommen, und f&uuml;gt sich problemlos in eine Serverinstallation mit LVM ein.</p>
<p>Der&nbsp;Storage-Treiber basierend auf DRBD-Manager wird zwar mit Proxmox noch mitgeliefert, aber ist nicht mehr wirklich unterst&uuml;tzt, seit es um DRBD-Manager einiges Hin- und Her um dessen Lizenzierung gab.</p>
<p>Die im Moment im Proxmox-Wiki empfohlene Variante, zwei DRBD-Volumes zu verwenden, ist unflexibel, funktioniert eigentlich nur mit zwei Knoten, und bietet ein hohes Risiko.</p>
<h3>DRBD mit LVM ohne DRBD-Manager</h3>
<p>Wir haben uns deshalb entschieden, DRBD mit einem eigenen Storage-Plugin f&uuml;r uns wieder auf eine Weise verf&uuml;gbar zu machen, wie sie uns gut passt: Mit DRBD-Volumes aufsetzend auf LVM, aber ohne den DRBD-Manager zu verwenden. In diesem Modell wird eine LVM-Volumegroup ben&ouml;tigt (die aber z.B. mit einer lokalen Storage-Volumegroup identisch sein kann). Jede virtuelle Disk erh&auml;lt zwei LVM-Volumes: Eines f&uuml;r die Metadaten, eines f&uuml;r die Daten. Darauf aufsetzend wird ein DRBD-Volume konfiguriert mit Synchronisation gegen einen Partnerknoten. Die virtuelle Maschine kann also jederzeit auf einem der beiden Partnerknoten laufen. Gibt es mehr als zwei Knoten im Netz, so wird jede VM (und Disk) jeweils auf zwei Knoten lauff&auml;hig sein &#8211; auf Mehrfachspiegel via DRBD verzichten wir aus Performance- und Komplexit&auml;tsgr&uuml;nden.</p>
<p>	<strong>Bitte beachten Sie</strong>: Dieses Storage-Plugin basiert auf bestehenden Storage-Plugins von Proxmox und steht deshalb unter der AGP-Lizenz. Wir verwenden dieses Plugin selbst und stellen es so zur Verf&uuml;gung, wie es f&uuml;r unsere Zwecke taugt. Wir &uuml;bernehmen keinerlei Garantie daf&uuml;r, dass es Ihren Anforderungen entspricht.</p>
<p>&nbsp;</p>
<h3>Installation und Inbetriebnahme</h3>
<p>Bevor Sie DRBD in Betrieb nehmen sollten Sie daf&uuml;r sorgen, dass auf Ihrem System LVM aufgesetzt ist und mindestens eine Volumegroup existiert. Eine bereits bestehende Volumegroup ist in Ordnung, wenn es Sie nicht st&ouml;rt, dass Sie dann evtl. die DRBD-Volumes dann auch in dieser als Inhalt auftauchen.</p>
<p>Unser DRBD-Storage-Plugin finden Sie unter <a href="https://www.omnespro.ch/support/downloads/">Downloads</a>&nbsp;als Debian-Paket. Laden Sie es herunter und installieren es auf allen Knoten mit</p>
<pre><code>apt install ./pvedrbd-*.deb</code></pre>
<p>
	Unter /etc/pve/storage.cfg wird automatisch eine Standardkonfiguration eingerichtet. F&uuml;r ganz einfache F&auml;lle sollte dies bereits gen&uuml;gen, aber es lohnt sich vielleicht, an dieser Stelle kurz ein bisschen nachzudenken, wie der Cluster aussehen soll. In der Konfigurationsdatei:</p>
<pre><code>voldrbd: drbdstor
    vgname sys
    shared
    #peers 
    #peerips
</code></pre>
<p>
	L&auml;sst sich mit der Option vgname die&nbsp;zu verwendende Volume Group konfigurieren. Standardm&auml;ssig wird einfach die erste gefundene verwendet. Die auskommentierten Optionen peers und peerips sollten eine Liste der Knoten, auf denen DRBD Volumes anlegen soll sowie deren IP-Adressen eingetragen werden. Wir hier nichts angegeben, so werden alle Proxmox-Knoten im Cluster mit der IP verwendet, auf die deren Namen aufl&ouml;st.</p>
<p>In allen nicht trivialen Clustern ist es anzuraten, auf jedem Rechner ein separates Interface f&uuml;r die DRBD-Synchronisation zu verwenden. Dessen IP-Adresse wird unter peerips eingetragen. F&uuml;r einen einfachen Zwei-Knoten-Cluster mit den Knoten pve1 und pve2 und den IP-Adressen im Synchronisationsnetz 192.168.33.1 und 192.168.33.2 tragen Sie also in storage.cfg folgendes ein:</p>
<pre><code>  peers pve1 pve2
  peerips 192.168.33.1 192.168.33.2</code></pre>
<p>
	Nach einem Nuestart des pvedaemon sollte nun das Storage <em>drbdstore</em> auftauchen und verwendet werden k&ouml;nnen.</p>
<p>&nbsp;</p>
<h3>Verwendung mit nur einem Knoten</h3>
<p>Beim Aufsetzen eines Clusters kann es notwendig sein, die VMs schon mal aufzusetzen, obwohl noch kein zweiter Knoten vorhanden ist. Verwenden Sie dann als zweiten Knoten (peers) den Namen none und seine k&uuml;nftige IP-Adresse unter peerips. So lassen sich die DRBD-Volumes noch ohne Synchronisationspartner aufsetzen.</p>
<p>Zur Zeit ist ein sp&auml;teres Aufsetzen der Synchronisation noch mit Handarbeit verbunden. Dazu in einem sp&auml;teren Artikel mehr.</p>
<p>&nbsp;</p>
<h3>Verwendung mit mehr als zwei Knoten</h3>
<p>Die aufgesetzten DRBD-Volumes werden &#8211; falls mehr als ein Knoten vorhanden ist &#8211; immer paarweise synchronisiert. Mehrfachspiegel werden in dieser einfachen Konfiguration nicht unterst&uuml;tzt. Sie k&ouml;nnen steuern, auf welchen Knoten Spiegel eingerichtet werden: Wenn Sie eine virtuelle Disk auf einem Knoten einrichten, dann wird der Synchronisationspartner auf dem n&auml;chsten Knoten in der peer-Liste eingerichtet.</p>
<p>Ein sp&auml;terer Umzug des Synchronisationspartners ist zur Zeit noch Handarbeit. Dazu in einem sp&auml;teren Artikel mehr.</p>
<p>&nbsp;</p>
<h3>Live-Migration</h3>
<p>In der Standardkonfiguration von DRBD nach der Installation ist kein Dual-Primary-Modus konfiguriert und folgerichtig muss eine VM zur Migration zuerst heruntergefahren werden, bevor die VM auf dem Partnerknoten hochgefahren werden kann.</p>
<p>M&ouml;chten Sie zwingend Live-Migration nutzen, dann m&uuml;ssen Sie in DRBD den Dual-Primary-Modus konfigurieren.</p>
<p>Dies bietet jedoch auch Risiken!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Samba 4 AD: Gruppe mit Berechtigungen für Domänenbeitritt versehen</title>
		<link>https://www.omnespro.ch/post/samba-4-ad-gruppe-mit-berechtigungen-fuer-domaenenbeitritt-versehen/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 27 Dec 2023 21:12:55 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[ad]]></category>
		<category><![CDATA[domainjoin]]></category>
		<category><![CDATA[gewusstwie]]></category>
		<category><![CDATA[hint]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tom.aeby@omnespro.ch]]></category>
		<guid isPermaLink="false">https://omnespro.fuertests.ch/post/samba-4-ad-gruppe-mit-berechtigungen-fuer-domaenenbeitritt-versehen/</guid>

					<description><![CDATA[Ein auf Samba 4 basierendes Active Directory kann mit den (graphischen) Tools von Microsoft verwaltet werden. Oftmals ist es aber ganz praktisch, wenn man auf dem Server selbst die eine oder andere Aufgabe versehen kann ohne sich durch die AD-Tools auf einem Windows-Rechner quälen zu müssen. Eine dieser ganz simplen und oft benötigten Aufgaben ist [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Ein auf Samba 4 basierendes Active Directory kann mit den (graphischen) Tools von Microsoft verwaltet werden. Oftmals ist es aber ganz praktisch, wenn man auf dem Server selbst die eine oder andere Aufgabe versehen kann ohne sich durch die AD-Tools auf einem Windows-Rechner quälen zu müssen.</p>
<p>Eine dieser ganz simplen und oft benötigten Aufgaben ist das Einrichten einer Gruppe, deren Mitglieder das Recht erhalten, Rechner in die Domäne aufzunehmen. Tatsächlich ist diese Aufgabe mit samba-tool zu bewältigen, auch wenn die Lösung alles andere als naheliegend ist.</p>
<p>Wir verwenden dazu das folgende Skript:</p>
<pre><code>#!/bin/sh

user=Administrator
stty -echo
read -p "Password for $user: " pw
echo ""
stty echo
read -p "Group: " group

objectsid=`ldbsearch -H ldap://localhost  \
-U "Administrator%$pw" "(&amp;(objectclass=group)(cn=$group))" \
objectSid | \
sed -e ':a;$!{N;ba};s/\n //g' -e 's/.*objectSid: //' -e 's/\n.*//' -n -e '/^S-1/p'`
if [ "$objectsid" = "" ]; then
    echo Group $group not found
    exit 1
fi
echo "Group SID: $objectsid"

dn=`ldbsearch -H ldap://localhost  \
-U "Administrator%$pw" "(&amp;(objectclass=container)(cn=computers))" \
dn | \
sed -e ':a;$!{N;ba};s/\n //g' -e 's/.*dn: //' -e 's/\n.*//' -n -e '/=/p'`
if [ "$dn" = "" ]; then
    echo "Computers container not found"
    exit 1
fi
echo "Computers DN: $dn"

samba-tool dsacl set --action=allow --objectdn="$dn" \
--sddl="(OA;CI;CCDC;BF967A86-0DE6-11D0-A285-00AA003049E2;;$objectsid)"\
"(OA;CIIO;SWWP;F3A64788-5306-11D1-A9C5-0000F80367C1;BF967A86-0DE6-11D0"\
"-A285-00AA003049E2;$objectsid)(OA;CIIO;SWRPWP;72E39547-7B18-11D1-ADEF"\
"-00C04FD8D5CD;BF967A86-0DE6-11D0-A285-00AA003049E2;$objectsid)(OA;CIIO;"\
"RPWP;4C164200-20C0-11D0-A768-00AA006E0529;BF967A86-0DE6-11D0-A285-"\
"00AA003049E2;$objectsid)(OA;CIIO;CR;00299570-246D-11D0-A768-00AA006E0529;"\
"BF967A86-0DE6-11D0-A285-00AA003049E2;$objectsid)"

</code></pre>
<p>
	Um das Skript zu nutzen muss bereits eine Gruppe existieren. Deren Name wird vom Skript ebenso abgefragt wie das Passwort des Administrators. Per ldbsearch wird dann die SID der Gruppe und die DN des Computers-Container eruiert. Mittels samba-tool werden&nbsp;für die gefundene Gruppe die nötigen Berechtigungen erteilt.</p>
<p>Referenz:&nbsp;<a href="http://blog.stevecoinc.com/2017/04/delegating-domain-join-privileges-in.html" target="_blank">Delegating domain join privileges in Samba 4 from the command line (or not)</a>&nbsp;sowie<a href="http://www.selfadsi.org/deep-inside/ad-security-descriptors.htm" target="_blank">&nbsp;Active Directory Permissions : Security Descriptors</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
