<?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>Stempell &#187; mysql</title>
	<atom:link href="http://stempell.com/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://stempell.com</link>
	<description>Urlaubsfotos, Fun</description>
	<lastBuildDate>Mon, 14 May 2012 09:12:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Date für MySQL mit Zend</title>
		<link>http://stempell.com/2010/06/date-fur-mysql-mit-zend/</link>
		<comments>http://stempell.com/2010/06/date-fur-mysql-mit-zend/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 09:43:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Work Related]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://stempell.com/?p=543</guid>
		<description><![CDATA[Die Frage, wie man Datetime Felder in der MySQL mit PHP befüllen kann, wird normalerweise so beantwortet $now = date(Y-m-d H:i:s) Doch stattdessen kann man im Zend-Framework auch folgendes machen: $date = new Zend_Date(); $now = $date-&#62;toString(&#8216;yyyy-MM-dd HH:mm:ss&#8217;); Allerdings habe ich den Vorteil noch nicht gefunden]]></description>
			<content:encoded><![CDATA[<p>Die Frage, wie man Datetime Felder in der MySQL mit PHP befüllen kann, wird normalerweise so beantwortet</p>
<p><code><code>$now = date(Y-m-d H:i:s)</code></code></p>
<p>Doch stattdessen kann man im Zend-Framework auch folgendes machen:</p>
<p>$date = new Zend_Date();<br />
$now = $date-&gt;toString(&#8216;yyyy-MM-dd HH:mm:ss&#8217;);</p>
<p>Allerdings habe ich den Vorteil noch nicht gefunden <img src='http://stempell.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://stempell.com/2010/06/date-fur-mysql-mit-zend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL DATETIME from Bash date</title>
		<link>http://stempell.com/2009/10/mysql-datetime-from-bash-date/</link>
		<comments>http://stempell.com/2009/10/mysql-datetime-from-bash-date/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 09:04:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Work Related]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://stempell.com/?p=506</guid>
		<description><![CDATA[SELECT now( ) equals date +"%Y-%m-%d %H:%M:%S"]]></description>
			<content:encoded><![CDATA[<p>Just execute this:<br />
<code>$> date +"%Y-%m-%d %H:%M:%S"</code><br />
this will produce the same output as:<br />
<code> SELECT now( )</code> </p>
<p>Output: <code>2009-10-29 09:53:19</code></p>
]]></content:encoded>
			<wfw:commentRss>http://stempell.com/2009/10/mysql-datetime-from-bash-date/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Portknocking unter Debian &#8211; kleine Einführung</title>
		<link>http://stempell.com/2009/01/portknocking-unter-debian-kleine-einfuhrung/</link>
		<comments>http://stempell.com/2009/01/portknocking-unter-debian-kleine-einfuhrung/#comments</comments>
		<pubDate>Sat, 10 Jan 2009 17:16:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Work Related]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[portknocking]]></category>

		<guid isPermaLink="false">http://stempell.com/?p=168</guid>
		<description><![CDATA[Sicherheit ist für alle an das Internet angeschlossenen Systeme ein zentrales Thema. Ein effektiver Schutz ist nur per NAT, Firewall oder Deaktivierung unbenötigter Ports möglich. Die Deaktivierung von Ports ist unter Debian einfach, es bedeutet lediglich, den Dienst, der normalerweise auf diesem Port auf Anfragen wartet, nicht zu starten oder dem Dienst in seiner Konfiguration [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_171" class="wp-caption alignleft" style="width: 160px"><img class="size-thumbnail wp-image-171" title="Tür" src="http://stempell.com/wp-content/uploadz/2009/01/489px-l-door-150x150.png" alt="Einlass mittels Portknocking verlangen" width="150" height="150" /><p class="wp-caption-text">Einlass mittels Portknocking verlangen</p></div>
<p>Sicherheit ist für alle an das Internet angeschlossenen Systeme ein zentrales Thema. Ein effektiver Schutz ist nur per NAT, Firewall oder Deaktivierung unbenötigter Ports möglich. Die Deaktivierung von Ports ist unter Debian einfach, es bedeutet lediglich, den Dienst, der normalerweise auf diesem Port auf Anfragen wartet, nicht zu starten oder dem Dienst in seiner Konfiguration mitzuteilen, dass er als Netzwerkkarte nicht die an das Internet angeschlossene Netzwerkkarte verwenden soll, sondern das <em>Loopback Interface</em> (<em>127.0.0.1</em>). <span id="more-168"></span></p>
<p>Es handelt sich beim Firewalling und Dienstdeaktivierung jeweils um eine binäre Lösung, also entweder AN oder AUS, eine Selektion nach Herkunft der Anfrage ist nicht möglich und die Zugriffskontrolle obliegt dem Dienst, der an diesem Port &#8220;lauscht&#8221;. Je nach Qualität des Dienstes ist damit zu rechnen, dass dieser Dienst angreifbar ist, der Angreifer Zugriff auf den Betriebssystemprozess erlangt, der im schlimmsten Fall root Rechte hat und somit der Angreifer kompletten Zugriff auf das System hat. Ergänzend ist zu  erwähnen, dass der Zugriff auch über <em>/etc/hosts.allow</em> geregelt werden kann, leider ist dazu eine statische IP-Adresse erforderlich, die nicht jedermann zur Verfügung steht.</p>
<p>Das folgende Szenario beschreibt nun den typischen Anwendungfall einer Portknocking Lösung.<br />
Offen sind bei einem Webserver in aller Regel:</p>
<ul>
<li>Port: 21 FTP</li>
<li>Port: 22 SSH</li>
<li>Port: 80 WWW</li>
</ul>
<p>Alle anderen Ports sind geschlossen, da keinen weiteren Diensten Kommunikation mit dem Internet erlaubt ist. Ein prominentes Beispiel für einen Dienst, der lediglich nach &#8220;innen&#8221; kommuniziert, ist <em>mysqld </em>auf Port 3306.<br />
Ein Anforderung an dieses System war nun, dass die Datenbank auch von außen erreichbar sein soll. Die inhärente Unsicherheit verbietet dies eigentlich. Gesucht ist eine Lösung, die genau für eine IP-Adresse den Port öffnet und nach einiger Zeit selbstständig schließt. Genau dies ermöglicht <strong>Portknocking mit knockd</strong> in Verbindung mit einer Firewall, wie etwa <em>iptables</em>.</p>
<p>Vorraussetzung für die Umsetzung solch einer Lösung mit <em>knockd </em>ist ein installiertes und konfiguriertes <em>iptables</em>.</p>
<p>Beispielkonfiguration:</p>
<pre>#cat ./iptables-rules.sh</pre>
<pre>iptables --flush</pre>
<pre>#ssh</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -p tcp --dport 22 -j ACCEPT</pre>
<pre>iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT</pre>
<pre>iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT</pre>
<pre>iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT</pre>
<pre>#Postfix/Sendmail</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -p tcp --dport 25 -j ACCEPT</pre>
<pre>#FTP</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -p tcp --dport 20:21 -j ACCEPT</pre>
<pre>#passice FTP</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -p tcp --dport 50000:50050 -j ACCEPT</pre>
<pre>#HTTP</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -p tcp --dport 80 -j ACCEPT</pre>
<pre>#SSL/Apache</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -p tcp --dport 443 -j ACCEPT</pre>
<pre>#IMAP</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -p tcp --dport 143 -j ACCEPT</pre>
<pre>#IMAPS</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -p tcp --dport 993 -j ACCEPT</pre>
<pre>#POP3</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -p tcp --dport 110 -j ACCEPT</pre>
<pre>#POP3S</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -p tcp --dport 995 -j ACCEPT</pre>
<pre>#any traffic from localhost</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -s 127.0.0.1 -j ACCEPT</pre>
<pre>#ICMP</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -p icmp -j ACCEPT</pre>
<pre>#GLOBAL REJECT</pre>
<pre>iptables -A INPUT -d 85.214.25.36 -j REJECT</pre>
<p>So oder ähnlich wird die <em>iptables </em>Konfiguration auf dem System aussehen.</p>
<p>Im weiteren Vorgehen ist nun der Portknockdaemon zu installieren.</p>
<p>#apt-get install knockd</p>
<p>(Ich liebe debian)</p>
<p>Danach ist dieser in der <em>/etc/default/knockd</em> zu aktivieren und dort wird festgelegt, welche Netzwerkkarte benutzt wird.</p>
<pre>#cat /etc/default/knockd</pre>
<pre>START_KNOCKD=1</pre>
<pre>KNOCKD_OPTS="-i venet0:0"</pre>
<p>Im meinem Beispiel ist es ein VServer und damit die<em> venet0:0</em> Karte. Woanders vermutlich <em>eth0</em>&#8230;<br />
Danach muss noch festgelgt werden, welcher Dienst gestartet werden soll und auf welche Anklopfsequenz, der <em>knockd </em>reagieren soll. <strong>Hier ist Individualität gefragt, weil dies die Abschirmung überhaupt erst garantiert.</strong></p>
<p>Konfigurationsbeispiel:</p>
<pre>#cat /etc/knockd.conf</pre>
<pre>[options]</pre>
<pre>logfile = /var/log/knockd.log</pre>
<pre>[openMySQL]</pre>
<pre>sequence    = 10000,1000</pre>
<pre>seq_timeout = 5</pre>
<pre>start_command     = /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 3306 -j ACCEPT</pre>
<pre>tcpflags    = syn</pre>
<pre>Cmd_Timeout = 3600</pre>
<pre>stop_command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 3306 -j ACCEPT</pre>
<p>Wichig ist es den knockd nach jeder Änderung neu zu starten. Ich hab Stunden nach dem Fehler gesucht!</p>
<pre>#Portknock neu starten</pre>
<pre>#/etc/init.d/knockd restart</pre>
<p>Die Erklärung zur <em>knockd.conf</em> lässt sich gut per <em>man knockd</em> abrufen. Die Dokumentation ist gut gemacht und mit Beispielen versehen. Allgemein lässt sich sagen, dass Portknocking viel mächtiger ist, als ich es hier beschrieben habe. Wie man sehen kann, wird lediglich ein spezifiziertes Kommando ausgeführt und damit ist jede denkbare Aktion möglich (Mails versenden, Server neustarten, etc&#8230;).</p>
<p>Speziell an meiner <em>knockd.conf</em> ist jedoch, dass ich die neue Regel an den <strong>Anfang </strong>meiner Firewallkonfiguration schreibe. Dies geschieht über den Parameter <em>I (Insert)</em>, weil am Ende meiner Firewallkonfiguration alle unbekannten Pakete verworfen werden. Da wäre eine angehängte Regel wenig nützlich, weil sie nie ausgführt werden würde.</p>
<pre><em>Cmd_Timeout = 3600</em></pre>
<p>bewirkt, dass nach einer Stunde(3600 Sekunden) das <em>Stop_Command</em> ausgeführt wird. Dies ist für faule Nutzer (gibts Andere?) sehr nützlich.</p>
<p>Um im Beispiel zu bleiben:<br />
Die Pakete an Port <em>3306 </em>werden zwar nicht mehr verworfen, aber trotzdem ignoriert, weil keiner zuhört. Debiantypisch ist MySQL auf <em>127.0.0.1</em> eingestellt. Dies muss noch geändert werden:</p>
<pre>#vi /etc/mysql/my.cnf
bind-address            = 85.214.25.36
#/etc/init.d/mysql restart</pre>
<p>Jetzt ist der <em>mysqld </em>von außen erreichbar. Dank Portknocking nun auch nicht mehr hinter der Firewall versteckt.</p>
<p>Jetzt bleibt noch die Frage:<br />
<strong>WIE MACHE ICH DENN NUN PORTKNOCKING VON WINDOWS AUS?</strong></p>
<pre>c:\&gt;knock.exe IP SEQUENZ</pre>
<p>z.B.:</p>
<pre>c:\&gt;knock.exe 85.214.25.36 10000 1000</pre>
<p>Jetzt ist dieser Rechner für eine Stunde berechtigt, auf Port <em>3306 </em>zuzugreifen.</p>
<p><strong>UPDATE!</strong></p>
<p><strong>Solltet Ihr zu den armen Trotteln gehören, die Windows Vista einsetzen, ist unbedingt <a title="Download knock.exe für Windows Vista" href="http://www.zeroflux.org/proj/knock/files/knock-cygwin.zip">dieses Tool</a> zu verwenden.</strong></p>
<p>Links:</p>
<ul>
<li><a title="Dokumention englisch und Weiterführendes" href="http://www.portknocking.org/">http://www.portknocking.org/</a> &#8212; Dokumention englisch und Weiterführendes</li>
<li><a title="Download knock.exe" href="http://www.zeroflux.org/proj/knock/files/knock-win32.zip">http://www.zeroflux.org/proj/knock/files/knock-win32.zip</a> &#8212; knock.exe</li>
<li><a title="Download knock.exe für Windows Vista" href="http://www.zeroflux.org/proj/knock/files/knock-cygwin.zip">http://www.zeroflux.org/proj/knock/files/knock-cygwin.zip</a> &#8212; knock.exe für Vista ( geht auch für XP)</li>
<li><a title="Dokumentation und Beispiel" href="http://www.zeroflux.org/cgi-bin/cvstrac.cgi/knock/wiki">http://www.zeroflux.org/cgi-bin/cvstrac.cgi/knock/wiki</a> &#8212; Dokumentation und Beispiel</li>
<li><a title="Einstieg" href="http://de.wikipedia.org/wiki/Portknocking">http://de.wikipedia.org/wiki/Portknocking</a> &#8212; Einstieg</li>
<li><a title="Konfiguration iptables" href="http://www.howtoforge.com/linux_iptables_sarge">http://www.howtoforge.com/linux_iptables_sarge</a> &#8212; Konfiguration iptables</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://stempell.com/2009/01/portknocking-unter-debian-kleine-einfuhrung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

