<?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>Alonso.ch &#187; Sicherheit</title>
	<atom:link href="http://blog.alonso.ch/category/tech/sicherheit/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.alonso.ch</link>
	<description>Nonsport Blog</description>
	<lastBuildDate>Wed, 01 Feb 2012 08:33:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Postfix mit TLS erweitern</title>
		<link>http://blog.alonso.ch/tech/sicherheit/postfix-mit-tls-erweitern/</link>
		<comments>http://blog.alonso.ch/tech/sicherheit/postfix-mit-tls-erweitern/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 03:02:12 +0000</pubDate>
		<dc:creator>Alonso</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[TLS]]></category>
		<category><![CDATA[Zertifikat]]></category>

		<guid isPermaLink="false">http://blog.alonso.ch/?p=73</guid>
		<description><![CDATA[Aus aktuellem Anlass ist es nun höchste Zeit, Submission idealerweise mit TLS (optional) zu aktivieren. Folgendes Mini HowTo zeigt die Vorgehensweise unter Debian Lenny mit einem selbst signierten Zertifikat Als erstes sollte &#8211; sofern notwendig &#8211; &#8220;submission&#8221; freigeschaltet werden. Dazu müssen folgende Zeilen in der master.cf einkommentiert werden: /etc/postfix/master.cf submission inet n - - - [...]]]></description>
			<content:encoded><![CDATA[<p>Aus <a href="http://blog.alonso.ch/paste-bin/byebye-port-25/">aktuellem Anlass</a> ist es nun höchste Zeit, Submission idealerweise mit TLS (optional) zu aktivieren.</p>
<p>Folgendes Mini HowTo zeigt die Vorgehensweise unter Debian Lenny mit einem selbst signierten Zertifikat<br />
<span id="more-73"></span><br />
Als erstes sollte &#8211; sofern notwendig &#8211; &#8220;submission&#8221; freigeschaltet werden. Dazu müssen folgende Zeilen in der master.cf einkommentiert werden:</p>
<p><strong>/etc/postfix/master.cf</strong></p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">submission inet n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=no
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject</pre></div></div>

<p>Danach legen wir einen neuen Ordner für die benötigten Zertifikate an:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>ssl
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>ssl</pre></div></div>

<p>Nun können wir einen privaten RSA Key generieren (2048 Bit)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">openssl genrsa <span style="color: #660033;">-out</span> smtp.key <span style="color: #000000;">2048</span></pre></div></div>

<p>Weiter gehts mit dem CSR (Certificate Signing Request)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">openssl req <span style="color: #660033;">-new</span> <span style="color: #660033;">-key</span> smtp.key <span style="color: #660033;">-out</span> smtp.csr</pre></div></div>

<p>Die entsprechenden Angaben sollten mehr oder weniger seriös ausgefüllt werden. Funktionsbezogen ist allerdings nur der CN (Common Name). Hier muss der Hostname des Mailservers eingetragen werden &#8211; oder ein entsprechender Wildcard (z.B. smtp.beispieldomain.ch oder *.beispieldomain.ch).</p>
<p>Nun können wir unser Zertifikat anlegen (In diesem Beispiel 365 Tage gültig)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">openssl x509 <span style="color: #660033;">-req</span> <span style="color: #660033;">-days</span> <span style="color: #000000;">365</span> <span style="color: #660033;">-in</span> smtp.csr <span style="color: #660033;">-out</span> smtp.cert <span style="color: #660033;">-signkey</span> smtp.key</pre></div></div>

<p>Nun ergänzen wir noch die main.cf, oder passen die bereits vorhanden Werte an.</p>
<p><strong>/etc/postfix/main.cf</strong></p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">smtpd_tls_auth_only = no
smtpd_enforce_tls = no
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_cert_file = /etc/postfix/ssl/smtp.cert
smtpd_tls_key_file = /etc/postfix/ssl/smtp.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom</pre></div></div>

<p>Mit dem Parameter <em>smtpd_tls_security_level</em> kann bestimmt werden, ob auch unverschlüsselte Verbindungen erlaubt sind. In diesem Beispiel überlassen wir die Entscheidung über eine allfällige Verschlüsselung beim Client und setzten den Wert daher auf &#8220;may&#8221;.</p>
<p>Der Parameter <em>smtpd_tls_auth_only</em> definiert, ob nur noch mittels TLS Authentifiziert werden kann. Dies ist bei allgemeinen Mailservern nicht unbedingt empfehlenswert, da sich sonst massenhaft <em>relay access denied</em> Fehler ansammeln werden durch eine &#8220;fehlgeschlagene&#8221; Authentifizierung von &#8220;dummen&#8221; clients.<br />
Sicherheitstechnisch müsste dieser Wert allerdings defenitiv aktiviert sein.</p>
<p>Danach noch Postfix neu initialisieren &#8211; und testen.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">postfix reload</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.alonso.ch/tech/sicherheit/postfix-mit-tls-erweitern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ByeBye Port 25</title>
		<link>http://blog.alonso.ch/paste-bin/byebye-port-25/</link>
		<comments>http://blog.alonso.ch/paste-bin/byebye-port-25/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 02:36:07 +0000</pubDate>
		<dc:creator>Alonso</dc:creator>
				<category><![CDATA[paste.bin]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[E-Mail]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[Swisscom]]></category>
		<category><![CDATA[TLS]]></category>

		<guid isPermaLink="false">http://blog.alonso.ch/?p=70</guid>
		<description><![CDATA[Viele DSL/Cable Provider neigen momentan mehr oder weniger berechtigterweise dazu den normalen SMTP Port 25 für ausgehende Mails zu sperren. Ein aktuelles Beispiel wäre momentan gerade Swisscom/Bluewin, wie Inside-IT berichtet. Im aktuellen Fall erhällt der heimische Nutzer folgende Zustellmeldung per E-Mail zurückgeschickt: Ihre Nachricht hat einige oder alle Empfänger nicht erreicht. Betreff: ***** Gesendet am: [...]]]></description>
			<content:encoded><![CDATA[<p>Viele DSL/Cable Provider neigen momentan mehr oder weniger berechtigterweise dazu den normalen SMTP Port 25 für ausgehende Mails zu sperren. Ein aktuelles Beispiel wäre momentan gerade Swisscom/Bluewin, wie <a href="http://www.inside-it.ch/frontend/insideit?_d=_article&#038;site=ii&#038;news.id=20588">Inside-IT</a> berichtet.<br />
<span id="more-70"></span><br />
Im aktuellen Fall erhällt der heimische Nutzer folgende Zustellmeldung per E-Mail zurückgeschickt:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Ihre Nachricht hat einige oder alle Empfänger nicht erreicht.
      Betreff:  ***** 
      Gesendet am:      dd.mm.yyyy HH:MM
Folgende(r) Empfänger kann/können nicht erreicht werden:
'*****' am dd.mm.yyyy HH:MM
573 573  
Authentifizierte Verbindungen nicht moeglich. Bitte nutzen Sie den Port 587 oder kontaktieren Sie uns unter 0800 800 800. 
Connexions authentifiees pas possible. Veuillez utiliser le port 587 ou nous appeler au 0800 800 800.
Collegamenti autenticati non possibili. Prego voi uso la porta 587 oppure contattare il numero 0800 800 800.
Authenticated connections not possible. Please use port 587 or contact us on 0800 800 800.</pre></div></div>

<p>Offenbar hat dieser Schritt bei vielen Providern erheblichen Supportaufwand produziert. Zumindest eröffneten <a href="http://support.hostpoint.ch/index.php?page=DefconDetailPage&#038;defcon=455">Hostpoint</a> und <a href="http://www.cyon.ch/status/statusentry.php?id=365">Cyon</a> Statustickets zu dieser Problematik. Ebenfalls wurde auf der <a href="http://www.mail-archive.com/swinog@lists.swinog.ch/msg04276.html">Swinog Mailingliste</a> ordentlich darüber diskutiert.</p>
<p>Offiziell will man dadurch das versenden von Spam über Mailserver ohne Authentifizierung/Verschlüsselung unterbinden (z.B. durch Viren). Ob die entsprechenden Mailserver unter Port 587 (Submission) aber sicherer konfiguriert sind bezweifle ich. Zumal auch hier eine Verschlüsselung (TLS) nicht zwingend erforderlich ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alonso.ch/paste-bin/byebye-port-25/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Setup und Konfiguration &#8211; Sicherheit vs. Performance</title>
		<link>http://blog.alonso.ch/tech/sicherheit/php-setup-und-konfiguration-sicherheit-vs-performance/</link>
		<comments>http://blog.alonso.ch/tech/sicherheit/php-setup-und-konfiguration-sicherheit-vs-performance/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 00:13:54 +0000</pubDate>
		<dc:creator>Alonso</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[chroot]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[open_basedir]]></category>
		<category><![CDATA[php.ini]]></category>
		<category><![CDATA[safe_mode]]></category>
		<category><![CDATA[suexec]]></category>
		<category><![CDATA[suPHP]]></category>

		<guid isPermaLink="false">http://blog.alonso.ch/?p=65</guid>
		<description><![CDATA[PHP wird den Ruf der unsicheren Bastlerumgebung einfach nicht los. Selbst wenn einige Sicherheitsprobleme in der Tat gravierend waren &#8211; wurde der wirkliche Schaden durch ein falsches Setup der PHP-Umgebung noch verschlimmert oder ausgeweitet. Dieser Artikel soll konzeptionell aufzeigen wie Serverseitig eine möglichst ideale Umgebung bereitgestellt werden kann. Die Sicherheit innerhalb von PHP Scripts wird [...]]]></description>
			<content:encoded><![CDATA[<p>PHP wird den Ruf der unsicheren Bastlerumgebung einfach nicht los. Selbst wenn einige Sicherheitsprobleme in der Tat gravierend waren &#8211; wurde der wirkliche Schaden durch ein falsches Setup der PHP-Umgebung noch verschlimmert oder ausgeweitet. </p>
<p>Dieser Artikel soll konzeptionell aufzeigen wie Serverseitig eine möglichst ideale Umgebung bereitgestellt werden kann. Die Sicherheit innerhalb von PHP Scripts wird hier nicht behandelt.</p>
<p><span id="more-65"></span><br />
<strong>Setup</strong><br />
PHP kann grundsätzlich auf 2 Arten installiert/betrieben werden.</p>
<ul>
<li>Als Modul eigebunden in den Webserver (z.B. Apache). Somit läuft der PHP-Interpreter sammt seinen Modulen persistent und logischerweis unter demselben User wie der Webserver selbst. Dadurch hat PHP grundsätzlich auch dieselben Rechte wie der Webserver auf dem System. Von PHP erstellte Dateien gehören somit danach auch dem &#8220;Webserver&#8221; &#8211; und nicht dem User. Diese können danach möglicherweise per FTP z.B. nicht gelöscht oder geändert werden.<br />
Ein paar spezifische Manipulationen an der Konfigurationsdatei php.ini sind pro vHost möglich.</p>
<p>Diese Variante eignet sich primär für einzelne Webprojekte &#8211; auf keinen Fall für Shared Hosting.</li>
<li>Als CGI. Wenn ein PHP-Script &#8220;interpretiert&#8221; werden muss &#8211; wird dazu ein neuer Prozess gestartet, der zuerst PHP initialisiert, die Module lädt &#8211; und dann erst seine Arbeit startet. Defaultmässig läuft die CGI-Variante auch unter dem User des Webservers.<br />
Der Resourcenverbrauch gegenüber der Modul-Variante ist natürlich massiv höher &#8211; da neben dem Overhead durch das starten des Threads die Module nicht geshared werden können.</li>
</ul>
<p>Auf den ersten Blick hat somit Variante 2 eigentlich nur Nachteile. ABER: Durch zusätzliche Wrapper können die Threads unter dem eigentlichen User des vHosts ausgeführt werden. Hier gibt es aktuell <a href="http://httpd.apache.org/docs/2.0/suexec.html">suExec</a> und <a href="http://www.suphp.org">suPHP</a>. Ersteres simuliert näherungsweise die Modul Variante &#8211; da die Threads noch künstlich am Leben erhalten werden können für allfällige weitere Aufgaben. suPHP startet und beendet dagegen den Thread bei jeder &#8220;Interpretation&#8221;</p>
<p>Pro vhost kann hier eine komplett eigene php.ini verwendet werden &#8211; sowie (wenn erwünscht) eine eigene PHP-Versionen. Von PHP erstelle Files gehören danach vHost-User und können problemlos per FTP mutiert werden.</p>
<p>Somit hätte man also Grundsätzlich die &#8220;Sicherheit&#8221; durch den Thread sichergestellt &#8211; und hat eigentlich bereits ansatzweise eine <a href="http://de.wikipedia.org/wiki/Chroot">chroot()</a> Umgebung für PHP.</p>
<p>Als Systemadmin hat man durch diese Variante zudem den grossen Vorteil, das sofort ersichtlich ist wem welche Threads gehören.</p>
<p><strong>Konfiguration</strong><br />
Weiter ist die Konfiguration von PHP vorsichtig zu definieren. Folgende Funktionen sollten wirklich nur bei Bedarf aktiviert werden:</p>
<ul>
<li><a href="http://ch2.php.net/manual/de/function.exec.php">exec()</a></li>
<li><a href="http://ch2.php.net/manual/de/function.passthru.php">passthru()</a></li>
<li><a href="http://ch2.php.net/manual/de/function.system.php">system()</a></li>
<li><a href="http://ch2.php.net/manual/de/function.popen.php">popen()</a></li>
<li><a href="http://ch2.php.net/manual/de/function.ini-set.php">ini_set()</a></li>
<li><a href="http://ch2.php.net/manual/de/function.ini-restore.php">ini_restore()</a></li>
</ul>
<p>&#8211;>Einzelne Funktionen können gezielt mittels der php.ini gesperrt werden. </p>
<p><strong>open_basedir</strong><br />
Sehr wichtig ist ausserdem das <a href="http://www.php.net/manual/en/ini.core.php#ini.open-basedir">open_basedir</a>. Leider werden die Sicherheitsmassnahmen nicht selten ganz alleine auf diese Einstellung beschränkt. Man muss sich aber bewusst sein dass das open_basedir lediglich für Filehandles berücksichtigt wird &#8211; nicht aber für exec, system etc..  </p>
<p><strong>safe_mode?</strong><br />
Der <a href="http://www.php.net/manual/en/ini.sect.safe-mode.php">safe_mode</a> war ein etwas unglücklicher Ansatz, die PHP Umgebung abzusichern. In der Praxis sind dadurch mehr Probleme als Lösungen entstanden. Da der safe_mode zukünftig wieder komplett wegfällt &#8211; sollten wir diesen nicht weiter berücksichtigen. </p>
<p><strong>Kontrolle</strong><br />
Als Anwender kann das PHP-Setup über ein einfaches <a href="http://ch.php.net/manual/de/function.phpinfo.php">phpinfo()</a> jederzeit ermittelt werden.</p>
<p>Der Parameter &#8220;Server API&#8221; zeigt z.B. auf &#8211; wie PHP installiert worden ist.</p>
<ul>
<li>Apache-Modul: Apache 2.0 Handler</li>
<li>CGI: CGI/FastCGI</li>
</ul>
<p><strong>Fazit</strong><br />
PHP als Modul eignet sich primär für Einzelprojekte. Im Shared Hosting Bereich ist diese Variante nur für den Betreiber interressant, da effizient und somit lukrativ. Als Kunde (Shared Hosting) sollten sie eine solche Dienstleistung auf keinen Fall unterstützen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alonso.ch/tech/sicherheit/php-setup-und-konfiguration-sicherheit-vs-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Was das &#8220;Internet&#8221; über sie weiss..</title>
		<link>http://blog.alonso.ch/tech/sicherheit/was-das-internet-uber-sie-weiss/</link>
		<comments>http://blog.alonso.ch/tech/sicherheit/was-das-internet-uber-sie-weiss/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 17:34:41 +0000</pubDate>
		<dc:creator>Alonso</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Datenschutz]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Historie]]></category>

		<guid isPermaLink="false">http://blog.alonso.ch/?p=18</guid>
		<description><![CDATA[Jeder gängige Browser logt im normalen Betriebsmodus jeden Seitenbesuch und legt diesen in einer Chronik ab. Diese Chronik wird auch verwendet, um Links auf HTML-Seiten farblich zu kennzeichen &#8211; so werden z.B. Links zu bereits besuchten Webseiten farblich anders dargestellt als &#8220;neue&#8221; Links. Diese Funktionalität ist seit Jahren in allen gängigen Browsern integriert und akzeptiert. [...]]]></description>
			<content:encoded><![CDATA[<p>Jeder gängige Browser logt im normalen Betriebsmodus jeden Seitenbesuch und legt diesen in einer Chronik ab. Diese Chronik wird auch verwendet, um Links auf HTML-Seiten farblich zu kennzeichen &#8211; so werden z.B. Links zu bereits besuchten Webseiten farblich anders dargestellt als &#8220;neue&#8221; Links. Diese Funktionalität ist seit Jahren in allen gängigen Browsern integriert und akzeptiert.</p>
<p>Aber wussten sie, dass diese Informationen auch von fremden Webseiten ausgelesen werden können?</p>
<p>Lassen sie sich überraschen:  <a title="Was das Internet über sie weiss" href="http://www.whattheinternetknowsaboutyou.com" target="_blank">http://www.whattheinternetknowsaboutyou.com</a></p>
<p>Mittels einem kleinen Script werden im Browser des &#8220;Opfers&#8221; diverse URL&#8217;s durchgetestet. Dieser Test macht nichts anderes als die Auswertung &#8211; in welcher &#8220;Farbe&#8221; der Link nun dargestellt wird. So kann ermittelt werden ob diese Seite in der lokalen Browserhistorie vorhanden ist, und somit besucht wurde. Möglich ist dies beispielsweise mittels der CSS-Pseudoklasse &#8220;visited&#8221;.</p>
<p><a href="http://de.selfhtml.org/css/eigenschaften/pseudoformate.htm">Weitere informationen zu diesen CSS-Pseudoklassen</a></p>
<p>Die Thematik mit der lokalen Browserchronik ist eigentlich ein alter Hut. Einen kriminellen Nutzen davon gibt es kaum, viel spannender dürfte sowas allerdings für Werbezwecke sein. Dennoch sind es &#8220;ihre&#8221; Daten &#8211; und sollten es auch bleiben.</p>
<p>Bei Mozilla ist diese Problematik längst bekannt, wie folgende 2 Tickets bestätigen:</p>
<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=57351" target="_blank">Ticket #57351</a>, bzw. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=147777" target="_blank">Ticket #147777</a></p>
<p>Für den Firefox gibt es aktuell folgende Gegenmassnahme:</p>
<p><span id="more-18"></span>Installieren sie das Add-On &#8220;<a href="https://addons.mozilla.org/de/firefox/addon/12312" target="_blank">Link Status</a>&#8221;</p>
<p>Danach bei den Extras-&gt;Add-Ons-&gt;Linkstatus:Einstellungen&#8221;Bereits besuchte Links nicht stilisieren&#8221; markieren und bestätigen:</p>
<p><img class="alignnone size-full wp-image-19" title="Link Status.gif" src="http://blog.alonso.ch/wp-content/uploads/Link-Status.gif.gif" alt="" width="241" height="134" /></p>
<p>Das war&#8217;s <img src='http://blog.alonso.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alonso.ch/tech/sicherheit/was-das-internet-uber-sie-weiss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

