<?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/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Bits, Bytes and my 5 cents &#187; Linux</title>
	<atom:link href="http://blog.encodingit.ch/category/os/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.encodingit.ch</link>
	<description>Life is just a technical game</description>
	<lastBuildDate>Wed, 08 Feb 2012 07:57:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Asus&#8217; Ultrabook UX31: keine CD / DVD, kein LAN, kein Linux</title>
		<link>http://blog.encodingit.ch/2012/01/asus-ultrabook-ux31-keine-cd-dvd-kein-lan-kein-linux/</link>
		<comments>http://blog.encodingit.ch/2012/01/asus-ultrabook-ux31-keine-cd-dvd-kein-lan-kein-linux/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 09:51:53 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Asus]]></category>
		<category><![CDATA[Planet]]></category>
		<category><![CDATA[Ultrabook]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=2911</guid>
		<description><![CDATA[Ultrabooks sollen ja die neue Generation von Computern darstellen. Schnell, klein und dünn sollen sie sein und ein Pendant zu all den computerähnlichen Tablets und Smartphones werden.
Persönlich gefällt mir die Idee der Ultrabooks sehr gut. Ich war schon immer ein Fan von kleinen, dünnen und leichten Notebooks. Doch ein Macbook Air, für mich das Vorbild eines leichten und dünnen Notebooks, wollte ich mir nie gönnen, da für mich die Preis- / Leistung nicht stimmt. Und da kommen Ultrabooks doch irgendwie sehr gelegen!
Doch da fragt man sich doch gleich, wenn die Dinger schon so dünn sind, auf was muss man denn verzichten? Irgendwo muss man ja Platz gespart haben.
Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/03/lvm-fur-linux-einrichten/' rel='bookmark' title='LVM für Linux einrichten'>LVM für Linux einrichten</a> <small>LVM ist eine andere Art von Festplatten Management, ähnlich einem...</small></li>
<li><a href='http://blog.encodingit.ch/2011/03/backup-und-restore-mit-linux/' rel='bookmark' title='Backup und Restore mit Linux'>Backup und Restore mit Linux</a> <small>Von den bisher vorgestellten Themen in LPIC 201 ist das...</small></li>
<li><a href='http://blog.encodingit.ch/2011/03/linux-von-acer-verbannt/' rel='bookmark' title='Linux von Acer verbannt'>Linux von Acer verbannt</a> <small>Da der Acer Aspire One von einer Kollegin nicht mehr...</small></li>
</ol><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>Ultrabooks sollen ja die neue Generation von Computern darstellen. Schnell, klein und dünn sollen sie sein und ein Pendant zu all den computerähnlichen Tablets und Smartphones werden.<br />
Persönlich gefällt mir die Idee der Ultrabooks sehr gut. Ich war schon immer ein Fan von kleinen, dünnen und leichten Notebooks. Doch ein Macbook Air, für mich das Vorbild eines leichten und dünnen Notebooks, wollte ich mir nie gönnen, da für mich die Preis- / Leistung nicht stimmt. Und da kommen Ultrabooks doch irgendwie sehr gelegen!<br />
Doch da fragt man sich doch gleich, wenn die Dinger schon so dünn sind, auf was muss man denn verzichten? Irgendwo muss man ja Platz gespart haben.</p>
<p>Nun meistens spart man bei der Grafik. Anstatt einer Grafikkarte, gibt es nur noch integrierte Grafik, doch dies ist ja bereits bei vielen aktuellen Laptops der Fall.<br />
Weiter verzichtet man auf ein optisches Laufwerk. Doch was, wenn man mal eine CD hat? Sind CD / DVD bei Notebooks überhaupt noch zeitgemäss?</p>
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
<p>Als ich mich dann so im Markt der Ultrabooks umgeschaut habe, gefiel mir ein bestimmtes Teil ganz besonders: Das Asus Ultrabook UX31!<br />
Sieht echt schick aus, ist dünn und leicht und hat trotzdem Power. Doch wo ist da der LAN-Anschluss verbaut? Genau, nirgends! LAN gibt es nur noch über USB, ganz wie es beim Air der Fall ist. Oder aber Internet via WLAN. Und da stellt sich mir wieder die Frage, versucht man hier das kabel-gebundene Netzwerk ein für alle mal durch die drahtlose Variante zu ersetzen? Ist es überhaupt noch nötig, dass künftige Notebooks LAN-Anschlüsse haben?</p>
<p><span id="more-2911"></span></p>
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
<p>Was ich persönlich sehr schade finde, zu Beginn der Netbooks hat sich Linux ja einigermassen etablieren können, wurde dann aber mit steigender Leistung der Dinger durch Windows ersetzt. Da die Ultrabooks schon mit genügend Leistung ausgeliefert werden, gehört Windows bereits zum Standard!<br />
Natürlich besteht immer noch die Möglichkeit Linux selbstständig zu installieren, doch mit voller Unterstützung kann man leider nicht rechnen, vie <a href="http://www.golem.de/1110/87084.html"  target="_blank">Golem.de bereits testete</a>:</p>
<blockquote><p>Weder der Bereitschaftsmodus (S3 oder Suspend-To-RAM) noch der Ruhezustand (S4 oder Suspend-To-Disk) funktionierte mit Ubuntu 11.10 samt Kernel 3.0.0.12 korrekt.</p></blockquote>
<p>In meinen Augen sehr schade, dass Asus es hier verpasst hat, auf den &#8220;Linux-Zug&#8221; aufzuspringen, denn so finde ich leider keinen Kaufgrund! Auf das Andere hätte ich noch verzichten können&#8230;</p>
<br /><p>Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/03/lvm-fur-linux-einrichten/' rel='bookmark' title='LVM für Linux einrichten'>LVM für Linux einrichten</a> <small>LVM ist eine andere Art von Festplatten Management, ähnlich einem...</small></li>
<li><a href='http://blog.encodingit.ch/2011/03/backup-und-restore-mit-linux/' rel='bookmark' title='Backup und Restore mit Linux'>Backup und Restore mit Linux</a> <small>Von den bisher vorgestellten Themen in LPIC 201 ist das...</small></li>
<li><a href='http://blog.encodingit.ch/2011/03/linux-von-acer-verbannt/' rel='bookmark' title='Linux von Acer verbannt'>Linux von Acer verbannt</a> <small>Da der Acer Aspire One von einer Kollegin nicht mehr...</small></li>
</ol></p><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2012/01/asus-ultrabook-ux31-keine-cd-dvd-kein-lan-kein-linux/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>host_name ändern in Nagios: Bug?</title>
		<link>http://blog.encodingit.ch/2011/12/host_name-andern-in-nagios-bug/</link>
		<comments>http://blog.encodingit.ch/2011/12/host_name-andern-in-nagios-bug/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 07:00:48 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Planet]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=2867</guid>
		<description><![CDATA[In Nagios ist es nicht so einfach, wenn ein Server umbenannt wird...
Ein Neuling in Nagios wird intuitiv in die Konfigurationsdatei XYZ.cfg gehen und darin den neuen Namen unter "host_name" eintragen. Dann noch ein Reload des Daemons und... nichts hat sich geändert! Noch immer erscheint der alte Name in der Webseite.
Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/08/unbekannte-systeme-in-nagios/' rel='bookmark' title='Unbekannte Systeme in Nagios'>Unbekannte Systeme in Nagios</a> <small>Die Nagios Status Map ist ja eine ganz feine Sache,...</small></li>
<li><a href='http://blog.encodingit.ch/2011/08/notification-von-nagios-ans-iphone/' rel='bookmark' title='Notification von Nagios ans iPhone'>Notification von Nagios ans iPhone</a> <small>Auf der Suche nach einer Lösung, wie ich die Notifications...</small></li>
<li><a href='http://blog.encodingit.ch/2011/09/windows-updates-prufen-mit-nagios/' rel='bookmark' title='Windows Updates prüfen mit Nagios'>Windows Updates prüfen mit Nagios</a> <small>Um unserer Server optimal überwachen zu können, habe ich eine...</small></li>
<li><a href='http://blog.encodingit.ch/2011/08/nagios-als-inventory-losung/' rel='bookmark' title='Nagios als Inventory-Lösung'>Nagios als Inventory-Lösung</a> <small>Heute bin ich über ein interessantes Script gestossen, welches aus...</small></li>
<li><a href='http://blog.encodingit.ch/2011/09/nrpe-module-installieren/' rel='bookmark' title='NRPE Module installieren'>NRPE Module installieren</a> <small>Aktuell arbeite ich an einer Lösung, um mittels Nagios zu...</small></li>
</ol><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>In Nagios ist es nicht so einfach, wenn ein Server umbenannt wird&#8230;<br />
Ein Neuling in Nagios wird intuitiv in die Konfigurationsdatei XYZ.cfg gehen und darin den neuen Namen unter &#8220;host_name&#8221; eintragen. Dann noch ein Reload des Daemons und&#8230; nichts hat sich geändert! Noch immer erscheint der alte Name in der Webseite.<br />
Nochmals ein Blick in die Konfigurationsdatei; da ist alles richtig eingetragen. Die Seite wird nochmals neu geladen und weil immer noch der alte Name da steht, beginnt man an der eigenen Sehkraft zu zweifeln!</p>
<p>Die alteingesessenen Nagios-Admins kennen das Problem: Es ist keines, es ist ein Feature &#8211; so habe ich mich von der Community belehren lassen!</p>
<p>Es hängt zusammen mit einer Statusdatei, welche Nagios anlegt, damit nach einem Neustart des Daemons nicht immer alle Checks ohne Daten dastehen und erst alles wieder aufgebaut werden muss. Deshalb wird darin der letzte Zustand gespeichert und dann auch abgerufen.<br />
Wieso dabei auch der Hostname gespeichert und aus dieser Datei anstelle der Konfigurationsdatei ausgelesen wird, kann ich mir leider nicht erklären. Aber eben: Das ist ein Feature, kein Bug!</p>
<p>Die Lösung des Problems liegt darin, dass der Name nicht nur in der offiziellen Konfigurationsdatei, sondern auch in der Statusdatei unter <strong>var/retention.dat</strong> angepasst wird. Bevor das geschieht, muss aber der Nagios-Daemon gestoppt werden. </p>
<p>Also (der Pfad der Nagios-Installation bitte anpassen):</p>
<pre class="brush: bash; title: ; notranslate">
/etc/init.d/nagios stop
vi /usr/local/nagios/var/retention.dat
/etc/init.d/nagios start
</pre>
<p>Verzweifelt nicht an euer Sehkraft, es ist wirklich so <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<br /><p>Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/08/unbekannte-systeme-in-nagios/' rel='bookmark' title='Unbekannte Systeme in Nagios'>Unbekannte Systeme in Nagios</a> <small>Die Nagios Status Map ist ja eine ganz feine Sache,...</small></li>
<li><a href='http://blog.encodingit.ch/2011/08/notification-von-nagios-ans-iphone/' rel='bookmark' title='Notification von Nagios ans iPhone'>Notification von Nagios ans iPhone</a> <small>Auf der Suche nach einer Lösung, wie ich die Notifications...</small></li>
<li><a href='http://blog.encodingit.ch/2011/09/windows-updates-prufen-mit-nagios/' rel='bookmark' title='Windows Updates prüfen mit Nagios'>Windows Updates prüfen mit Nagios</a> <small>Um unserer Server optimal überwachen zu können, habe ich eine...</small></li>
<li><a href='http://blog.encodingit.ch/2011/08/nagios-als-inventory-losung/' rel='bookmark' title='Nagios als Inventory-Lösung'>Nagios als Inventory-Lösung</a> <small>Heute bin ich über ein interessantes Script gestossen, welches aus...</small></li>
<li><a href='http://blog.encodingit.ch/2011/09/nrpe-module-installieren/' rel='bookmark' title='NRPE Module installieren'>NRPE Module installieren</a> <small>Aktuell arbeite ich an einer Lösung, um mittels Nagios zu...</small></li>
</ol></p><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2011/12/host_name-andern-in-nagios-bug/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SSH von ESXi absichern</title>
		<link>http://blog.encodingit.ch/2011/12/ssh-von-esxi-absichern/</link>
		<comments>http://blog.encodingit.ch/2011/12/ssh-von-esxi-absichern/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 07:30:18 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[ESX]]></category>
		<category><![CDATA[ESXi]]></category>
		<category><![CDATA[Planet]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Syslog]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=2830</guid>
		<description><![CDATA[Vor kurzem habe ich ja bereits über Syslog geschrieben. Jeder der schon mal einen Server in den weiten des Internets betrieben hat (damit meine ich nicht zu Hause im eigenen Netzwerk), der weiss, wie schnell es geht, bis die ersten Bots und Kiddies mit endlosen Versuchen probieren, das SSH-Passwort zu knacken.
Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/12/syslog-server-fur-esxi/' rel='bookmark' title='Syslog Server für ESXi'>Syslog Server für ESXi</a> <small>Nach dem ich entdeckt hatte, dass der ESX so intelligent...</small></li>
<li><a href='http://blog.encodingit.ch/2011/11/esxi-sichern-auf-ftp/' rel='bookmark' title='ESXi sichern auf FTP'>ESXi sichern auf FTP</a> <small>Vor einiger Zeit hatte ich die Aufgabe ein Backup-Konzept für...</small></li>
<li><a href='http://blog.encodingit.ch/2011/09/vmware-image-fur-esxi-aufbereiten/' rel='bookmark' title='Vmware Image für ESXi aufbereiten'>Vmware Image für ESXi aufbereiten</a> <small>Für eine Analyse gab es diese Woche eine Installation von...</small></li>
<li><a href='http://blog.encodingit.ch/2011/04/dns-320-mit-fun_plug-zu-ssh/' rel='bookmark' title='DNS-320 mit fun_plug zu SSH'>DNS-320 mit fun_plug zu SSH</a> <small>Ganz cool an meinem NAS DNS-320 ist die Funktion des...</small></li>
<li><a href='http://blog.encodingit.ch/2011/08/nat-konfigurieren-unter-esxi/' rel='bookmark' title='NAT konfigurieren unter ESX(i)'>NAT konfigurieren unter ESX(i)</a> <small>NAT ist so eine Sache. Unter Vmware Workstation sehr einfach...</small></li>
</ol><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>Vor kurzem habe ich ja bereits über Syslog geschrieben. Jeder der schon mal einen Server in den weiten des Internets betrieben hat (damit meine ich nicht zu Hause im eigenen Netzwerk), der weiss, wie schnell es geht, bis die ersten Bots und Kiddies mit endlosen Versuchen probieren, das SSH-Passwort zu knacken.<br />
Für Linux-Distributionen wie Ubuntu, Debian, RedHat oder was auch immer gibt es unzählige Tools und Applikationen, welche helfen entweder den SSH-Zugriff zu verstecken, oder aber zu verteidigen.</p>
<p>Beides gibt es leider nicht bei meinem ESXi Server. Noch nicht mal eine anständige iptable oder hosts.deny sind vorhanden, geschweige  denn von einer Firewall, wie es bei ESX Standard ist.</p>
<p>Um jedoch mal zu sehen, wie viele Personen versuchen, mein SSH zu knacken, habe ich ein einfaches kleines Script für Nagios geschrieben.</p>
<p>Ich weiss es kann noch viel optimiert werden dabei, doch es erfüllt seinen Zweck:</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash

# ####################################################################
# Check Syslog /var/log/SPLVS002.log for Brute Force Attacks via SSH
# by Patrick Schmid
# Version 1.0
######################################################################

export STATE_OK=0
export STATE_WARNING=1

time=`date +%H.%M.%S |cut -d'.' -f1`
time=`echo $time|sed 's/^0*//'`
time2=$(( $time - 1))
time3=$(( $time - 2))

if [ $time -lt 10 ]; then
        time=0$time
fi

if [ $time2 -lt 10 ]; then
        time2=0$time2
fi

if [ $time3 -lt 10 ]; then
        time3=0$time3
fi

compare=`tail -300 /var/log/SPLVS002.log |grep &quot;from&quot; |grep &quot;root&quot; |grep &quot;attempt&quot; | cut -d' ' -f3`
compare=`echo $compare | cut -d' ' -f1`

if [ $compare -lt 10  ]; then
        attackers=`tail -300 /var/log/SPLVS002.log |grep &quot;from&quot; |grep &quot;root&quot; |grep &quot;attempt&quot; | cut -d' ' -f4,14 |cut -d':' -f1,2,3 |sed -e 's/://' | tee -a |sed -e 's/://' |tee -a |grep &quot;^$time\|^$time2\|^$time3&quot; |cut -d' ' -f2 |sort |uniq`
        computers=`tail -300 /var/log/SPLVS002.log |grep &quot;from&quot; |grep &quot;root&quot; |grep &quot;attempt&quot; | cut -d' ' -f4,14 |cut -d':' -f1,2,3 |sed -e 's/://' | tee -a |sed -e 's/://' |tee -a |grep &quot;^$time\|^$time2\|^$time3&quot; |cut -d' ' -f2 |sort |uniq |wc -l`
        attemps=`tail -300 /var/log/SPLVS002.log |grep &quot;from&quot; |grep &quot;root&quot; |grep &quot;attempt&quot; | cut -d' ' -f4,14 |cut -d':' -f1,2,3 |sed -e 's/://' | tee -a |sed -e 's/://' |tee -a |grep &quot;^$time\|^$time2\|^$time3&quot; |cut -d' ' -f2 |sort |wc -l`
else
        attackers=`tail -300 /var/log/SPLVS002.log |grep &quot;from&quot; |grep &quot;root&quot; |grep &quot;attempt&quot; | cut -d' ' -f3,13 |cut -d':' -f1,2,3 |sed -e 's/://' | tee -a |sed -e 's/://' |tee -a |grep &quot;^$time\|^$time2\|^$time3&quot; |cut -d' ' -f2 |sort |uniq`
        computers=`tail -300 /var/log/SPLVS002.log |grep &quot;from&quot; |grep &quot;root&quot; |grep &quot;attempt&quot; | cut -d' ' -f3,13 |cut -d':' -f1,2,3 |sed -e 's/://' | tee -a |sed -e 's/://' |tee -a |grep &quot;^$time\|^$time2\|^$time3&quot; |cut -d' ' -f2 |sort |uniq |wc -l`
        attemps=`tail -300 /var/log/SPLVS002.log |grep &quot;from&quot; |grep &quot;root&quot; |grep &quot;attempt&quot; | cut -d' ' -f3,13 |cut -d':' -f1,2,3 |sed -e 's/://' | tee -a |sed -e 's/://' |tee -a |grep &quot;^$time\|^$time2\|^$time3&quot; |cut -d' ' -f2 |sort |wc -l`
fi

[ &quot;$attackers&quot; ] &amp;&amp; echo -e &quot;$attemps attemps from $computers attackers\n$attackers&quot;
[ &quot;$attackers&quot; ] || echo &quot;No Attack running&quot;

[ &quot;$attackers&quot; ] &amp;&amp; exit $STATE_WARNING
[ &quot;$attackers&quot; ] || exit $STATE_OK</pre>
<p>Und schon sieht man in Nagios selbst, was so abgeht:</p>
<p><span id="more-2830"></span></p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2011/11/bruteforce1.png"  rel="lightbox[2830]"><img class="size-medium wp-image-2765 alignnone" title="Nagios Brute Force" src="http://blog.encodingit.ch/wp-content/uploads/2011/11/bruteforce1.png" alt="" width="500" /></a></p>
<p>So dann weiter im Konzept! Es gibt zwar keine Möglichkeit, Angreifer aussperren oder ähnliches, jedoch aber kann man verhindern, dass das Passwort erraten werden kann, indem man das Login mit einem zusätzlichen Zertifikat schützt. Wie das geht, lest ihr in den folgenden Zeilen!</p>
<p>Zuerst wird ein Key generiert, mit ssh-keygen.<br />
Nun kann der Public-Key kopiert werden, denn dieser muss auf den ESX wie folgt eingefügt werden:</p>
<pre class="brush: bash; title: ; notranslate">
mkdir /.ssh
touch /.ssh/authorized_keys
chmod 0600 -R /.ssh
echo &quot;ssh-rsa KEY_HIER_EINFÜGEN&quot; &gt;&gt; /.ssh/authorized_keys
</pre>
<p>Nun kann man das Login schon mal prüfen. Hier sollte man bereits mit dem Key einloggen können.</p>
<p>Jetzt wird das ganze noch abgesichert, damit es auch einen Reboot übersteht. Einfach den obigen Part in die Datei /etc/rc.local einfügen und abspeichern.<br />
Und zu guter Letzt wird noch das Login ohne Zertifikat deaktiviert. Dazu wird in der Datei /etc/inetd.conf den beiden Punkten &#8220;ssh&#8221; der Parameter -s angefügt:</p>
<pre class="brush: bash; title: ; notranslate">
ssh      stream   tcp   nowait   root   /sbin/dropbearmulti   dropbear ++min=0,swap,group=shell -s -i -K60
ssh      stream   tcp6  nowait   root   /sbin/dropbearmulti   dropbear ++min=0,swap,group=shell -s -i -K60
</pre>
<p>Von nun an ist ein Login nur noch mit Zertifikat möglich, wodurch auch die lästigen Bots ausgebremst werden.</p>
<br /><p>Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/12/syslog-server-fur-esxi/' rel='bookmark' title='Syslog Server für ESXi'>Syslog Server für ESXi</a> <small>Nach dem ich entdeckt hatte, dass der ESX so intelligent...</small></li>
<li><a href='http://blog.encodingit.ch/2011/11/esxi-sichern-auf-ftp/' rel='bookmark' title='ESXi sichern auf FTP'>ESXi sichern auf FTP</a> <small>Vor einiger Zeit hatte ich die Aufgabe ein Backup-Konzept für...</small></li>
<li><a href='http://blog.encodingit.ch/2011/09/vmware-image-fur-esxi-aufbereiten/' rel='bookmark' title='Vmware Image für ESXi aufbereiten'>Vmware Image für ESXi aufbereiten</a> <small>Für eine Analyse gab es diese Woche eine Installation von...</small></li>
<li><a href='http://blog.encodingit.ch/2011/04/dns-320-mit-fun_plug-zu-ssh/' rel='bookmark' title='DNS-320 mit fun_plug zu SSH'>DNS-320 mit fun_plug zu SSH</a> <small>Ganz cool an meinem NAS DNS-320 ist die Funktion des...</small></li>
<li><a href='http://blog.encodingit.ch/2011/08/nat-konfigurieren-unter-esxi/' rel='bookmark' title='NAT konfigurieren unter ESX(i)'>NAT konfigurieren unter ESX(i)</a> <small>NAT ist so eine Sache. Unter Vmware Workstation sehr einfach...</small></li>
</ol></p><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2011/12/ssh-von-esxi-absichern/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Syslog Server für ESXi</title>
		<link>http://blog.encodingit.ch/2011/12/syslog-server-fur-esxi/</link>
		<comments>http://blog.encodingit.ch/2011/12/syslog-server-fur-esxi/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 14:30:10 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[ESX]]></category>
		<category><![CDATA[ESXi]]></category>
		<category><![CDATA[Planet]]></category>
		<category><![CDATA[Syslog]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=2823</guid>
		<description><![CDATA[Nach dem ich entdeckt hatte, dass der ESX so intelligent ist und seine Logs standardmässig auf einer RAM-Disk speichert, musste natürlich eine andere Lösung her. Kann ja nicht sein, dass die Logs nach einem Ausfall einfach nicht mehr vorhanden sind.
Somit habe ich mich für eine zentrale Logspeicherung mit Syslog entschieden.
Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/11/esxi-sichern-auf-ftp/' rel='bookmark' title='ESXi sichern auf FTP'>ESXi sichern auf FTP</a> <small>Vor einiger Zeit hatte ich die Aufgabe ein Backup-Konzept für...</small></li>
<li><a href='http://blog.encodingit.ch/2011/09/vmware-image-fur-esxi-aufbereiten/' rel='bookmark' title='Vmware Image für ESXi aufbereiten'>Vmware Image für ESXi aufbereiten</a> <small>Für eine Analyse gab es diese Woche eine Installation von...</small></li>
<li><a href='http://blog.encodingit.ch/2011/11/windows-session-credentials-cannot-be-used-to-log-into-this-server/' rel='bookmark' title='Windows session credentials cannot be used to log into this server'>Windows session credentials cannot be used to log into this server</a> <small>Ist der ESX-Server ans AD angebunden, so liegt es ja...</small></li>
<li><a href='http://blog.encodingit.ch/2011/04/dns-320-mit-fun_plug-zu-ssh/' rel='bookmark' title='DNS-320 mit fun_plug zu SSH'>DNS-320 mit fun_plug zu SSH</a> <small>Ganz cool an meinem NAS DNS-320 ist die Funktion des...</small></li>
<li><a href='http://blog.encodingit.ch/2011/08/nat-konfigurieren-unter-esxi/' rel='bookmark' title='NAT konfigurieren unter ESX(i)'>NAT konfigurieren unter ESX(i)</a> <small>NAT ist so eine Sache. Unter Vmware Workstation sehr einfach...</small></li>
</ol><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>Nach dem ich entdeckt hatte, dass der ESX so intelligent ist und seine Logs standardmässig auf einer RAM-Disk speichert, musste natürlich eine andere Lösung her. Kann ja nicht sein, dass die Logs nach einem Ausfall einfach nicht mehr vorhanden sind.<br />
Somit habe ich mich für eine zentrale Logspeicherung mit Syslog entschieden.</p>
<p>Da ich sowas noch nie eingerichtet hatte, war ich mir nicht ganz sicher, was auf mich zu kommen würde. Nun aber kann ich sagen, schreckt nicht davor zurück! Das Einrichten geht schnell und einfach und der Gewinn daraus ist enorm.</p>
<p>Auf meinem Ubuntu Server habe ich mich für syslog-ng entschieden, welches problemlos über die Paketquellen installiert werden kann:</p>
<pre class="brush: bash; title: ; notranslate">
apt-get install syslog-ng
</pre>
<p>Nun muss die Konfiguration unter /etc/syslog-ng/syslog-ng.conf angepasst werden.<br />
Eingefügt habe ich die folgenden Punkte für jeweils einen ESX und einen normalen Ubuntu-Server:</p>
<pre class="brush: bash; title: ; notranslate">
source s_udp
{
        udp(port(514));
};

destination d_server1 {
        file(&quot;/var/log/server1.log&quot;);
};

filter f_server1 {
        host(&quot;192.168.1.45&quot;);
};

log {
        source(s_udp);
        filter(f_server1);
        destination(d_server1);
};

destination d_server2 {
        file (&quot;/var/log/server2.log&quot;);
};

filter f_server2 {
        host(&quot;192.168.1.23&quot;);
};

log {
        source(s_udp);
        filter(f_server2);
        destination(d_server2);
};
</pre>
<p>Somit sei es den beiden Hosts mit der Adresse 192.168.1.23 und 192.168.1.45 über den Port UDP/514 erlaubt, Daten an den Syslog-Server zu senden, welche jeweils unter /var/log/server1.log und server2.log abgelegt werden.</p>
<p><span id="more-2823"></span></p>
<p>Noch neustarten und gut ist:</p>
<pre class="brush: bash; title: ; notranslate">
/etc/init.d/syslog-ng restart
</pre>
<p>Nun geht es weiter auf den zu überwachenden Servern!<br />
Hier fügt man folgende Zeile in die Konfiguration unter /etc/syslog.conf ein:</p>
<pre class="brush: bash; title: ; notranslate">
*.* @192.168.1.25
</pre>
<p>192.168.1.25 ist dabei natürlich die IP des Syslog-Servers. Aktuell wird hier alles geloggt, was so auf der Maschine abgeht. Wer das ganze noch genauer spezifizieren will, der findet entsprechende Parameter bei Google.<br />
Auch hier ist noch ein Neustart nötig und schon sind die entsprechenden Infos auf dem Syslog-Server ersichtlich:</p>
<pre class="brush: bash; title: ; notranslate">
/etc/init.d/sysklogd restart
</pre>
<p>Auf dem ESX Server kann der Syslog-Server über den vSpehre-Client gesetzt werden. Einfach unter &#8220;Configuration&#8221; > &#8220;Advanced Settings&#8221; > &#8220;Syslog&#8221; > &#8220;remote&#8221; IP und Port eintragen.</p>
<p>Und nun dürft ihr auch schon all die Kiddies und Bots bewundern, welche versuchen euer SSH-Passwort zu knacken <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre class="brush: bash; title: ; notranslate">
Nov 30 12:17:17 server1 sshd[11775]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=180.227.218.245  user=root
Nov 30 12:17:19 server1 sshd[11775]: Failed password for root from 180.227.218.245 port 34035 ssh2
Nov 30 12:17:22 server1 sshd[11777]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=180.227.218.245  user=root
Nov 30 12:17:23 server1 sshd[11777]: Failed password for root from 180.227.218.245 port 34311 ssh2
Nov 30 12:17:26 server1 sshd[11779]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=180.227.218.245  user=root
Nov 30 12:17:28 server1 sshd[11779]: Failed password for root from 180.227.218.245 port 34525 ssh2
Nov 30 12:17:30 server1 sshd[11784]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=180.227.218.245  user=root
Nov 30 12:17:33 server1 sshd[11784]: Failed password for root from 180.227.218.245 port 34770 ssh2
Nov 30 12:17:35 server1 sshd[11795]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=180.227.218.245  user=root
Nov 30 12:17:37 server1 sshd[11795]: Failed password for root from 180.227.218.245 port 35037 ssh2
Nov 30 12:17:39 server1 sshd[11800]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=180.227.218.245  user=root
Nov 30 12:17:42 server1 sshd[11800]: Failed password for root from 180.227.218.245 port 35313 ssh2
Nov 30 12:17:44 server1 sshd[11805]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=180.227.218.245  user=root
Nov 30 12:17:47 server1 sshd[11805]: Failed password for root from 180.227.218.245 port 35591 ssh2
Nov 30 12:17:49 server1 sshd[11807]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=180.227.218.245  user=root
Nov 30 12:17:51 server1 sshd[11807]: Failed password for root from 180.227.218.245 port 35809 ssh2
Nov 30 12:17:54 server1 sshd[11842]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=180.227.218.245  user=root
Nov 30 12:17:56 server1 sshd[11842]: Failed password for root from 180.227.218.245 port 36091 ssh2
Nov 30 12:17:58 server1 sshd[11848]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=180.227.218.245  user=root
Nov 30 12:18:00 server1 sshd[11848]: Failed password for root from 180.227.218.245 port 36361 ssh2
Nov 30 12:18:02 server1 sshd[11850]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=180.227.218.245  user=root
</pre>
<p>Wer auch dem Abhelfen will, der soll sich mal das Tool denyhosts ansehen! Ansonsten ein sicheres Passwort, Zertifikate oder was ihr gerade lustig seid. <a href="http://bit.ly/sAZlMw"  target="_blank">Ideen gibts genug</a>!</p>
<br /><p>Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/11/esxi-sichern-auf-ftp/' rel='bookmark' title='ESXi sichern auf FTP'>ESXi sichern auf FTP</a> <small>Vor einiger Zeit hatte ich die Aufgabe ein Backup-Konzept für...</small></li>
<li><a href='http://blog.encodingit.ch/2011/09/vmware-image-fur-esxi-aufbereiten/' rel='bookmark' title='Vmware Image für ESXi aufbereiten'>Vmware Image für ESXi aufbereiten</a> <small>Für eine Analyse gab es diese Woche eine Installation von...</small></li>
<li><a href='http://blog.encodingit.ch/2011/11/windows-session-credentials-cannot-be-used-to-log-into-this-server/' rel='bookmark' title='Windows session credentials cannot be used to log into this server'>Windows session credentials cannot be used to log into this server</a> <small>Ist der ESX-Server ans AD angebunden, so liegt es ja...</small></li>
<li><a href='http://blog.encodingit.ch/2011/04/dns-320-mit-fun_plug-zu-ssh/' rel='bookmark' title='DNS-320 mit fun_plug zu SSH'>DNS-320 mit fun_plug zu SSH</a> <small>Ganz cool an meinem NAS DNS-320 ist die Funktion des...</small></li>
<li><a href='http://blog.encodingit.ch/2011/08/nat-konfigurieren-unter-esxi/' rel='bookmark' title='NAT konfigurieren unter ESX(i)'>NAT konfigurieren unter ESX(i)</a> <small>NAT ist so eine Sache. Unter Vmware Workstation sehr einfach...</small></li>
</ol></p><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2011/12/syslog-server-fur-esxi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ESXi sichern auf FTP</title>
		<link>http://blog.encodingit.ch/2011/11/esxi-sichern-auf-ftp/</link>
		<comments>http://blog.encodingit.ch/2011/11/esxi-sichern-auf-ftp/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 10:37:34 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[ESXi]]></category>
		<category><![CDATA[ghettoVCB]]></category>
		<category><![CDATA[Planet]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=2787</guid>
		<description><![CDATA[Vor einiger Zeit hatte ich die Aufgabe ein Backup-Konzept für einen ESXi-Server umzusetzen. Zur Verfügung dazu stand mir der Server selbst und Speicherplatz, welcher via FTP angesprochen werden kann.
Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/09/vmware-image-fur-esxi-aufbereiten/' rel='bookmark' title='Vmware Image für ESXi aufbereiten'>Vmware Image für ESXi aufbereiten</a> <small>Für eine Analyse gab es diese Woche eine Installation von...</small></li>
</ol><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>Vor einiger Zeit hatte ich die Aufgabe ein Backup-Konzept für einen ESXi-Server umzusetzen. Zur Verfügung dazu stand mir der Server selbst und Speicherplatz, welcher via FTP angesprochen werden kann.<br />
In Verbindung mit ESX(i) habe ich zum Sichern der virtuellen Maschinen natürlich auf ghettoVCB zurückgegriffen, ein simples Script aus der Community rund um Vmware und ESXi:</p>
<blockquote><p>This script performs backups of virtual machines residing on ESX(i) 3.5/4.x+/5.x servers using methodology similar to VMware&#8217;s VCB tool. The script takes snapshots of live running virtual machines, backs up the  master VMDK(s) and then upon completion, deletes the snapshot until the next backup. The only caveat is that it utilizes resources available to the Service Console of the ESX server or Busybox Console (Tech Support Mode) of the ESXi server  running the backups as opposed to following the traditional method of offloading virtual machine backups through a VCB proxy.</p></blockquote>
<p>Das Script entspricht also einer freien Variante des VCB Tools von Vmware. Gesichert wird, indem das Script zuerst einen Snapshot der entsprechenden Maschine auslöst und diesen dann weg kopiert und wieder löscht. Somit wird die zu sichernde Maschine weder in ihrer Performance noch im Betrieb gestört oder beeinträchtigt. Hier zeigt sich auch schon der unschlagbare Vorteil von einem Backup auf der Ebene vom Virtualisierungsserver!</p>
<p>Eingerichtet ist das ganze relativ schnell und unkompliziert, die entsprechenden Dateien gibt es von <a href="https://nodeload.github.com/lamw/ghettoVCB/tarball/master"  target="_blank">github</a>. Als einzige aus dem Archiv wird die Datei ghettoVCB.sh benötigt, welche auch auf den ESX kopiert werden muss. Hier gilt zu beachten, die Datei sollte auf dem datastore abgelegt werden, da alle anderen Dateien nach einem Reboot nicht mehr verfügbar sind&#8230; Und fragt mich ja nicht nach dem Sinn dahinter!</p>
<p>Konfiguriert wird das ganze über die ersten paar Zeilen der Datei. Hier kann zum Beispiel eingestellt werden, wohin gesichert wird, wie viele Sicherungen behalten werden, ob die VM&#8217;s dafür heruntergefahren werden sollen und noch ganz viel mehr. Schaut euch dazu am besten mal <a href="http://communities.vmware.com/docs/DOC-8760"  target="_blank">unter diesem Link</a> den Punkt &#8220;Configurations&#8221; an, da wird alles verständlich erklärt. Meine Konfiguration sieht so aus:</p>
<p><span id="more-2787"></span></p>
<pre class="brush: bash; title: ; notranslate">
# directory that all VM backups should go (e.g. /vmfs/volumes/SAN_LUN1/mybackupdir)
VM_BACKUP_VOLUME=/vmfs/volumes/datastore1/backup/

# Format output of VMDK backup
# zeroedthick
# 2gbsparse
# thin
# eagerzeroedthick
DISK_BACKUP_FORMAT=thin

# Number of backups for a given VM before deleting
VM_BACKUP_ROTATION_COUNT=1

# Shutdown guestOS prior to running backups and power them back on afterwards
# This feature assumes VMware Tools are installed, else they will not power down and loop forever
# 1=on, 0 =off
POWER_VM_DOWN_BEFORE_BACKUP=0

# enable shutdown code 1=on, 0 = off
ENABLE_HARD_POWER_OFF=0

# if the above flag &quot;ENABLE_HARD_POWER_OFF &quot;is set to 1, then will look at this flag which is the # of iterations
# the script will wait before executing a hard power off, this will be a multiple of 60seconds
# (e.g) = 3, which means this will wait up to 180seconds (3min) before it just powers off the VM
ITER_TO_WAIT_SHUTDOWN=3

# Number of iterations the script will wait before giving up on powering down the VM and ignoring it for backup
# this will be a multiple of 60 (e.g) = 5, which means this will wait up to 300secs (5min) before it gives up
POWER_DOWN_TIMEOUT=5

# enable compression with gzip+tar 1=on, 0=off
ENABLE_COMPRESSION=0

############################
####### NEW PARAMS #########
############################

# Disk adapter type: buslogic, lsilogic or ide
ADAPTER_FORMAT=buslogic

# Include VMs memory when taking snapshot
VM_SNAPSHOT_MEMORY=1

# Quiesce VM when taking snapshot (requires VMware Tools to be installed)
VM_SNAPSHOT_QUIESCE=0

##########################################################
# NON-PERSISTENT NFS-BACKUP ONLY
#
# ENABLE NON PERSISTENT NFS BACKUP 1=on, 0=off

ENABLE_NON_PERSISTENT_NFS=0

# umount NFS datastore after backup is complete 1=yes, 0=no
UNMOUNT_NFS=0

# IP Address of NFS Server
NFS_SERVER=172.51.0.192

# Path of exported folder residing on NFS Server (e.g. /some/mount/point )
NFS_MOUNT=/upload

# Non-persistent NFS datastore display name of choice
NFS_LOCAL_NAME=backup

# Name of backup directory for VMs residing on the NFS volume
NFS_VM_BACKUP_DIR=mybackups

############################
######### EMAIL ############
############################

# Email debug 1=yes, 0=no
EMAIL_DEBUG=0

# Email log 1=yes, 0=no
EMAIL_LOG=0

# Email SMTP server
EMAIL_SERVER=auroa.primp-industries.com

# Email SMTP server port
EMAIL_SERVER_PORT=25

# Email FROM
EMAIL_FROM=root@ghettoVCB

# Email RCPT
EMAIL_TO=auroa@primp-industries.com
</pre>
<p>Ist das Backup konfiguriert, so habe ich mir noch eine weitere Datei angelegt, welche die Namen aller Maschinen enthält, welche ich gerne sichern möchte. Einfach pro Zeile der Name einer VM und gut ist&#8217;s:</p>
<pre class="brush: bash; title: ; notranslate">
./backup # cat maschines_to_backup.txt
MACHINE1
MACHINE2
MACHINE5
MACHINE7
</pre>
<p>Nun kann man das Backup theoretisch schon starten. Einfach den folgenden Befehl verwenden:</p>
<pre class="brush: bash; title: ; notranslate">
./ghettoVCB.sh -f maschines_to_backup.txt
</pre>
<p>Doch was ist ein Backup schon, wenn man es manuell anschieben muss&#8230; Ausserdem sollte das Backup ja irgendwann auch noch auf den FTP verschoben werden. Also weiter im Programm.<br />
Leider ist die FTP-Funktionalität vom ESXi sehr stark eingeschränkt. So etwas ähnliches wie rekursives Hochladen gibt es nicht. Auch das Erstellen von Ordnern auf dem ESXi ist so nicht möglich! Diese beiden Punkte und die Tatsache, dass ein Backupvolumen von über 50GB in einem komprimierten Archiv nur noch knapp 15GB gross ist, haben mich dazu bewegt zuerst alles mit tar zu packen und dann hochzuladen. Ich weiss: Schande auf mein Haupt, die ersten Stimmen werden schon laut werden, dass ein Backup niemals gepackt werden darf. Aber, da immer das letzte Backup noch auf dem ESXi selbst liegen bleibt, gibt es noch eine zusätzliche Sicherheit und ich konnte mich zu dem Schritt überwinden.<br />
Also entstand noch ein weiteres, recht skurriles Skript. Aber es tut seinen Zweck:</p>
<pre class="brush: bash; title: ; notranslate">
/vmfs/volumes/datastore1/backup/ghettoVCB.sh -f /vmfs/volumes/datastore1/backup/maschines_to_backup.txt &gt;&gt; /vmfs/volumes/datastore1/backup/log/`date +&quot;%d&quot;-&quot;%m&quot;-&quot;%y&quot;`.log
date=$(`echo date +%F`).tar.gz
tar -cvz -f /vmfs/volumes/datastore1/backup/$date /vmfs/volumes/datastore1/backup/*
ftpput -u USER -p PASSWORD -P FTP_SERVER_IP /$date /vmfs/volumes/datastore1/backup/$date
rm /vmfs/volumes/datastore1/backup/$date
</pre>
<p>Das Script löst zuerst das Backup aus und schreibt auch gleich ein Log dazu. Danach wird alles in ein Archiv mit dem aktuellen Datum gepackt und via FTP hochgeladen. Ja, ich weiss, FTP ist nicht wirklich das beste Protokoll dazu. Es ist zwar schnell, jedoch bricht die Verbindung einmal ab, kann diese nicht wieder aufgenommen werden, sondern muss neu beginnen. Jedoch ist FTP der einzigste Zugriffsweg, den ich habe.</p>
<p>Nun, damit auch noch alles automatisch abläuft, wird das Backup in den Crontab integriert. Dazu fügen wir eine weitere Zeile an:</p>
<pre class="brush: bash; title: ; notranslate">
./backup # cat /var/spool/cron/crontabs/root
#syntax : minute hour day month dayofweek command
01 01 * * * /sbin/tmpwatch.sh
01 * * * * /sbin/auto-backup.sh #first minute of every hour (run every hour)
00 22 * * * /vmfs/volumes/datastore1/backup/daily.sh
</pre>
<p>Nun muss noch ein bisschen nacharbeit geleistet werden, damit alles reibungslos abläuft:</p>
<pre class="brush: bash; title: ; notranslate">
kill $(cat /var/run/crond.pid)
crond
</pre>
<p>Damit das Konzept auch noch einen Reboot überlebt, muss noch die /etc/rc.local ergänzt werden:</p>
<pre class="brush: bash; title: ; notranslate">
/bin/kill $(cat /var/run/crond.pid)
echo &quot;00 22 * * * /vmfs/volumes/datastore1/backup/daily.sh&quot; &gt;&gt; /var/spool/cron/crontabs/root
crond
</pre>
<p>Und somit wäre eine einfache und schnelle Backuplösung für die freie Version von Vmware&#8217;s ESX implementiert.<br />
Muss eine Maschine innert einem Backupzyklus wiederhergestellt werden, so geschieht dies direkt ab dem ESXi selbst, da das letzte Backup da immer zwischengespeichert ist. Ansonsten kann ein beliebiger Zeitpunkt vom FTP heruntergeladen, entpackt und gestartet werden. Und mit der passenden Software kann auch das Disk-Format von Vmware geöffnet und so einzelne Dateien wiederhergestellt werden.</p>
<br /><p>Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/09/vmware-image-fur-esxi-aufbereiten/' rel='bookmark' title='Vmware Image für ESXi aufbereiten'>Vmware Image für ESXi aufbereiten</a> <small>Für eine Analyse gab es diese Woche eine Installation von...</small></li>
</ol></p><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2011/11/esxi-sichern-auf-ftp/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SSL VPN gegen asoziale Firewalls</title>
		<link>http://blog.encodingit.ch/2011/09/ssl-vpn-gegen-asoziale-firewalls/</link>
		<comments>http://blog.encodingit.ch/2011/09/ssl-vpn-gegen-asoziale-firewalls/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 13:35:35 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Adito]]></category>
		<category><![CDATA[OpenVPN]]></category>
		<category><![CDATA[Planet]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=2650</guid>
		<description><![CDATA[Was tut man, wenn man hinter einer Firewall sitzt, die nur die Ports 80 und 443 geöffnet hat und trotzdem zum Beispiel mit vSphere über Port 902 eine Konsole öffnen, oder aber via Port 8080 auf eine Webseite zugreifen sollte. Genau, die Lösung ist VPN... Doch kein normales VPN!<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>Was tut man, wenn man hinter einer Firewall sitzt, die nur die Ports 80 und 443 geöffnet hat und trotzdem zum Beispiel mit vSphere über Port 902 eine Konsole öffnen, oder aber via Port 8080 auf eine Webseite zugreifen sollte. Genau, die Lösung ist VPN&#8230; Doch kein normales VPN!</p>
<p>Begonnen habe ich mit OpenVPN und habe es mit SSL verschlüsselt und auf Port 443 gelegt. Doch interessanter weise wollte keine Verbindung zu Stande kommen. Das Problem lag darin, dass die Firewall bereits blockte, bevor mein Client überhaupt einen SSL-Tunnel aufbauen konnte.<br />
Die Lösung dafür also, ich brauche eine Lösung, welche ich als normale Webseite ansurfen und dann vom Server aus einen SSL-Tunnel aufbauen kann.<br />
Dank dem Macher von <a href="http://blog.murawski.ch/"  target="_blank">IT Blögg</a> bin ich auf SSLExplorer, oder besser gesagt das Folgeprojekt daraus auf Adito SSL VPN gestossen.<br />
Die Installation dazu ist denkbar einfach. Ein bisschen Javacode, einmal kompilieren und noch hier und da ein Klick und schon läuft alles! Doch von vorne:</p>
<p>Installiert habe ich Adito nach folgender Anleitung <a href="http://www.sohoadvisers.com/tutorials/adito-ssl-vpn/installing-adito-ssl-vpn"  target="_blank">hier</a>. Die Installation geht relativ sauber und problemlos.</p>
<p>Doch nun kommt der kompliziertere Teil. Dank Adito kann ich jeglichen Traffic von meiner lokalen Maschine an eine beliebige IP und einen beliebigen Port im Netz weiterleiten. Also habe ich mir auf pfSense OpenVPN konfiguriert. Anleitungen dazu gibt es unzählige, mir hat dieses Video hier sehr geholfen:</p>
<p><iframe width="420" height="345" src="http://www.youtube.com/embed/odjviG-KDq8" frameborder="0" allowfullscreen></iframe></p>
<p><span id="more-2650"></span></p>
<p>Einzig eine kleine Unterscheidung musste ich vornehmen. Zum einen hier:</p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2011/09/redirect.png"  rel="lightbox[2650]"><img src="http://blog.encodingit.ch/wp-content/uploads/2011/09/redirect.png" alt="" title="redirect" width="778" height="52" class="alignnone size-full wp-image-2671" /></a></p>
<p>Und hier, da Adito bei mir nur TCP akzeptieren wollte:</p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2011/09/tcp.png"  rel="lightbox[2650]"><img src="http://blog.encodingit.ch/wp-content/uploads/2011/09/tcp.png" alt="" title="tcp" width="618" height="43" class="alignnone size-full wp-image-2677" /></a></p>
<p>Nun darf natürlich die Firewall nicht vergessen gehen:</p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2011/09/firewall.png"  rel="lightbox[2650]"><img src="http://blog.encodingit.ch/wp-content/uploads/2011/09/firewall.png" alt="" title="firewall" width="766" height="50" class="alignnone size-full wp-image-2678" /></a></p>
<p>So nun läuft OpenVPN und Adito, also gehts ans verknüpfen. In Adito richte ich mir unter &#8220;SSL Tunnels&#8221; einen neuen Tunnel ein. &#8220;Source Interface&#8221; ist hier 127.0.0.1, der &#8220;Source Port&#8221; ist ein beliebiger Port, bei mir zum Beispiel 12345. &#8220;Destination Host&#8221; und &#8220;Destination Port&#8221; sind die IP und Port unter welchem der OpenVPN Server verfügbar ist:</p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2011/09/ssl_tunnel.png"  rel="lightbox[2650]"><img src="http://blog.encodingit.ch/wp-content/uploads/2011/09/ssl_tunnel.png" alt="" title="ssl_tunnel" width="617" height="380" class="alignnone size-full wp-image-2672" /></a></p>
<p>Nun aber muss man die Konfiguration vom OpenVPN Client noch ein bisschen tunen, welche man sich dank dem Client Export Utility problemlos und fix fertig herunterladen kann:</p>
<pre class="brush: bash; title: ; notranslate">dev tun
persist-tun
persist-key
proto tcp
cipher BF-CBC
tls-client
client
resolv-retry infinite
remote 127.0.0.1 12345
tls-remote vpn server Cert
auth-user-pass
pkcs12 vpn-server.p12
tls-auth vpn-server-tls.key 1
comp-lzo
</pre>
<p>Schliesslich soll der Traffic ja auch über den SSL Tunnel laufen.</p>
<p>Und schon ist alles konfiguriert und es kann verbunden werden!</p>
<pre class="brush: bash; title: ; notranslate">
Tue Sep 06 14:16:00 2011 [vpn_server_Cert] Peer Connection Initiated with 127.0.0.1:12345
</pre>
<p>Ich möchte nicht übertreiben, aber ich behaupte einfach mal, das ganze funktioniert hinter jeder Firmenfirewall, ausser eure Firma hat etwas gegen verschlüsselte Seiten oder euren Server explizit ausgesperrt!</p>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2011/09/ssl-vpn-gegen-asoziale-firewalls/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>NAT konfigurieren unter ESX(i)</title>
		<link>http://blog.encodingit.ch/2011/08/nat-konfigurieren-unter-esxi/</link>
		<comments>http://blog.encodingit.ch/2011/08/nat-konfigurieren-unter-esxi/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 12:15:15 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[ESXi]]></category>
		<category><![CDATA[pfSense]]></category>
		<category><![CDATA[Planet]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=2599</guid>
		<description><![CDATA[NAT ist so eine Sache. Unter Vmware Workstation sehr einfach und sauber gelöst, unter ESX(i) leider gänzlich unbekannt. Eigentlich ist es auf einem Server ja auch gar nicht erwünscht, da jeder Server sowieso seine eigene, fixe IP bekommt, jedoch aber ist bei mir nur der undenkbare Fall eingetreten, dass ich zu Testzwecken eben doch NAT gebrauchen könnte.
Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/02/installation-von-moodle-unter-debian/' rel='bookmark' title='Installation von Moodle unter Debian'>Installation von Moodle unter Debian</a> <small>Moodle ist eine Lernplattform auf Basis von Opensource, welche bereits...</small></li>
</ol><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>NAT ist so eine Sache. Unter Vmware Workstation sehr einfach und sauber gelöst, unter ESX(i) leider gänzlich unbekannt. Eigentlich ist es auf einem Server ja auch gar nicht erwünscht, da jeder Server sowieso seine eigene, fixe IP bekommt, jedoch aber ist bei mir nur der undenkbare Fall eingetreten, dass ich zu Testzwecken eben doch NAT gebrauchen könnte.</p>
<p>Also gilt es, das manuell einzurichten, was Vmware Workstation mir sonst abnimmt: Mit einem weiteren virtuellen Switch und einer Installation von pfSense.</p>
<p>Rein logisch sollte das so funktionieren: Der Client bezieht von pfSense eine interne IP, da er am selben Switch hängt, wie der DHCP. Ein Paket geht nun vom Client über den Switch zum LAN-Interface von pfSense und dann über das WAN-Interface auf den öffentlichen Switch ins Internet. Ganz einfach oder?</p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2011/08/esxi_nat.png"  rel="lightbox[2599]"><img class="alignnone size-large wp-image-2604" title="esxi_nat" src="http://blog.encodingit.ch/wp-content/uploads/2011/08/esxi_nat-1024x629.png" alt="" width="655" height="402" /></a></p>
<p>Als erstes wird der virtuelle Switch zugefügt. Jedoch wird dieser nicht an ein virtuelles Interface gebunden, schliesslich soll da ja nichts nach draussen gehen.<br />
Nun wir eine VM erstellt mit zwei Netzwerkkarten, eine ans &#8220;VM Network&#8221;, welches über das Netzwerk erreichbar ist, und eine an das eben erstellte Netzwerk, nennen wir es &#8220;NAT Network&#8221;. Darauf wird nun pfSense installiert. Die Konfiguration ist gänzlich normal, es muss nur darauf geachtet werden, dass das WAN Interface der Karte mit Anbindung an das &#8220;VM Network&#8221; und das LAN Interface der Karte mit Anbindung an das &#8220;NAT Network&#8221; entspricht.</p>
<p>In ESX(i) würde das nun etwa so aussehen:</p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2011/08/network.png"  rel="lightbox[2599]"><img class="alignnone size-medium wp-image-2600" title="network" src="http://blog.encodingit.ch/wp-content/uploads/2011/08/network-300x298.png" alt="" width="300" height="298" /></a></p>
<p>Nun kann eine neue Maschine einfach dem &#8220;NAT Network&#8221; zugefügt werden, und bezieht via DHCP eine IP Adresse! So schwer ist das ja gar nicht <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br /><p>Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/02/installation-von-moodle-unter-debian/' rel='bookmark' title='Installation von Moodle unter Debian'>Installation von Moodle unter Debian</a> <small>Moodle ist eine Lernplattform auf Basis von Opensource, welche bereits...</small></li>
</ol></p><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2011/08/nat-konfigurieren-unter-esxi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notification von Nagios ans iPhone</title>
		<link>http://blog.encodingit.ch/2011/08/notification-von-nagios-ans-iphone/</link>
		<comments>http://blog.encodingit.ch/2011/08/notification-von-nagios-ans-iphone/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 10:21:47 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[IPhone]]></category>
		<category><![CDATA[Planet]]></category>
		<category><![CDATA[Prowl]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=2582</guid>
		<description><![CDATA[Auf der Suche nach einer Lösung, wie ich die Notifications von meinem Ubuntu Server mit Nagios auf mein iPhone bekomme, bin ich über eine Funktion gestolpert, die ich zuerst gar nicht bedacht habe....<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>Auf der Suche nach einer Lösung, wie ich die Notifications von meinem Ubuntu Server mit Nagios auf mein iPhone bekomme, bin ich über eine Funktion gestolpert, die ich zuerst gar nicht bedacht habe&#8230;.<br />
Meine erste Idee war via SMS; nur bräuchte ich dazu einen SMS-Gateway, der meine Notifications weiterleitet, und diese sind nicht immer ganz billig leider. Auch eMail hatte ich bedacht, jedoch ist dies nicht gerade komfortabel, da diese nicht so schnell und nicht so offensichtlich auf dem iPhone erscheinen wie eine SMS.<br />
Erst beim googeln bin ich auf die iPhone-Push-Benachrichtigung gestossen, welche jedes iPhone ja standardmässig integriert hat. Ich habe dabei zuerst Lösungen mit Mac-Server gefunden, und wollte die Idee auch schon abschreiben, als ich über den Dienst Prowl gestossen bin. Diese bieten eine API und ein Perl-Script an, welche eine Mitteilung von meinem Linux-Server über den Mac-Server von Prowl auf mein iPhone übertragen kann. Alles was ich dazu brauche ist die Prowl App aus dem App-Store.</p>
<p>Und das Einrichten ist auch gänzlich einfach.<br />
Auf der Seite von <a href="http://www.prowlapp.com/"  target="_blank">Prowl</a> muss ich mich registrieren und die passende <a href="http://itunes.apple.com/us/app/prowl-growl-client/id320876271?mt=8"  target="_blank">App aus dem Store</a> herunterladen.<br />
Nun lade ich das <a href="http://www.prowlapp.com/static/prowl.pl"  target="_blank">Perl-Script</a> von der Seite auf meine Server:</p>
<pre class="brush: bash; title: ; notranslate">wget http://www.prowlapp.com/static/prowl.pl</pre>
<p>Hier muss man daran denken, dass das Script für den Benutzer zugänglich sein muss, unter welchem auch das Nagios läuft!</p>
<p>Nun müssen noch die passenden Pakete installiert werden:</p>
<pre class="brush: bash; title: ; notranslate">aptitude install libwww-perl libcrypt-ssleay-perl</pre>
<p>Wenn nun alles funktioniert hat, so kann die erste Nachricht versandt werden:</p>
<pre class="brush: bash; title: ; notranslate">./prowl.pl -apikey=&quot;ENTER_APIKEY&quot; -application=&quot;Nagios&quot; -event=&quot;Notification&quot; -notification=&quot;Dies ist ein Test&quot;</pre>
<p>Klinget es auf dem Handy, so kann man das ganze noch in Nagios integrieren. Dazu wird ein neuer Kontakt angelegt unter /usr/local/nagios/etc/objects/contacts.cfg:</p>
<pre class="brush: bash; title: ; notranslate">define contact {
        contact_name                    patrick_iphone
        alias                           Patrick
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r,f,s
        host_notification_options       d,u,r,f,s
        service_notification_commands   notify-service-by-prowl
        host_notification_commands      notify-host-by-prowl
        _prowl_apikey                   ENTER_APIKEY
}</pre>
<p><span id="more-2582"></span></p>
<p>Dann muss noch die Gruppe ergänzt werden:</p>
<pre class="brush: bash; title: ; notranslate">define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 nagiosadmin, patrick_iphone
        }</pre>
<p>Nun kann unter /usr/local/nagios/etc/objects/commands.cfg das oder die passenden Kommandos zugefügt werden:</p>
<pre class="brush: bash; title: ; notranslate"># PROWL
define command {
        command_name    notify-host-by-prowl
        command_line    /usr/bin/perl -w /home/nagios/prowl.pl -apikey=&quot;$_CONTACTPROWL_APIKEY$&quot; -priority=1 -application=&quot;$HOSTNAME$&quot; -event=&quot;$HOSTSTATE$&quot; -notification=&quot;$HOSTOUTPUT$&quot;
}

define command {
        command_name    notify-service-by-prowl
        command_line    /usr/bin/perl -w /home/nagios/prowl.pl -apikey=&quot;$_CONTACTPROWL_APIKEY$&quot; -priority=1 -application=&quot;$HOSTNAME$ $SERVICEDESC$&quot; -event=&quot;$SERVICESTATE$&quot; -notification=&quot;$SERVICEOUTPUT$&quot;
}</pre>
<p>Nun noch Nagios neu starten und schon werden alle Ausfälle oder sonstige Erinnerungen ans iPhone übermittelt.<br />
Die API erlaubt es aktuell 1000 Mitteilungen pro Stunde zu versenden. Bezahlen tut man nur für die iPhone App, das Versenden von Mitteilungen ist gratis.</p>
<p>Vielen Dank an <a href="http://blog.netways.de/2009/08/05/nagios-benachrichtigungen-direkt-an-iphone-pushen/"  target="_blank">Julian</a> für die Idee!</p>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2011/08/notification-von-nagios-ans-iphone/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cobbler mit openSUSE</title>
		<link>http://blog.encodingit.ch/2011/06/cobbler-mit-opensuse/</link>
		<comments>http://blog.encodingit.ch/2011/06/cobbler-mit-opensuse/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 16:50:48 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[Suse]]></category>
		<category><![CDATA[Cobbler]]></category>
		<category><![CDATA[Planet]]></category>
		<category><![CDATA[PXE]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=2423</guid>
		<description><![CDATA[Für eine Testumgebung musste ich heute 30 neue Maschinen installieren. Und da ich zu faul war, alles von Hand zu installieren, musste eine andere Lösung her.
Und da ich Cobbler, ein System aus dem Hause von Red Hat, bereits kenne, war dies mein erster Gedanke - auch wenn es an Vergewaltigung grenzt!
Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/05/opensuse-mit-asp-net-unterstutzung/' rel='bookmark' title='OpenSUSE mit ASP.NET-Unterstützung'>OpenSUSE mit ASP.NET-Unterstützung</a> <small>Für einen Kunden habe ich letzthin ein OpenSUSE installiert. Neben...</small></li>
<li><a href='http://blog.encodingit.ch/2011/03/dynamic-host-configuration-protocol/' rel='bookmark' title='Dynamic Host Configuration Protocol'>Dynamic Host Configuration Protocol</a> <small>Ein anderer Bestandteil von LPIC 201 ist DHCP. Doch bevor...</small></li>
</ol><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>Für eine Testumgebung musste ich heute 30 neue Maschinen installieren. Und da ich zu faul war, alles von Hand zu installieren, musste eine andere Lösung her.<br />
Da ich Cobbler, ein System aus dem Hause Red Hat, bereits kenne, war dies mein erster Gedanke &#8211; auch wenn es an Vergewaltigung grenzt, schliesslich will ich ja openSUSE 11.4 installieren! <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Also habe ich ein System von Hand aufgesetzt und darauf Cobbler samt Webinterface und TFTP installiert:</p>
<pre class="brush: bash; title: ; notranslate">
zypper ar http://download.opensuse.org/distribution/11.4/repo/oss/ oss
zypper ar http://download.opensuse.org/update/11.4/ updates
zypper ar http://download.opensuse.org/repositories/systemsmanagement/openSUSE_11.4/ cobbler
zypper ref -s
zypper install apache2-mod_python
zypper install cobbler cobbler-web atftp dhcp-server
</pre>
<p>Da ich während dem Installieren nicht ungebetene Besucher in meinem System will, aktiviere ich die Authentifizierung für das Webinterface:</p>
<pre class="brush: bash; title: ; notranslate">
sed -i 's/module = authn_denyall/module = authn_configfile/' /etc/cobbler/modules.conf
</pre>
<p>Dann muss ich noch die passende IP einfügen:</p>
<pre class="brush: bash; title: ; notranslate">
IP=&quot;192.168.1.10&quot;
sed -i &quot;s/^server: 127.0.0.1/server: $IP/&quot; /etc/cobbler/settings
sed -i &quot;s/^next_server: 127.0.0.1/next_server: $IP/&quot; /etc/cobbler/settings
</pre>
<p>Da meine Maschinen auch gleich via Netzwerk booten sollen, muss ich den DHCP noch an Cobbler übergeben:</p>
<pre class="brush: bash; title: ; notranslate">
sed -i 's/^manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings
</pre>
<p>Nun darf die dhcpd.conf-Datei nicht mehr direkt bearbeitet werden. Dazu gibt es nun das Template unter /etc/cobbler/dhcpd.template:</p>
<pre class="brush: bash; title: ; notranslate">
# ******************************************************************
# Cobbler managed dhcpd.conf file
#
# generated from cobbler dhcp.conf template ($date)
# Do NOT make changes to /etc/dhcpd.conf. Instead, make your changes
# in /etc/cobbler/dhcp.template, as /etc/dhcpd.conf will be
# overwritten.
#
# ******************************************************************

ddns-update-style interim;

allow booting;
allow bootp;

ignore client-updates;
set vendorclass = option vendor-class-identifier;

subnet 192.168.1.0 netmask 255.255.255.0 {
     option routers             192.168.1.1;
     option domain-name-servers 192.168.1.9;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        192.168.1.150 192.168.1.254;
     filename                   &quot;pxelinux.0&quot;;
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                $next_server;
}

#for dhcp_tag in $dhcp_tags.keys():
    ## group could be subnet if your dhcp tags line up with your subnets
    ## or really any valid dhcpd.conf construct ... if you only use the
    ## default dhcp tag in cobbler, the group block can be deleted for a
    ## flat configuration
# group for Cobbler DHCP tag: $dhcp_tag
group {
        #for mac in $dhcp_tags[$dhcp_tag].keys():
            #set iface = $dhcp_tags[$dhcp_tag][$mac]
    host $iface.name {
        hardware ethernet $mac;
        #if $iface.ip_address:
        fixed-address $iface.ip_address;
        #end if
        #if $iface.hostname:
        option host-name &quot;$iface.hostname&quot;;
        #end if
        #if $iface.subnet:
        option subnet-mask $iface.subnet;
        #end if
        #if $iface.gateway:
        option routers $iface.gateway;
        #end if
        filename &quot;$iface.filename&quot;;
        ## Cobbler defaults to $next_server, but some users
        ## may like to use $iface.system.server for proxied setups
        next-server $next_server;
        ## next-server $iface.next_server;
    }
        #end for
}
#end for
</pre>
<p><span id="more-2423"></span></p>
<p>Und damit die Maschinen auch nicht ewig neustarten, wird noch eine letzte Anpassung durchgeführt:</p>
<pre class="brush: bash; title: ; notranslate">
sed -i 's/^pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings
</pre>
<p>Nach dem neustarten der Services und einer letzten Einstellung ist die Installation schon abgeschlossen:</p>
<pre class="brush: bash; title: ; notranslate">
insserv apache2
insserv cobblerd
insserv dhcpd
rcapache2 restart
rccobblerd restart
rcatftpd start
insserv atftpd
sed -i 's/^DHCPD_INTERFACE=&quot;&quot;/DHCPD_INTERFACE=&quot;eth0&quot;/' /etc/sysconfig/dhcpd
cobbler get-loaders
cobbler sync
rm -f /etc/dhcpd.conf
ln -s /etc/dhcp/dhcpd.conf /etc/dhcpd.conf
rcdhcpd restart
rccobblerd restart
cobbler sync
</pre>
<p>Einloggen kann ich mich nun unter http://192.168.1.10/cobbler_web mit dem Benutzername &#8220;cobbler&#8221; und dem Passwort &#8220;cobbler&#8221;.</p>
<p>Nun muss ich openSUSE zu Cobbler zufügen. Dazu lade ich zuerst das Image herunter und mounte es unter /mnt:</p>
<pre class="brush: bash; title: ; notranslate">
wget http://mirror.switch.ch/ftp/mirror/opensuse/distribution/11.4/iso/openSUSE-11.4-DVD-x86_64.iso
mount -o loop -t iso9660 openSUSE-11.4-DVD-x86_64.iso /mnt
</pre>
<p>Dann kann ich das Image hinzufügen im GUI über den Punkt &#8220;Import DVD&#8221; und unter &#8220;Profile&#8221; ein neues Profil anlegen:</p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2011/06/profile_cobbler.png"  rel="lightbox[2423]"><img src="http://blog.encodingit.ch/wp-content/uploads/2011/06/profile_cobbler-300x167.png" alt="" title="profile_cobbler" width="300" height="167" class="alignnone size-medium wp-image-2432" /></a></p>
<p>Doch bevor das geht, muss ich eine Kickstart-Datei erstellen. Diese wird unter /var/lib/cobbler/kickstart angelegt. Eine solche Datei kann mit autoyast2 generiert werden. Am Schluss würde alles dann etwa so aussehen:</p>
<pre class="brush: bash; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE profile&gt;
&lt;profile xmlns=&quot;http://www.suse.com/1.0/yast2ns&quot; xmlns:config=&quot;http://www.suse.com/1.0/configns&quot;&gt;
  &lt;firewall&gt;
    &lt;enable_firewall config:type=&quot;boolean&quot;&gt;false&lt;/enable_firewall&gt;
    &lt;start_firewall config:type=&quot;boolean&quot;&gt;false&lt;/start_firewall&gt;
  &lt;/firewall&gt;
  &lt;general&gt;
    &lt;ask-list config:type=&quot;list&quot;/&gt;
    &lt;mode&gt;
      &lt;confirm config:type=&quot;boolean&quot;&gt;false&lt;/confirm&gt;
      &lt;final_reboot config:type=&quot;boolean&quot;&gt;true&lt;/final_reboot&gt;
    &lt;/mode&gt;
    &lt;mouse&gt;
      &lt;id&gt;none&lt;/id&gt;
    &lt;/mouse&gt;
    &lt;proposals config:type=&quot;list&quot;/&gt;
    &lt;signature-handling&gt;
      &lt;accept_file_without_checksum config:type=&quot;boolean&quot;&gt;true&lt;/accept_file_without_checksum&gt;
      &lt;accept_non_trusted_gpg_key config:type=&quot;boolean&quot;&gt;true&lt;/accept_non_trusted_gpg_key&gt;
      &lt;accept_unknown_gpg_key config:type=&quot;boolean&quot;&gt;true&lt;/accept_unknown_gpg_key&gt;
      &lt;accept_unsigned_file config:type=&quot;boolean&quot;&gt;true&lt;/accept_unsigned_file&gt;
      &lt;accept_verification_failed config:type=&quot;boolean&quot;&gt;true&lt;/accept_verification_failed&gt;
      &lt;import_gpg_key config:type=&quot;boolean&quot;&gt;true&lt;/import_gpg_key&gt;
    &lt;/signature-handling&gt;
  &lt;/general&gt;
 &lt;networking&gt;
    &lt;keep_install_network config:type=&quot;boolean&quot;&gt;true&lt;/keep_install_network&gt;
      &lt;dns&gt;
        &lt;dhcp_hostname config:type=&quot;boolean&quot;&gt;true&lt;/dhcp_hostname&gt;
        &lt;dhcp_resolv config:type=&quot;boolean&quot;&gt;true&lt;/dhcp_resolv&gt;
        &lt;hostname&gt;$hostname&lt;/hostname&gt;
      &lt;/dns&gt;
  &lt;/networking&gt;
 &lt;partitioning config:type=&quot;list&quot;&gt;
        $SNIPPET('snippets_sles/partitioning_default_lvm_sles11')
  &lt;/partitioning&gt;
  &lt;software&gt;
        $SNIPPET('snippets_sles/packages_os11')
  &lt;/software&gt;
  &lt;timezone&gt;
    &lt;hwclock&gt;UTC&lt;/hwclock&gt;
    &lt;timezone&gt;Europe/Zurich&lt;/timezone&gt;
  &lt;/timezone&gt;
  &lt;users config:type=&quot;list&quot;&gt;
    &lt;user&gt;
      &lt;encrypted config:type=&quot;boolean&quot;&gt;true&lt;/encrypted&gt;
      &lt;fullname&gt;root&lt;/fullname&gt;
      &lt;gid&gt;0&lt;/gid&gt;
      &lt;home&gt;/root&lt;/home&gt;
      &lt;password_settings&gt;
        &lt;expire&gt;&lt;/expire&gt;
        &lt;flag&gt;&lt;/flag&gt;
        &lt;inact&gt;&lt;/inact&gt;
        &lt;max&gt;&lt;/max&gt;
        &lt;min&gt;&lt;/min&gt;
        &lt;warn&gt;&lt;/warn&gt;
      &lt;/password_settings&gt;
      &lt;shell&gt;/bin/bash&lt;/shell&gt;
      &lt;uid&gt;0&lt;/uid&gt;
      &lt;user_password&gt;$rootpw&lt;/user_password&gt;
      &lt;username&gt;root&lt;/username&gt;
    &lt;/user&gt;
  &lt;/users&gt;
  &lt;report&gt;
    &lt;errors&gt;
      &lt;log config:type=&quot;boolean&quot;&gt;true&lt;/log&gt;
      &lt;show config:type=&quot;boolean&quot;&gt;true&lt;/show&gt;
      &lt;timeout config:type=&quot;integer&quot;&gt;0&lt;/timeout&gt;
    &lt;/errors&gt;
    &lt;messages&gt;
      &lt;log config:type=&quot;boolean&quot;&gt;true&lt;/log&gt;
      &lt;show config:type=&quot;boolean&quot;&gt;true&lt;/show&gt;
      &lt;timeout config:type=&quot;integer&quot;&gt;0&lt;/timeout&gt;
    &lt;/messages&gt;
    &lt;warnings&gt;
      &lt;log config:type=&quot;boolean&quot;&gt;true&lt;/log&gt;
      &lt;show config:type=&quot;boolean&quot;&gt;true&lt;/show&gt;
      &lt;timeout config:type=&quot;integer&quot;&gt;0&lt;/timeout&gt;
    &lt;/warnings&gt;
    &lt;yesno_messages&gt;
      &lt;log config:type=&quot;boolean&quot;&gt;true&lt;/log&gt;
      &lt;show config:type=&quot;boolean&quot;&gt;true&lt;/show&gt;
      &lt;timeout config:type=&quot;integer&quot;&gt;0&lt;/timeout&gt;
    &lt;/yesno_messages&gt;
  &lt;/report&gt;
  &lt;runlevel&gt;
    &lt;default&gt;5&lt;/default&gt;
      &lt;service&gt;
        &lt;service_name&gt;sshd&lt;/service_name&gt;
        &lt;service_start&gt;3 5&lt;/service_start&gt;
        &lt;service_status&gt;enable&lt;/service_status&gt;
      &lt;/service&gt;
  &lt;/runlevel&gt;
  &lt;scripts&gt;
    &lt;post-scripts config:type=&quot;list&quot;&gt;
      &lt;script&gt;
        &lt;debug config:type=&quot;boolean&quot;&gt;false&lt;/debug&gt;
        &lt;feedback config:type=&quot;boolean&quot;&gt;false&lt;/feedback&gt;
        &lt;feedback_type&gt;&lt;/feedback_type&gt;
        &lt;filename&gt;post_install&lt;/filename&gt;
        &lt;interpreter&gt;shell&lt;/interpreter&gt;
        &lt;location&gt;&lt;![CDATA[]]&gt;&lt;/location&gt;
        &lt;network_needed config:type=&quot;boolean&quot;&gt;true&lt;/network_needed&gt;
        &lt;notification&gt;Bitte warten ...&lt;/notification&gt;
        &lt;source&gt;&lt;![CDATA[/etc/init.d/sshd restart
echo 'search encodingit.ch' &gt;&gt; /etc/resolv.conf
chkconfig sshd on
zypper update -y
zypper dist-upgrade -y
cd /root
mkdir --mode=700 .ssh
cat &gt;&gt; .ssh/authorized_keys &lt;&lt; &quot;PUBLIC_KEY&quot;
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/tGYAdCxqFs8xuryisenGmk4ChEutd3Xi7WfMZsafMyGrvtBBFWUInKeF7G3GE85AxP4G4wOdn2Au3k23jSpfvbP5O/NIEMNizlzMFChu7NDC57NwMm/n+/Y6HMgHZs+LVavKrVP9MUMfif3+odOUYVxK+8BwP8So1K21UJcIgYhd48Fqw9aBYd+jXvg/QFAnXGCIARNsn51kkWYci9LuoApVg0ktJjnHIvxgs75hZsmiXH/VqU/MCv90oe0OBN1C4vABN5XIPjzOZ0HX8MQBITAdujjWqdqzictkz5vk6O0QWDVxzsxz4wgJgnF7fEGxd7t/8mInzEqMbJe4C/iJ root@cobbler
PUBLIC_KEY
chmod 600 .ssh/authorized_keys]]&gt;&lt;/source&gt;
      &lt;/script&gt;
    &lt;/post-scripts&gt;
  &lt;/scripts&gt;
&lt;/profile&gt;
</pre>
<p>ACHTUNG: Wer wie ich kein DNS im Netzwerk hat, der muss unter dem Punkt &#8220;Distro&#8221; bei &#8220;Kernel Options&#8221; den Hostnamen von Cobbler durch die IP ersetzen, damit alles klappt.</p>
<p>Damit auch alles problemlos durchläuft, müssen noch ein paar Snippets eingefügt werden unter /var/lib/cobbler/snippets/snippets_sles. So partitioning_default_lvm_sles11:</p>
<pre class="brush: bash; title: ; notranslate">
# requires: ksmeta Swap : (optional) containing the size of swap in megabytes
    &lt;drive&gt;
      &lt;initialize config:type=&quot;boolean&quot;&gt;true&lt;/initialize&gt;
      &lt;partitions config:type=&quot;list&quot;&gt;
        &lt;partition&gt;
          &lt;create config:type=&quot;boolean&quot;&gt;true&lt;/create&gt;
          &lt;crypt_fs config:type=&quot;boolean&quot;&gt;false&lt;/crypt_fs&gt;
          &lt;filesystem config:type=&quot;symbol&quot;&gt;ext3&lt;/filesystem&gt;
          &lt;format config:type=&quot;boolean&quot;&gt;true&lt;/format&gt;
          &lt;loop_fs config:type=&quot;boolean&quot;&gt;false&lt;/loop_fs&gt;
          &lt;mount&gt;/boot&lt;/mount&gt;
          &lt;mountby config:type=&quot;symbol&quot;&gt;device&lt;/mountby&gt;
          &lt;partition_id config:type=&quot;integer&quot;&gt;131&lt;/partition_id&gt;
          &lt;partition_nr config:type=&quot;integer&quot;&gt;1&lt;/partition_nr&gt;
          &lt;resize config:type=&quot;boolean&quot;&gt;false&lt;/resize&gt;
          &lt;size&gt;500M&lt;/size&gt;
        &lt;/partition&gt;
        &lt;partition&gt;
          &lt;create config:type=&quot;boolean&quot;&gt;true&lt;/create&gt;
          &lt;lvm_group&gt;vg00&lt;/lvm_group&gt;
          &lt;mountby config:type=&quot;symbol&quot;&gt;device&lt;/mountby&gt;
          &lt;partition_id config:type=&quot;integer&quot;&gt;142&lt;/partition_id&gt;
          &lt;partition_nr config:type=&quot;integer&quot;&gt;2&lt;/partition_nr&gt;
          &lt;resize config:type=&quot;boolean&quot;&gt;false&lt;/resize&gt;
          &lt;size&gt;max&lt;/size&gt;
        &lt;/partition&gt;
      &lt;/partitions&gt;
      &lt;pesize&gt;&lt;/pesize&gt;
      &lt;type config:type=&quot;symbol&quot;&gt;CT_DISK&lt;/type&gt;
      &lt;use&gt;all&lt;/use&gt;
    &lt;/drive&gt;
    &lt;drive&gt;
      &lt;device&gt;/dev/vg00&lt;/device&gt;
      &lt;initialize config:type=&quot;boolean&quot;&gt;true&lt;/initialize&gt;
      &lt;partitions config:type=&quot;list&quot;&gt;
        &lt;partition&gt;
          &lt;create config:type=&quot;boolean&quot;&gt;true&lt;/create&gt;
          &lt;crypt_fs config:type=&quot;boolean&quot;&gt;false&lt;/crypt_fs&gt;
          &lt;filesystem config:type=&quot;symbol&quot;&gt;swap&lt;/filesystem&gt;
          &lt;format config:type=&quot;boolean&quot;&gt;true&lt;/format&gt;
          &lt;loop_fs config:type=&quot;boolean&quot;&gt;false&lt;/loop_fs&gt;
          &lt;lv_name&gt;lv_swap&lt;/lv_name&gt;
          &lt;mount&gt;swap&lt;/mount&gt;
          &lt;mountby config:type=&quot;symbol&quot;&gt;device&lt;/mountby&gt;
          &lt;partition_id config:type=&quot;integer&quot;&gt;130&lt;/partition_id&gt;
          &lt;resize config:type=&quot;boolean&quot;&gt;false&lt;/resize&gt;
#if $getVar(&quot;Swap&quot;,&quot;&quot;) != &quot;&quot;
          &lt;size&gt;${Swap}M&lt;/size&gt;
#else
          &lt;size&gt;2048M&lt;/size&gt;
#end if
        &lt;/partition&gt;
        &lt;partition&gt;
          &lt;create config:type=&quot;boolean&quot;&gt;true&lt;/create&gt;
          &lt;crypt_fs config:type=&quot;boolean&quot;&gt;false&lt;/crypt_fs&gt;
          &lt;filesystem config:type=&quot;symbol&quot;&gt;ext3&lt;/filesystem&gt;
          &lt;format config:type=&quot;boolean&quot;&gt;true&lt;/format&gt;
          &lt;loop_fs config:type=&quot;boolean&quot;&gt;false&lt;/loop_fs&gt;
          &lt;lv_name&gt;lv_root&lt;/lv_name&gt;
          &lt;mount&gt;/&lt;/mount&gt;
          &lt;mountby config:type=&quot;symbol&quot;&gt;device&lt;/mountby&gt;
          &lt;partition_id config:type=&quot;integer&quot;&gt;131&lt;/partition_id&gt;
          &lt;resize config:type=&quot;boolean&quot;&gt;false&lt;/resize&gt;
          &lt;size&gt;max&lt;/size&gt;
        &lt;/partition&gt;
      &lt;/partitions&gt;
      &lt;pesize&gt;4M&lt;/pesize&gt;
      &lt;type config:type=&quot;symbol&quot;&gt;CT_LVM&lt;/type&gt;
      &lt;use&gt;all&lt;/use&gt;
    &lt;/drive&gt;
</pre>
<p>Und auch noch packages_os11:</p>
<pre class="brush: bash; title: ; notranslate">
&lt;patterns config:type=&quot;list&quot;&gt;
      &lt;pattern&gt;base&lt;/pattern&gt;
      &lt;pattern&gt;apparmor&lt;/pattern&gt;
      &lt;pattern&gt;gnome&lt;/pattern&gt;
      &lt;pattern&gt;file_server&lt;/pattern&gt;
      &lt;pattern&gt;x11&lt;/pattern&gt;
    &lt;/patterns&gt;
    &lt;packages  config:type=&quot;list&quot;&gt;
      &lt;package&gt;nss_ldap&lt;/package&gt;
      &lt;package&gt;pam_ldap&lt;/package&gt;
## required for kdump
      &lt;package&gt;kexec-tools&lt;/package&gt;
      &lt;package&gt;kdump&lt;/package&gt;
    &lt;/packages&gt;
</pre>
<p>Nun kann ich alle Systeme erfassen und zufügen. Da dies mehrere sind, habe ich das ganze über die Konsole gemacht:</p>
<pre class="brush: bash; title: ; notranslate">
hostname=Node1
mac=00:14:4F:20:03:08
ip=192.168.1.21
cobbler system edit --name=$hostname --hostname=$hostname.encodingit.ch --netboot-enable=true --dhcp-tag=$hostname --dns-name=$hostname --ip-address=$ip --mac-address=$mac
</pre>
<p>Zum Glück starten alle Maschinen direkt ab Netzwerk, wodurch ich die Maschinen nur via iLO neustarten musste. Dazu wiederrum habe ich das folgende Script mit expect geschrieben, wo ich nur noch den Hostnamen oder die IP vom iLO übergeben muss:</p>
<pre class="brush: bash; title: ; notranslate">
#!/usr/bin/expect
#
# Version 1.0
# by Patrick Schmid
#
spawn ssh root@[lindex $argv 0]

expect &quot;Password:&quot; {send &quot;password\r&quot;}

expect &quot;&gt; &quot; {send &quot;reset /SYS -script\r&quot;}

expect {
        &quot;Performing&quot; {puts stdout &quot;\nDone&quot;}
  default {puts stdout &quot;\nError&quot;}
}
</pre>
<p>Doch vorher noch das System synchronisieren:</p>
<pre class="brush: bash; title: ; notranslate">
cobbler sync
</pre>
<p>Nach etwa 20 Minuten sind alle Systeme installiert und konfiguriert. Voilà <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Vielen Dank an <a target="_blank" href="http://www.swissunixsupport.com/" >Gavin</a> und <a target="_blank" href="http://ugansert.blogspot.com/2011/04/cobbler-on-opensuse.html" >Uwe</a> für die Hilfe!</p>
<br /><p>Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/05/opensuse-mit-asp-net-unterstutzung/' rel='bookmark' title='OpenSUSE mit ASP.NET-Unterstützung'>OpenSUSE mit ASP.NET-Unterstützung</a> <small>Für einen Kunden habe ich letzthin ein OpenSUSE installiert. Neben...</small></li>
<li><a href='http://blog.encodingit.ch/2011/03/dynamic-host-configuration-protocol/' rel='bookmark' title='Dynamic Host Configuration Protocol'>Dynamic Host Configuration Protocol</a> <small>Ein anderer Bestandteil von LPIC 201 ist DHCP. Doch bevor...</small></li>
</ol></p><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2011/06/cobbler-mit-opensuse/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ubuntu auf dem Galaxy Tab</title>
		<link>http://blog.encodingit.ch/2011/06/ubuntu-auf-dem-galaxy-tab/</link>
		<comments>http://blog.encodingit.ch/2011/06/ubuntu-auf-dem-galaxy-tab/#comments</comments>
		<pubDate>Fri, 03 Jun 2011 06:48:45 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Galaxy Tab]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[chroot]]></category>
		<category><![CDATA[Hacker]]></category>
		<category><![CDATA[Planet]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=2361</guid>
		<description><![CDATA[Aus einer dummen Idee heraus, bin ich auf die Idee gekommen, Ubuntu auf meinem Galaxy Tab zu installieren.
Nach ein bisschen rumgoogeln bin ich auf die Seite der xda-developers gestossen, mit einer mehr oder weniger funktionstüchtigen Lösung.
Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/04/ubuntu-cola/' rel='bookmark' title='Ubuntu Cola'>Ubuntu Cola</a> <small>Ubuntu ist die erste Cola in der Schweiz, welche mit...</small></li>
<li><a href='http://blog.encodingit.ch/2011/02/k-o-fur-samsung-galaxy-tab/' rel='bookmark' title='K.O. für Samsung Galaxy Tab'>K.O. für Samsung Galaxy Tab</a> <small>Das Galaxy Tab wurde standardmässig mit FAT formatiert, wobei Dateien,...</small></li>
<li><a href='http://blog.encodingit.ch/2011/05/der-alptraum-fur-jeden-computer/' rel='bookmark' title='Der Alptraum für jeden Computer'>Der Alptraum für jeden Computer</a> <small>Heute ist mein Teensy++ 2.0 endlich aus der USA rübergeflogen...</small></li>
</ol><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></description>
			<content:encoded><![CDATA[<p>Aus einer dummen Idee heraus, bin ich auf die Idee gekommen, Ubuntu auf meinem Galaxy Tab zu installieren.<br />
Nach ein bisschen rumgoogeln bin ich auf die Seite der <a target="_blank" href="http://forum.xda-developers.com/showthread.php?t=823370" >xda-developers</a> gestossen, mit einer mehr oder weniger funktionstüchtigen Lösung:</p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2011/06/IMG_0914.jpg"  rel="lightbox[2361]"><img src="http://blog.encodingit.ch/wp-content/uploads/2011/06/IMG_0914-300x224.jpg" alt="" title="IMG_0914" width="300" height="224" class="alignnone size-medium wp-image-2368" /></a>  <a href="http://blog.encodingit.ch/wp-content/uploads/2011/06/IMG_0919.jpg"  rel="lightbox[2361]"><img src="http://blog.encodingit.ch/wp-content/uploads/2011/06/IMG_0919-224x300.jpg" alt="" title="IMG_0919" width="224" height="300" class="alignnone size-medium wp-image-2373" /></a></p>
<p>Alles was man braucht ist ein <a href="http://blog.encodingit.ch/2011/01/galaxy-tab-rooten/" >gerootetes Galaxy Tab</a>. Weiter muss das folgende installiert werden:</p>
<ul>
<li>Busybox</li>
<li>Superuser</li>
<li>AndroidVNC</li>
<li>Terminal Emulator</li>
</ul>
<p>Und natürlich noch das wichtigste: die Core-Dateien von <a target="_blank" href="http://www.multiupload.com/O8QVR5H203" >hier</a></p>
<p>Zum kopieren wird das SDK und die darin enthaltene Datei adb verwendet. Bei su muss das Tab entsperrt sein und die Anfrage auf dem Display berechtigt werden:</p>
<pre class="brush: bash; title: ; notranslate">
cd C:/sdk/plattform-tools
adb.exe shell
su
cd /sdcard/
mkdir ubuntu
exit
</pre>
<p>Nun könnten die Daten rüberkopiert werden. Jedoch, aus welchen Gründen auch immer, versucht das Skript bootlinux das Image als ext4 zu mounten, was das Tab dummerweise gar nicht unterstützt&#8230; Also muss das zuerst noch angepasst werden:</p>
<p><span id="more-2361"></span></p>
<pre class="brush: bash; title: ; notranslate">
#modprobe ext4
mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system
export kit=/sdcard/ubuntu
export bin=/system/bin
if [ ! -d /data/local/ubuntu ]
then
mkdir /data/local/ubuntu
fi
export mnt=/data/local/ubuntu
export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
mknod /dev/loop5 b 7 0
losetup /dev/block/loop5 /sdcard/ubuntu/ubuntu.img
mount -t ext2 /dev/block/loop5 /data/local/ubuntu
#mount -o loop,noatime -t ext4 $kit/ubuntu.img $mnt
mount -t devpts devpts $mnt/dev/pts
mount -t proc proc $mnt/proc
mount -t sysfs sysfs $mnt/sys
sysctl -w net.ipv4.ip_forward=1
echo &quot;Setting /etc/resolv.conf to Google Open DNS 8.8.8.8 and 8.8.4.4&quot;
echo &quot;nameserver 8.8.8.8&quot; &gt; $mnt/etc/resolv.conf
echo &quot;nameserver 8.8.4.4&quot; &gt;&gt; $mnt/etc/resolv.conf
echo &quot;Setting localhost on /etc/hosts &quot;
echo &quot;127.0.0.1 localhost&quot; &gt; $mnt/etc/hosts
echo &quot;Created by KellyLewis3985 and BThomas22x! &quot;
echo &quot;Brought to you by Team Viper! &quot;
echo &quot; &quot;
chroot $mnt /bin/bash

#After exit command is executed clear it all up
echo &quot; &quot;

echo &quot;Shutting down Ubuntu&quot;
umount $mnt/dev/pts
umount $mnt/proc
umount $mnt/sys
umount $mnt
</pre>
<p>Nun können die Dateien rüberkopiert werden. Und keine Panik, das Image dauert etwas länger <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> :</p>
<pre class="brush: bash; title: ; notranslate">
adb.exe push bootlinux /sdcard/ubuntu
adb.exe push fsrw /sdcard/ubuntu
adb.exe push mountonly /sdcard/ubuntu
adb.exe push ubuntu.sh /sdcard/ubuntu
adb.exe push unionfs /sdcard/ubuntu
adb.exe push ubuntu.img /sdcard/ubuntu
</pre>
<p>Nun kommt nochmal adb.exe shell zum Einsatz:</p>
<pre class="brush: bash; title: ; notranslate">
cd /sdcard/ubuntu
sh ./ubuntu.sh
bootlinux
</pre>
<p><iframe width="560" height="349" src="http://www.youtube.com/embed/z6htsQpMVZk" frameborder="0" allowfullscreen>Bitte Besuche die Seite, um das Video zu sehen!</iframe></p>
<p>Und schon läuft Ubuntu auf dem Tab. Ich habe mir noch Openssh-server installiert, damit ich immer wieder darauf zugreifen kann:</p>
<pre class="brush: bash; title: ; notranslate">
apt-get install openssh-server
/etc/init.d/ssh restart
</pre>
<p>Und erstaunlicherweise wird das Tab nicht merklich langsamer <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Wer nun will, der kann sich noch einen VNC-Server einrichten, damit er das GUI benützen kann, der muss diesen auf dem Linux zuerst einrichten:</p>
<pre class="brush: bash; title: ; notranslate">
rm -rf /tmp/.X*
export USER=root
vncserver -geometry 1280x800
</pre>
<p>Danach kann über AndroidVNC verbunden werden:</p>
<p><iframe width="560" height="349" src="http://www.youtube.com/embed/sKo0sbXIg_M" frameborder="0" allowfullscreen>Bitte Besuche die Seite, um das Video zu sehen!</iframe></p>
<p>Der Nickname ist &#8220;root&#8221;, das Passwort &#8220;ubuntu&#8221; und das alles unter &#8220;localhost&#8221; über Port 5901:</p>
<p><iframe width="560" height="349" src="http://www.youtube.com/embed/oQrwhJZXwgU" frameborder="0" allowfullscreen>Bitte Besuche die Seite, um das Video zu sehen!</iframe></p>
<p>Vielleicht gibt es bald eine Lösung mit Dualboot, das wär cool <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Denn die Netbook-Edition stell ich mir noch ganz angenehm vor auf dem Tablet&#8230; Oder was denkt ihr? Würdet ihr bei Android bleiben, wenn es eine passende Ubuntu-Version gäbe?</p>
<br /><p>Das könnte dich auch interessieren:<ol>
<li><a href='http://blog.encodingit.ch/2011/04/ubuntu-cola/' rel='bookmark' title='Ubuntu Cola'>Ubuntu Cola</a> <small>Ubuntu ist die erste Cola in der Schweiz, welche mit...</small></li>
<li><a href='http://blog.encodingit.ch/2011/02/k-o-fur-samsung-galaxy-tab/' rel='bookmark' title='K.O. für Samsung Galaxy Tab'>K.O. für Samsung Galaxy Tab</a> <small>Das Galaxy Tab wurde standardmässig mit FAT formatiert, wobei Dateien,...</small></li>
<li><a href='http://blog.encodingit.ch/2011/05/der-alptraum-fur-jeden-computer/' rel='bookmark' title='Der Alptraum für jeden Computer'>Der Alptraum für jeden Computer</a> <small>Heute ist mein Teensy++ 2.0 endlich aus der USA rübergeflogen...</small></li>
</ol></p><img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2011/06/ubuntu-auf-dem-galaxy-tab/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

