Hogyan tudom az SSH-felhasználókat csak az sftp-felhasználókat otthonaikba vinni?

112

A kliensnek hozzáférést kell biztosítani a kiszolgálómhoz, de szeretném ezeket a felhasználókat a saját könyvtárakra korlátozni. Bármely fájlba szeretnék kötődni, amit látni akarok.

Készítettem egybob nevű felhasználót, és hozzáadtam egy új,sftponly nevű csoporthoz. Saját könyvtáruk van a (z)/home/bob -ban. Módosítottam shell-jukat a/bin/false -ra, hogy megállítsam az SSH bejelentkezéseket. Itt van a/etc/passwd sor:

bob:x:1001:1002::/home/bob:/bin/false

A/etc/ssh/sshd_config -ot is megváltoztattam a következőkre:

Match Group sftponly
        ChrootDirectory /home/%u
        ForceCommand internal-sftp
        AllowTcpForwarding no

Amikor megpróbálok bejelentkezni, mint itt, itt látok

$ sftp bob@server
bob@server's password: 
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer

Ha kommentálom aChrootDirectory sort, akkor SFTP-t tudok beilleszteni, de szabadon engedik a szervert. Megállapítottam, hogy aChrootDirectory /home működik, de még mindig hozzáférést biztosít bármelyik otthoni könyvtárhoz. Kifejezetten próbáltamChrootDirectory /home/bob -ot, de ez sem működik.

Mit csinálok rosszul? Hogyan korlátozhatom abob -ot/home/bob/ -ra?

---- EDIT -----

Rendben van, így megnéztem a (z)/var/log/auth.log -ot, és láttam ezt:

May  9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened for user bob by (uid=0)
May  9 14:45:48 nj sshd[5091]: fatal: bad ownership or modes for chroot directory component "/home/bob/"
May  9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session closed for user bob

Nem vagyok teljesen biztos benne, mi folyik ott, de azt sugallja, hogy valami nem megfelelő a felhasználói könyvtárban. Itt van als -h /home kimenet:

drwxr-xr-x 26 oli      oli      4096 2012-01-19 17:19 oli
drwxr-xr-x  3 bob      bob      4096 2012-05-09 14:11 bob
    
készlet Oli 09.05.2012 15:43
forrás

4 válasz

111

Mindez a fájdalom számos biztonsági probléma miatt jött létre itt leírták . A chroot könyvtárnak alapvetően aroot tulajdonában kell lennie, és nem lehet csoportos írási hozzáférés. Bájos. Tehát lényegében a chrootot egy tartókamrába kell kapcsolnod és az -ban, a szerkeszthető tartalmadat.

sudo chown root /home/bob
sudo chmod go-w /home/bob
sudo mkdir /home/bob/writable
sudo chown bob:sftponly /home/bob/writable
sudo chmod ug+rwX /home/bob/writable

És bam, bejelentkezhetsz és írhatsz/writable -ban.

    
válasz adott Oli 09.05.2012 16:21
forrás
52

Az SFTP-könyvtár chroot létrehozásához

-nek kell lennie
  1. Hozzon létre egy felhasználót, és erőt gyökérnek, hogy tulajdonosa legyen

    cd /home
    mkdir john
    useradd -d /home/john -M -N -g users john
    sudo chown root:root /home/john
    sudo chmod 755 /home/john
    
  2. Az alrendszer helyének módosítása az / etc / ssh / sshd_config alatt:

    #Subsystem sftp /usr/lib/openssh/sftp-server
    Subsystem sftp internal-sftp
    

    és hozzon létre egy felhasználói szekciót a fájl végén (az ssh elhalálozhatja az újbóli megjelenést, ha azt az alrendszer sorában helyezik el):

    Match User john
        ChrootDirectory /home/john
        ForceCommand internal-sftp
        AllowTCPForwarding no
        X11Forwarding no
    
válasz adott josircg 25.10.2012 19:54
forrás
5

Egész nap töltöttem, hogy megpróbáljak hálózati megosztást kapni a málnamon. Szerettem volna lezárni a felhasználót, hogy ne tudjon navigálni az egész fájlrendszeren, ssh bejelentkezési hozzáférést, és írási hozzáférést akartam elérni a hálózati megosztáshoz.

