Chroot SFTP, noFTP, noSCP, noSSH

Ivo Hazmuk ivo at vutbr.cz
Tue May 14 21:33:12 CEST 2019


Ahoj,

Dne 14.5.2019 v 19:38 Jozef Drahovsky napsal(a):
> Ahojte, mam jednoduchu otazku, ale riesenie zrejme nie je jednoduche.
> 
> Server ma vela kont kde sa uzivatelia bezne pripajaju cez SSH, SCP, SFTP 
> alebo FTP.
> Mam aj takych, ktori maju konto len s pristupom cez FTP s chroot pre 
> kazdeho do ineho miesta web stromu,
> s tym, ze tam mozu pristupovat aj l/p cez web formular download/upload 
> moj phpfilemanager.
> 
> Snazim sa teraz vsetko prehodit na sifrovalie. (web s SSL uz pouzivam 
> davno, takze zabezpecene to je),
> ale nedari sa mi rozbehat uzivatela ktory, by mal len SFTP s chroot a 
> FTP aby neslo. Otazka ako na to?

toto jsem řešil nedávno. Je to trochu opruz, ale jde to.

Zakázat FTP je velmi jednoduché. Buď pro celý server vypneš FTP server. 
Typicky v /etc/inetd.conf. Nebo to můžeš udělat pro jednotlivé 
uživatele. Zakazuješ je v /etc/ftpusers. Viz manové stránky k inetd.conf 
a ftpusers.

Horší je to s povolením SFTP s chrootem.

1) Nainstaluj si scponly shell a do /etc/shells přidej cestu k scponly. 
Nejspíš "/usr/local/bin/scponly".

2) V /etc/group musíš mít skupinu "ftp":
ftp:*:14:

3) V /etc/master.passwd potřebuješ:
ftp-user:tady=je=hash=hesla:1246:14::0:0:temporary FTP 
account:/ftp/ftp-user:/usr/local/bin/scponly

4) Dělá se to přes "Match" v /etc/ssh/sshd_config. Snad mi tam žádné 
další nastavení nechybí. Viz man 5 sshd_config

Match Group ftp
ChrootDirectory %h
X11Forwarding   no
AllowTcpForwarding no
AllowAgentForwarding no
ForceCommand internal-sftp
PermitTunnel no

5) Musíš nastavit správně domovský adresář:
mkdir /ftp/ftp-user
cd /ftp
chown root:ftp ftp-user
cd ftp-user
mkdir files
chown ftp-user files

Práva mám potom takto:
stroj: # pwd
/ftp
stroj: # ls -lRa ftp-user
total 6
drwxr-x--x  3 root  ftp    512 Oct 25  2018 .
drwxr-xr-x  7 root  wheel  512 May 13 14:52 ..
drwxrwxrwx  2 ftp-user  ftp    512 Apr 19 13:47 files

ftp-user/files:
total 4
drwxrwxrwx  2 ftp9  ftp  512 Apr 19 13:47 .
drwxr-x--x  3 root  ftp  512 Oct 25  2018 ..

Tímto dosáhneš toho, že uživatel ftp-user se ve svém domovském adresáři 
dostane jen do priečinku "files", ale nevyleze výš. Já tam mám u 
adresáře práva "777", aby se tam dostali místní uživatelé Sambou.

To je snad vše.

A zde je útržek skriptu, kterým zakládám uživatele:
...
FMODE="700"
#FTPMODE="777"
FTPMODE="751"
FTPWRMODE="777"
FTPGROUP=`grep ftp /etc/group|cut -f3 -d:`
FTPCHROOT="/etc/ftpchroot"
FTPUSERS="/etc/ftpusers"
FTPSHELL="/usr/local/bin/scponly"
...
             if [ $FGID -eq $FTPGROUP ]
             then
                 FMODE=$FTPMODE
                 # Prechod na SFTP/SCP - uzivatel FTP nesmi pouzit FTP
                 if [ $FSHELL = $FTPSHELL ]
                 then
                     echo $USER >>${FTPUSERS}
                 fi
                 # vytvor a nastav adresar pro prenos dat
                 mkdir $FDIR/files
                 chmod $FTPWRMODE $FDIR/files
                 chown $FUID $FDIR/files
                 chown root $FDIR
             fi
             chmod $FMODE $FDIR
...

Měj se
Ivo

> Pokusne som si vytvoril roznych testovacich  uzivatelov ale:
> 1. ak maju povolene SSH tak funguje SCP a SFTP bez rezimu chrot a FTP aj 
> v rezime chroot
> 2. ak maju shell  /usr/sbin/nologin tak nejde nic ani ftp
> 3. po uprave cp /usr/sbin/nologin /usr/sbin/onlyftp; add 
> /usr/sbin/onlyftp >> /etc/shells
> ide iba FTP s chroot, presnejsie je to co uz roky pouzivam.
> 
> Jozef
> 
> 
> 



More information about the Users-l mailing list