sftp chroot

Fórumok

Sziasztok!

Láttam, hogy ugyan már többször volt téma az sftp, de járható megoldás eddig (még) nem született (ahogy láttam).

Nekem azt kellene megoldanom, hogy bizonyos userek SFTP-vel is betudjanak lépni (sajnos muszáj). Proftpd+SSL is van, de van akinek csak SFTP jó.

Amiket eddig találtam:
http://lists.freebsd.org/pipermail/freebsd-bugs/2005-December/016147.ht…
Ezt beleírtam az openssh kódjába, lefordítottam, de nem nagyon akart működni. Ilyen szinten találkozott már valaki működő patchel?

http://www.howtoforge.com/mysecureshell_sftp_debian_etch
Ez teljesen jól működik, de mennyire lehet ez biztonságos?

Olyan megoldást keresnék, ahol nem kellene külön chrootolt környezetet létrehozni, hanem kb úgy mint az első megoldás ahogy működne, úgy tudna a user CSAK a saját HOME-jában tevékenykedni. Esetleg valami alternatív SFTP server? Gondoltam arra is, hogy a fentiek valamelyikét JAIL-ezni, és még mellé kigyomlálni az openssh kódját, hogy csak SFTP-t engedjen, és akkor 2 SSHD futna, az egyik a 22-n, a másik meg ott ahol én akarom, és ott csak én közlekedek! :)

Köszi!

Hozzászólások

ja igen rssh/scponly -t is ismerem, de más megoldást keresek.

Szia!
Van ahonnan egy eleve chroot-ot engedelyezo ssh csomag letoltheto (Talan redhat-ra). Most csak a leforditasra varo cuccot talaltam meg:
http://chrootssh.sourceforge.net/download/

Amugy nalam is rssh van illetve a chroot-on belul csak futtatasi joga van a usernek a nem sajat konyvtarara.
Udv!
Toth

Ja es ez az ssh-s valtozat is hasonlo az rssh-hoz, csak itt az rssh helyett az openssh teszi chroot-olta onmagat. De ekkor meg tiltani kell az ssh-val torteno belepest.
Mondjuk a chroot-olt openssh-hoz lehet forditani egy sftpsh-t (vagy mi a neve) es ezt beallitani shell-nek, de ezzel tul korulmenyesse valik a userek szamara a konyvtarak bongeszese.

Igen, de mar nem tudom mi lett az a fo "hibaok", amiert megis az rssh-t kezdtem hasznalni. Arra emlekszem, hogy a winscp-vel valami gond volt (lehet, hogy csak pancserek ultek elotte... :) ), illetve korulmenyesebb volt (es nem hiszem, hogy ezzel biztonsagosabb is) a chroot megfelelo beallitasa.

Hi,

Az sshd konfba beírod :

ChallengeResponseAuthentication no
Match Group !sysadm
AllowTcpForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server --chroot -l INFO

Ennyi, ha nem a sysadm groupban van az user akkor csak sftp van. Ha csak user tiltas kell es csak par db ra akkor :

Match User batka
AllowTcpForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server --chroot -l INFO

Igy te tudsz ssh-zni es a tobbinek sftp van. Remelem erre gondoltal, ha több info kell a folyamatrol akkor a -l INFO helyett a -l DEBUG-ot ird be. A match utani 3 sor tab-al legyen az elejen!

Üdv

Szijártó Zoltán
Aki tud az alkot, aki nem tud az csak szövegel.

Ez amit írtál jól hangzik, de hányas openssh-val működik? Nálam két dologra is errort dobott mikor beraktam a configba.

# /etc/init.d/ssh restart
/etc/ssh/sshd_config: line 80: Bad configuration option: Match
/etc/ssh/sshd_config: line 83: Bad configuration option: ForceCommand
/etc/ssh/sshd_config: terminating, 2 bad configuration options

(én ezzel próbáltam: openssh-server 4.3p2-9)

Közben töltöttem/fordítottam egy friss openssh-t (4.7p1), működik szépen a Match és a ForceCommand, de az sftp-server után a --chroot -l INFO nem nagyon akar, a user simán ki tud menni a $HOME-jából. Mit ronthatok el?

Ennyi volt a configomban ahogy te is írtad:

# Example of overriding settings on a per-user basis
Match User test
X11Forwarding no
AllowTcpForwarding no
ForceCommand /usr/local/libexec/sftp-server --chroot -l INFO

(Patchelni kéne az sftp-servert, hogy tudja a --chroot -ot?)

Szevasztok

Nálam működik az sftp chroot.
rssh -val, chroot -olt környezetben.
/etc/rssh.conf -ba beállítod a chrootpath -ot, a logolást, az umask -ot, stb...
( Plusz be lehet állítani külön user -ek re a jogokat, stb. ).
Megcsinálod a chroot könyvtárat ( nálam sftpjail ).
ldd -vel kiszeded a kellő libeket amik kellenek, és bemásolod a chroot könyvtárba.
Sok leírással ellentétben nekem nem működött, ha csak simán a $CHROOT/lib könyvtárba raktam őket, hanem meg kellett csinálnom a rendes könyvtárszerkezetet.
( Pl: /lib/tls/i686/cmov/libc.so.6 ).
Kell két fájl a /dev -be ( null, zero ).
Kell az scp, rssh, sftp-server, rssh_chroot_helper is, mindegyik szintén az eredeti könyvtárelérési út szerint a jail -be.
Utána /home -ba megcsinálod a user -eket.
passwd -ben átírod a user -ek shell -jét rssh -ra, meg a /home elérési útjukat irányítsd a jail -be.
Az sftp-server -re állíts be setuid bitet ( chmod u+s ).
Onnantól kezdve működik.
Ha nem megy, indítsd az ssh démont a -d kapcsolóval és "elmondja" mi a baja.

