<?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>Neakros Blog &#187; SSH</title>
	<atom:link href="http://neakro.net/tag/ssh/feed" rel="self" type="application/rss+xml" />
	<link>http://neakro.net</link>
	<description>Man nennt es neudeutsch 'bloggen'.</description>
	<lastBuildDate>Tue, 01 Mar 2011 19:45:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Bestimmte Benutzer in SSH chroot einsperren</title>
		<link>http://neakro.net/2009/12/bestimmte-benutzer-in-ssh-chroot-einsperren.html</link>
		<comments>http://neakro.net/2009/12/bestimmte-benutzer-in-ssh-chroot-einsperren.html#comments</comments>
		<pubDate>Sat, 12 Dec 2009 18:28:44 +0000</pubDate>
		<dc:creator>Neakro</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[chroot]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://neakro.net/?p=165</guid>
		<description><![CDATA[Eigentlich ist es keine Kunst, aber wenn man das erste Mal damit zu tun hat, wird man doch ziemlich erschlagen. Deshalb gibt es hier kleine Übersicht der Möglichkeiten und eine nähere Erläuterung meiner Lösung, die von hier abgeleitet wurde. Alles gilt für Debian Lenny. Grundsätzlich gibt es folgende Möglichkeiten: SSH-Server in einer chroot-Umgebung auf einem [...]]]></description>
			<content:encoded><![CDATA[<p>Eigentlich ist es keine Kunst, aber wenn man das erste Mal damit zu tun hat, wird man doch ziemlich erschlagen. Deshalb gibt es hier kleine Übersicht der Möglichkeiten und eine nähere Erläuterung meiner Lösung, die von <a href="http://www.debian-administration.org/articles/590">hier</a> abgeleitet wurde.<br />
Alles gilt für <strong>Debian Lenny</strong>.</p>
<p>Grundsätzlich gibt es folgende Möglichkeiten:</p>
<ol>
<li>SSH-Server in einer chroot-Umgebung auf einem eigenen Port lauschen lassen.</li>
<li>Einen evtl. existierenden SSH-Server zu verwenden und nur bestimmte User per Konfigurationsdatei in eine chroot-Umgebung einzusperren.</li>
</ol>
<p><strong>Für 1.</strong> muss man eine relativ große chroot-Umgebung schaffen. D.h. man muss viele Konfigurationsdateien wie /etc/hostname, /etc/passwd, /etc/group etc. und natürlich auch sshd inklusive aller nötigen Bibliotheken in diese Umgebung kopieren. Außerdem muss man ein init-Skript anlegen, das den SSH-Server automatisch startet und /proc und einige /dev-Devices in die Umgebung mounten (u.a. devpts und ptmx).</p>
<p><strong>Bei 2.</strong> ist es einfacher. Seit Version 4.9 kann SSH unter Linux auch von sich aus (ausgewählte) Benutzer in eine chroot-Umgebung einsperren. Man kann sie sogar so zu &#8220;nur SFTP&#8221;-Benutzern degradieren. Dafür sind folgende Änderungen an der <em>/etc/ssh/sshd_config</em> nötig:</p>
<pre>Subsystem sftp internal-sftp</pre>
<p>Wenn man das normale SFTP-Subsystem benutzt kommt es zu Fehlern.</p>
<p>Nun konfiguriert man für spezielle Benutzer ein paar SSH-Optionen um:</p>
<pre>Match group sshchroot
         ChrootDirectory /home/%u
         X11Forwarding no
         AllowTcpForwarding no
         ForceCommand internal-sftp</pre>
<p>Die Option <em>ForceCommand</em> muss man auskommentieren, wenn die Benutzer auch Shell-Zugriff per SSH haben sollen.<br />
Das <em>%u</em> steht für den Usernamen. Das heißt, wenn ein Benutzer sich einloggt, ist er direkt in das Verzeichnis /home/&lt;username&gt; eingesperrt.</p>
<p>Anschließend fügt man die Benutzer zu der Gruppe <em>sshchroot</em> hinzu:</p>
<pre># adduser user sshchroot
# usermod -d / user
# chown root:root /home/user</pre>
<p>Es ist wichtig, dass das Wurzelverzeichnis der chroot-Umgebung dem Benutzer <em>root</em> gehört! Untergeordnete Verzeichnisse dürfen dann dem jeweiligen Benutzer gehören, in die er dann auch schreiben kann.</p>
<p>Wenn der Benutzer nun auch SSH-Zugang haben soll, muss eine passende chroot-Umgebung mit /bin/bash, /bin/ls etc. erstellt werden. Dies ist relativ einfach, aber je nach Umfang der chroot-Umgebung langwierig zu erstellen. Ganz am Anfang sollte man ein Homeverzeichnis unter /home/user/home/user für den Benutzer erstellen und es ihm als sein Heimatverzeichnis zuweisen:</p>
<pre># usermod -d /home/user user</pre>
<p>Am Beispiel von /bin/bash, welches dabei sein <strong>muss</strong>, erläutere ich das Vorgehen für das Hinzufügen von Programmen in die chroot-Umgebung. Natürlich sind Pfadangaben an den entsprechenden Stellen zu ersetzen.</p>
<ul>
<li>/bin/bash nach /home/user/bin/ kopieren</li>
<li><code>ldd /bin/bash</code> ausführen und die entsprechenden Bibliotheken nach /home/user/lib/ kopieren. Wichtig ist, dass /lib64/-Bibliotheken dann nach /home/user/lib64/ kopiert werden.</li>
<li>Konfigurationsdateien anlegen bzw. kopieren. Im Falle von /bin/bash ist das z.B. die Datei .bashrc im /home-Verzeichnis des Benutzers.</li>
</ul>
<p>Anschließend kann die Umgebung getestet werden:</p>
<pre># chroot /home/user</pre>
<p>Wenn nun ein Fehler erscheint sollte man seine Schritte nochmals überprüfen. Per <code>exit</code> verlässt man die chroot-Umgebung wieder.</p>
<p>Als letztes folgt der Test per SSH, wenn dieser erfolgreich verläuft hat man es geschafft und einen Benutzer erfolgreich eingesperrt.</p>
]]></content:encoded>
			<wfw:commentRss>http://neakro.net/2009/12/bestimmte-benutzer-in-ssh-chroot-einsperren.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
