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