Nálam így néz ki:

bulltux:/home/csabi# sftp csabi'@'192.168.1.2
Connecting to 192.168.1.2...
csabi'@'192.168.1.2's password:
sftp> ls -l
-rw-r--r--    1 1001     1001      6908863 Sep 25  2004 cjlz35le_1_0_1_tar.gz
sftp>
sftp> cd ..
sftp> ls -l
drwxr-x---    2 1001     1001         4096 Dec 24 11:44 csabi
sftp>
sftp> cd ..
sftp> ls -l
drwxr-xr-x    2 0        0            4096 Dec 24 12:06 dev
drwxr-xr-x    5 0        0            4096 Dec 24 12:33 home
drwxr-xr-x    3 0        0            4096 Dec 24 12:12 lib
drwxr-xr-x    4 0        0            4096 Dec 24 12:12 usr
sftp>
sftp> cd ..
sftp> pwd
Remote working directory: /
sftp> exit

Én is próbáltam a különböző ssh-chroot patch -eket, de egyik sem ment.
Ez végre működik rendesen.
Ez alapján csináltam:
gentoo-wiki.com/HOWTO_SFTP_Server_(chrooted,_without_shell)

Szevasztok

Valaki aki tud C-ben programozni, nem tudja összehozni ezt a két patchet, hogy ne kelljen a $HOME-nak "/home/user/./"-t megadni, hanem a /etc/ssh/sftpchroot-ból vegye, hogy ki az aki SFTP esetén CHROOT-olt HOME-ba kerüljön? :) Vagy aki sftp groupban van azt rakja CHROOT-olt HOME-ba. Megpróbálkozom majd vele én is, de nem sok közöm van a C-hez, aki meg képben van szerintem 10 perc összehozni a kettőből.
http://lists.freebsd.org/pipermail/freebsd-bugs/2005-December/016147.ht…
http://www.coding-zone.com/chroot+sftp-server.patch

Na valaki? :)

Hi,

OpenSSH_4.6p1 Debian-6, OpenSSL 0.9.8g 19 Oct 2007
es nagyon szepen muzsikal. :)

Szijártó Zoltán
Aki tud az alkot, aki nem tud az csak szövegel.

Nekem ez az egy sor ami nem akar működni:
ForceCommand /usr/local/libexec/sftp-server --chroot -l INFO

Itt is a --chroot kapcsolóval van a gond, a Match-os dolog az ssh-val már megy szépen. Szintén azok a verziók vannak fent mint Neked. Szóval erről a --chroot-ról nem tudnál mondani valamit bővebben? :)

Köszi!

Banyek de hamar valaszolok. :) Bocs nem neztem. Na mind1.

a Forcecommand azt mondja, hogy a kapcsolat utan milyen daemon induljon itt a peldaban csak sftp lehet az usernek es no ssh shell.
az sftpd nek mondod -l INFO <- sima loggolas, ha pl tobbet akarsz akkor DEBUG
a --chroot azt mondja ne engedje ki a home-bol.

Szijártó Zoltán
Aki tud az alkot, aki nem tud az csak szövegel.

Szia
semmi extra patch debain etch csomag.

Szijártó Zoltán
Aki tud az alkot, aki nem tud az csak szövegel.

Akkor valamit nagyon elszúrhatok, vagy fogalmam sincs... :)
Debian Etch, SSH-2.0-OpenSSH_4.6p1 Debian-5

sshd_config (alján):
Match User test
X11Forwarding no
AllowTcpForwarding no
ForceCommand /usr/lib/openssh/sftp-server --chroot -l INFO

# sftp test@localhost
Connecting to localhost...
test@localhost's password:
sftp> pwd
Remote working directory: /home/test
sftp> cd /
sftp> pwd
Remote working directory: /
sftp> ls
bin boot dev etc home (...)

Nálam mondjuk sajna az sftp-server manjában is csak ez a két lehetőség van:
NAME
sftp-server - SFTP server subsystem

SYNOPSIS
sftp-server [-f log_facility] [-l log_level]

nekem igy sikerult osszehozni:
Gentoo, OpenSSH5.0

sshd_config:
Subsystem sftp internal-sftp
Match User test
ChrootDirectory /home/test
X11Forwarding no
AllowTcpForwarding no

ami meg fontos, hogy a konyvtar ami chroot-olva lesz az owner.group, root.root legyen és 0755 jogokkal. Letrehoztam ala egy konytarat, amit a test user hasznalhat(az owner.group = test.test).

Lehet mar megoldottad, de azert leirtam egy mukodo "nem masolgatos" megvalositast.