És itt dolgozom:

Először létrehoztam egy felhasználót:

sudo useradd netdrive

Ezután szerkesztette a/etc/passwd -ot, és biztosította, hogy/bin/false legyen a felhasználó számára, így a sor:

netdrive:x:1001:1004:Net Drive User,,,:/home/netdrive:/bin/false

A (z)/etc/ssh/sshd_config -ot szerkesztettem:

Match User netdrive
  ChrootDirectory /home/netdrive
  ForceCommand internal-sftp
  AllowTcpForwarding no
  X11Forwarding no

A saját könyvtár tulajdonosának és engedélyeinek megváltoztatása:

sudo chown root:root /home/netdrive/
sudo chmod 755 /home/netdrive/

Ok, ezért mindezzel asshfs -ot használtam, de csak olvasható módban. Mit kellett tennem, hogy írjon egy mappát:

sudo mkdir -p /home/netdrive/home/netdrive/
sudo chown netdrive:netdrive /home/netdrive/home/netdrive/
sudo chmod 755 /home/netdrive/home/netdrive/

Ez volt az, hogy további változtatások nélkül dolgozott. Ne feledje, hogy csak más írható jogosultságok vannak a felhasználó , nem az csoportra mint sok más online megoldás. Fájlok / mappák létrehozása / törlése / szerkesztése / átnevezése problémák nélkül.

Ha a chroot konfiguráció miatt a netdrive felhasználóval asshfs -ot használod, csak a szerver/home/netdrive/ könyvtárában tárolt dolgokat láthatod, tökéletes. Az ismétlődő/home/netdrive/home/netdrive/ könyvtárszerkezet az, ami azt eredményezte, hogy tiszta chroot ssh írható megoldás.

Most elmagyarázom az alábbi problémákat:

Valószínűleg nem hajtja végre a következő bekezdéseket :

A fenti megoldások (és még sokan azon a hálózaton, amelyek még acl (hozzáférés-ellenőrzési listákat) is használtak) még mindig nem tudtam működni, mert mi volt a következő:

/ p>

A következőkben NEM dolgozott nekem:

sudo mkdir /home/netdrive/writable/
sudo chown netdrive:netdrive /home/netdrive/writable/
sudo chmod 755 /home/netdrive/writable/

Mivel a netdrive felhasználó még mindig nem tudott írni a/home/netdrive/writable/ könyvtárba, annak ellenére, hogy a mappát birtokolta és engedélyezte. Aztán megtettem:     sudo chmod 775 / home / netdrive / írható / Most létrehozhatok egy könyvtárat és törölhetem, de nem tudtam szerkeszteni, mert csoportos írható engedélyek nélkül hozták létre. Itt, amit láttam a neten, használd aacl -ot a javításhoz. De nem voltam elégedett vele, mivel telepítenie kellett aacl -ot, majd be kell állítanom a csatolási pontokat stb. És fogalmam sincs, miért lenne szükségem csoportra engedélyezni, hogy írjon egy Ugyanaz a felhasználó.

Úgy tűnik, hogy valamilyen okból létrejött a/home/netdrive/home/netdrive és az utolsónetdrive mappához való tulajdonjogot, mindent tudtam dolgozni, anélkül, hogy belehallgatnánk az csoport engedélyekbe.

    
válasz adott mihai.ile 18.07.2015 19:58
forrás
0

Követte a ezt de nem működött. A változtatás után (a fenti válaszokban javasolt):

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

A Plus létrehozta a gyökérzárható saját könyvtárat, amelynek a felhasználó írható alkönyvtára volt (a fent leírtak szerint).

Az új és hasznos dolog, amit ezt a választ adni szeretnék, az, hogy egyszerűsítheti a konfigurációt egyszerűen a% h felhasználó felhasználói könyvtárának megadásával:

ChrootDirectory %h

Ezt a ezt linknek köszönhetem.

    
válasz adott user109764 19.09.2018 00:06
forrás