Pt21. Servidor FTP (Linux)
Contingut
Previ
- Nota: Quan es parli de l'arxiu de configuració del servei, es referirà a l'arxiu
/etc/vsftpd/vsftpd.conf
.
Instal·lació i posada en marxa
Hi ha diverses opcions per a instal·lar un servei FTP al nostre CentOS. El que faré servir jo en aquesta pràctica serà el Very Secure FTP (VSFTP). L'instal·larem amb la comanda
yum install vsftpd -y
i l'engegarem i habilitarem l'arrencada automàtica amb
systemctl enable vsftpd systemctl start vsftpd
Firewall
Afegirem una regla per a poder accedir des de l'exterior (màquina anfitriona per a fer proves) de la manera següent:
firewall-cmd --add-service=ftp --permanent firewall-cmd --reload
SELinux
Deshabilitarem el SELinux de manera temporal/provisional amb
setenforce 0
Exercici 1
Crear un servidor FTP:
- Només permeti accedir als usuaris anònims.
- Podran enviar fitxers només a un directori, però no podran veure el contingut.
Procediment
Per a permetre només l'accés d'usuaris anònims editarem l'arxiu de configuració i buscarem la directiva anonymous_enable
i la posarem a YES; en canvi, posarem a NO la directiva local_enable
de manera que els usuaris del sistema no puguin accedir amb els seus comptes. També haurem de permetre que els usuaris anònims puguin escriure descomentant la directiva anon_upload_enable=YES
. També hi ha la directiva anon_mkdir_write_enable=YES
comentada; que ens podria servir per gestionar si els usuaris anònims poden crear directoris nous o no. Com que a l'enunciat no s'especifica, ho deixaré comentat, que significa que NO podran crear directoris nous.
Pel que fa al segon punt, si llegim el manual de VSFTP veurem que hi ha una directiva que ens permet prohibir qualsevol acció de llistar el contingut d'un directori (ls, dir...):
dirlist_enable If set to NO, all directory list commands will give permission denied. Default: YES
Aquesta directiva no apareix a l'arxiu de configuració original, per tant, afegiré al final del fitxer el codi dirlist_enable=NO
.
D'aquesta manera, el mateix servei de FTP és el que prohibeix aquesta acció; sense necessitat de modificar permisos del sistema de fitxers.
Una vegada fets els canvis, no ens hem d'oblidar de reiniciar el servei per tal d'aplicar la nova configuració: systemctl restart vsftpd
.
Prova
- Només usuaris anònims:
[root@centosvsftpd ~]# ftp localhost Trying ::1... Connected to localhost (::1). 220 (vsFTPd 3.0.2) Name (localhost:root): guillem 530 This FTP server is anonymous only. Login failed.
- Prohibit llistar el contingut:
[root@centosvsftpd ~]# ftp localhost Trying ::1... Connected to localhost (::1). 220 (vsFTPd 3.0.2) Name (localhost:root): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 229 Entering Extended Passive Mode (|||60243|). 550 Permission denied. ftp> dir 229 Entering Extended Passive Mode (|||36729|). 550 Permission denied.
- Prova de pujar contingut com a anònim:
- Problema:
[root@baseCentOS ftp]# ftp localhost Trying ::1... Connected to localhost (::1). 220 (vsFTPd 3.0.2) Name (localhost:root): anonymous 331 Please specify the password. Password: 500 OOPS: vsftpd: refusing to run with writable root inside chroot() Login failed. 421 Service not available, remote server has closed connection
- Per a solucionar això, haurem d'afegir un sub-directori dins de
/var/ftp/pub
que, per exemple, es diguiupload
amb permisos d'escriptura per tothom (chmod x x 7)
mkdir /var/ftp/pub/upload chmod 777 /var/ftp/pub/upload
. Llavors, l'usuari anònim que es connecti per FTP només podrà pujar arxius no a l'arrel (pub) sinó NOMÉS on l'usuari ftp del sistema tingui permisos d'escriptura, fora del seu chroot: pub/upload
- Solucionat:
Carrego el fitxer anaconda-ks.cfg des de /root local al directori upload amb nom de fitxer anaconda
[root@baseCentOS ~]# ftp localhost Trying ::1... Connected to localhost (::1). 220 (vsFTPd 3.0.2) Name (localhost:root): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> put /root/anaconda-ks.cfg upload/anaconda local: /root/anaconda-ks.cfg remote: upload/anaconda 229 Entering Extended Passive Mode (|||63288|). 150 Ok to send data. 226 Transfer complete. 1275 bytes sent in 0,0116 secs (110,09 Kbytes/sec)
Exercici 2
Modificar el servidor FTP:
- Els usuaris locals puguin accedir, però no pugin sortir fora del seu home.
- Els usuari locals han de tenir més ampla de banda que el anònim.
Procediment
Exercici 3
Modificar el servidor FTP:
- Només es puguin connectar uns quant usuaris, no tots els que estiguin donats d'alta localment.
- Si es dona d'alta localment, no implica que tingui accés al ftp.
Procediment
Exercici 4
Modificar el servidor FTP:
- Personalitzar el FTP amb missatges (abans de login, després de login i durant la navegació entre directoris)