chroot Jail für SSH/SCP/SFTP

##############################################################################
Chroot Jail für SCP/SFTP/SSH

Methode 1

SFTP (Chroot)
lynx https://server/pages/viewpage.action?pageId=6033613

cp -frv /etc/ssh/sshd_config /etc/ssh/sshd_config.BAK

vi /etc/ssh/sshd_config		->
	Subsystem       sftp    internal-sftp

	Match User hd1sftp
		ChrootDirectory %h
		ForceCommand internal-sftp
		AllowTcpForwarding no
		PermitTunnel no
		X11Forwarding no

useradd -g users ph1sftp
usermod -s /bin/false ph1sftp
passwd ph1sftp

mkdir /home/ph1sftp
mkdir /usr/sap/PH1/DIA
mkdir /home/ph1sftp/DIA/
mount --bind /usr/sap/PH1/DIA /home/ph1sftp/DIA/

chmod 777 /home/ph1sftp/DIA/
chown root:root /usr/sap/PH1/DIA

cp /etc/fstab /etc/fstab_`date +%Y%m%d-%H%M`_aoor && vi /etc/fstab	->
	/usr/sap/PH1/DIA /home/ph1sftp/DIA/ none bind

sftp ph1sftp@localhost

##############################################################################
Methode 2

"lynx https://github.com/systemseed/make_chroot_jail/blob/master/make_chroot_jail.sh"
"make_chroot_jail.sh testuser /bin/bash /jail" Hier werden alle benötigten Libs kopiert.
"vi /etc/ssh/sshd_config" ->
	#Subsystem      sftp    /usr/lib/ssh/sftp-server
	AllowUsers mr_pink
	Subsystem       sftp    internal-sftp
	Match User mr_pink
		ChrootDirectory "/music_exchange"
		X11Forwarding no
		AllowTcpForwarding no
		#AuthorizedKeysFile  /home/mr_pink/.ssh/id_rsa.pub
		AuthorizedKeysFile /music_exchange/home/mr_pink/.ssh/id_rsa.pub
		#ForceCommand internal-sftp			# Wenn aktiv, funktioniert nur SFTP kein SSH/SCP

"vi /etc/passwd"
	....
	mr_pink:x:1002:100::/home/mr_pink:/bin/bash


##############################################################################
Chroot Traffic Shaping (QoS). Für mehr Infos siehe QoS Doku.

#QoS fuer externen SSH/SFTP Zugriff
"tc qdisc add dev eth0.111 root handle 1:0 htb default 10"
#upload (OUTPUT)
"tc class add dev eth0.111 parent 1:0 classid 1:123 htb rate 128kbit ceil 128kbit"
"tc filter add dev eth0.111 parent 1: prio 0 protocol ip handle 123 fw flowid 1:123"
#download (INPUT)
"tc class add dev eth0.111 parent 1:0 classid 1:456 htb rate 1000mbit ceil 1000mbit"
"tc filter add dev eth0.111 parent 1: prio 0 protocol ip handle 456 fw flowid 1:456"
#
"tc qdisc show dev eth0.111"
"tc class show dev eth0.111"
"tc filter show dev eth0.111"
"tc -s -d qdisc show dev eth0.111"
#
"iptables -t mangle -A INPUT -p tcp --sport 64666 -j MARK --set-mark 456"
"iptables -t mangle -A INPUT -p tcp --dport 64666 -j MARK --set-mark 456"
"iptables -t mangle -A OUTPUT -p tcp --sport 64666 -j MARK --set-mark 123"
"iptables -t mangle -A OUTPUT -p tcp --dport 64666 -j MARK --set-mark 123"
"iptables -L -v -n -t mangle"
##############################################################################


##############################################################################################################################################################################################################
##############################################################################################################################################################################################################
##############################################################################################################################################################################################################
##############################################################################################################################################################################################################
Alte Methode


Konfiguration ssh/scp/sftp chroot Umgebung mit jailkit (http://olivier.sessink.nl/jailkit/index.html#intro)
User (hier im Beispiel vmware) bereits vorhanden inklusive Home Verzeichnis
"useradd -g users -s /bin/bash -c "Jail User" jail"
"passwd jail"

bei Suse 10.2 erst "pam_chroot.so" Datei installieren "wget http://surfnet.dl.sourceforge.net/sourceforge/pam-chroot/pam_chroot-0.9.2.tar.gz"
"tar -xvzf pam_chroot-0.9.2.tar.gz"
"cd pam_chroot-0.9.2"
"make"
"make install"

0. "wget http://olivier.sessink.nl/jailkit/jailkit-2.4.tar.gz"

1. Entpacken:
	"tar -xzvf <jailkit -2.1.tar.gz>"
2. Installation / Compilation:
	"./configure --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib --includedir=/usr/include"
	"make"
	"make install"
3. Jail Basis Verzeichnise und User erstellen:
	"useradd -g users -s /bin/bash -c "Remote Chroot Login" remote_login"
	"passwd remote_login"
	"mkdir /home/remote_login"	-> normales home Verzeichnis für Profileinstellungen und ssh Schlüssel
	"chown -R remote_login:users /home/remote_login/"
	"mkdir /root/jail/remote_login" 		-> Chroot Verzeichnis auf dem später der User landet
4. Basis Befhele / Shells / Librararies ins Jail Verzeichnis kopieren.
	"jk_init -v /root/jail/remote_login basicshell"
	"jk_init -v /root/jail/remote_login sftp scp"
	"jk_init -v /root/jail/remote_login ssh"
5. Nun die PAM Datei editieren:
	"vi /etc/pam.d/common-session"
   und folgende Zeilen hinzufügen:
   	"session required pam_chroot.so"
6. Nun dir chroot.conf Datei editieren:
	"vi /etc/security/chroot.conf"
   und folgende Zeilen hinzufügen:
   	"remote_login /root/jail/remote_login"
7. Das null Device erstellen im root Verzeichnis im Jail (ab jailkit 2.4 ist das nicht nötig)
	"mkdir /home/jail/dev"
   und dann die null Datei erstellen (ab jailkit 2.4 ist das nicht nötig)
   	"mknod urandom c 1 9" Sollte es nicht erstellt werden (die Datei kann auch leider nicht von anderen Systemem kopiert werden.)
   	"mknod null c 1 9"
   	"mknod tty c 1 9"
   Die Rechte der Datei für den User entsprechend anpassen
   	"chmod 777 oder 666 "
8. Das Home Verzeichnis für den chroot user erstellen und den Owner des Verzeichnises wechseln:
	"mkdir /root/jail/remote_login/home/remote_login"
	"chown -R remote_login:users /root/jail/remote_login/home/remote_login"
9. Die passwd anpassen
	"vi /root/jail/remote_login/etc/passwd"
   folgende Zeile hinzufügen
    	"remote_login:x:1001:100:Remote Chroot Login:/home/remote_login:/bin/bash"
    	Eventuell die root Zeile löschen
10. Die group Datei anpassen
	"vi /root/jail/remote_login/etc/group"
    Folgende Zeile hinzufügen
    	"users:x:100:"
    	Eventuell die root Zeile löschen
11. die Dateien "id" und "groups" ins jail kopieren:
	"cp -frv /usr/bin/groups /root/jail/remote_login/usr/bin/"
	"cp -frv /usr/bin/id /root/jail/remote_login/usr/bin/"
Eventuell noch ssh, ssh-keygen und sftp-server nach /root/jail/remote_login/usr/bin kopieren.
	"cp -frv /usr/local/libexec/sftp-server /root/jail/remote_login/usr/bin"
	"cp -frv /usr/bin/ssh-keygen /root/jail/remote_login/usr/bin"
	"cp -frv /usr/bin/ssh /root/jail/remote_login/usr/bin"
	Eventuell für SFTP (Da SFTP in der sshd_config dort ausgeführt wird):
	"mkdir /root/jail/remote_login/usr/local/libexec"
	"cp -frv usr/local/libexec/s* /root/jail/remote_login/usr/local/libexec"
	

Eventuell noch einen SSH RSA Zugang erstellen
"su - remote_login"
"ssh-keygen -v -b 8192 -t rsa -N ''"
"exit"
"mv /root/jail/remote_login/home/remote_login/.ssh/* /home/remote_login/.ssh"
"vi /home/remote_login/.ssh/id_rsa.pub"
"chown -R remote_login:users /home/remote_login/"

Info
Der normale ssh Zugang funktioniert leider nicht, sondern nur der sftp und scp zugriff


	

Zusatz info zu SSH
ssh remote_login@192.168.1.17 "/bin/bash -i"

rsync info:
cp -frv /usr/sbin/rsyncd /root/jail/remote_login/sbin/
cp -frv /usr/bin/rsync* /root/jail/remote_login/bin/
cp -frv /lib/libpopt.so* /root/jail/remote_login/lib/
cp -frv /usr/lib/libslp.so.1* /root/jail/remote_login/usr/lib/
cp -frv /lib/libcrypt* /root/jail/remote_login/lib/
	
</jailkit>

Post Revisions: