Diferència entre revisions de la pàgina «ASIX/M08/UF2/P21»
(→Prova) |
m (Guillem ha mogut M08/UF2/P21 a ASIX/M08/UF2/P21 sense deixar una redirecció: Crear subnivell ASIX) |
||
(Hi ha 10 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 72: | Línia 72: | ||
::*''Problema'': | ::*''Problema'': | ||
<source> | <source> | ||
− | [root@baseCentOS | + | [root@baseCentOS ~]# ftp localhost |
Trying ::1... | Trying ::1... | ||
Connected to localhost (::1). | Connected to localhost (::1). | ||
Línia 118: | Línia 118: | ||
Haurem de posar a <u>YES</u> la directiva <code>local_enable</code> i descomentarem la directiva que ja surt configurada <code>chroot_local_user=YES</code>. També comentaré la directiva <code>dirlist_enable</code> de manera que la configuració de l'exercici anterior no afecti amb aquest. | Haurem de posar a <u>YES</u> la directiva <code>local_enable</code> i descomentarem la directiva que ja surt configurada <code>chroot_local_user=YES</code>. També comentaré la directiva <code>dirlist_enable</code> de manera que la configuració de l'exercici anterior no afecti amb aquest. | ||
+ | Per l'apartat de l'ample de banda, haurem d'afegir o modificar les directives <code>anon_max_rate</code> i <code>local_max_rate</code> de manera que definim un valor numèric corresponent a l'ample de banda màxim que tindrà aquell servidor FTP per a fer transferències, en funció de si ha iniciat sessió un usuari local del sistema o un anònim. En el meu cas, he definit un ample de banda molt restringit pels anònims i un ample de banda il·limitat per als usuaris locals: | ||
+ | <source> | ||
+ | local_max_rate=0 | ||
+ | anon_max_rate=5000 | ||
+ | </source> | ||
===Prova=== | ===Prova=== | ||
Línia 126: | Línia 131: | ||
passwd guillem | passwd guillem | ||
</source> | </source> | ||
− | I farem la prova de l'engabiat: | + | :I farem la prova de l'engabiat: |
<source> | <source> | ||
ftp> pwd | ftp> pwd | ||
Línia 141: | Línia 146: | ||
:*Si es dona d'alta localment, no implica que tingui accés al ftp. | :*Si es dona d'alta localment, no implica que tingui accés al ftp. | ||
===Procediment=== | ===Procediment=== | ||
+ | Per a complir els 2 punts haurem de modificar les directives <code>userlist_enable</code> i <code>userlist_deny</code>. Tal com diu al manual: | ||
+ | <source> | ||
+ | userlist_enable | ||
+ | If enabled, vsftpd will load a list of usernames, from the filename given by userlist_file. If a user tries to log in using a name in this file, they will be denied before they are asked for a password. This may be useful in preventing cleartext passwords being transmitted. See also userlist_deny. | ||
+ | |||
+ | Default: NO | ||
+ | |||
+ | userlist_deny | ||
+ | This option is examined if userlist_enable is activated. If you set this setting to NO, then users will be denied login unless they are explicitly listed in the file specified by userlist_file. When login is denied, the denial is issued before the user is asked for a password. | ||
+ | |||
+ | Default: YES | ||
+ | </source> | ||
+ | |||
+ | Per tant, si activem ''userlist_enable''' a <u>YES</u> i posem ''userlist_deny'' a <u>NO</u>, estarem dient que només els usuaris escrits en el fitxer definit per ''userlist_file'' podran accedir; de manera que un nou usuari local no tindrà accés per FTP fins que no se l'afegeixi en l'arxiu d'usuaris permesos, que crearé jo i hi afegiré ''guillem'' com a permès amb <code>cat guillem > /etc/vsftpd/usuaris_permesos</code> | ||
+ | |||
+ | En el meu cas, les directives modificades a l'arxiu de configuració del servei queden així: | ||
+ | <source> | ||
+ | userlist_enable=YES | ||
+ | userlist_deny=NO | ||
+ | userlist_file=/etc/vsftpd/usuaris_permesos | ||
+ | </source> | ||
+ | ===Prova=== | ||
+ | :*'''Permetre usuari ''guillem'':''' | ||
+ | :Si ''guillem'' està definit en l'arxiu ''usuaris_permesos'', se li permetrà fer login. | ||
+ | <source> | ||
+ | [root@baseCentOS ~]# ftp localhost | ||
+ | Trying ::1... | ||
+ | Connected to localhost (::1). | ||
+ | 220 (vsFTPd 3.0.2) | ||
+ | Name (localhost:root): guillem | ||
+ | 331 Please specify the password. | ||
+ | Password: | ||
+ | 230 Login successful. | ||
+ | Remote system type is UNIX. | ||
+ | Using binary mode to transfer files. | ||
+ | </source> | ||
+ | :Si l'arxiu d'''usuaris_permesos'' està buit, l'usuari ''guillem'' tindrà prohibit l'accés, fins i tot abans d'autenticar-se amb la contrasenya: | ||
+ | <source> | ||
+ | [root@baseCentOS ~]# ftp localhost | ||
+ | Trying ::1... | ||
+ | Connected to localhost (::1). | ||
+ | 220 (vsFTPd 3.0.2) | ||
+ | Name (localhost:root): guillem | ||
+ | 530 Permission denied. | ||
+ | Login failed. | ||
+ | </source> | ||
==Exercici 4== | ==Exercici 4== | ||
Línia 146: | Línia 197: | ||
:*Personalitzar el FTP amb missatges (abans de login, després de login i durant la navegació entre directoris) | :*Personalitzar el FTP amb missatges (abans de login, després de login i durant la navegació entre directoris) | ||
===Procediment=== | ===Procediment=== | ||
+ | Segons el manual, les directives referents als missatges i ''banners'', són les següents: | ||
+ | <source> | ||
+ | dirmessage_enable | ||
+ | If enabled, users of the FTP server can be shown messages when they first enter a new directory. By default, a directory is scanned for the file .message, but that may be overridden with the configuration setting message_file. | ||
+ | |||
+ | Default: NO (but the sample config file enables it) | ||
+ | |||
+ | message_file | ||
+ | This option is the name of the file we look for when a new directory is entered. The contents are displayed to the remote user. This option is only relevant if the option dirmessage_enable is enabled. | ||
+ | |||
+ | Default: .message | ||
+ | |||
+ | ftpd_banner | ||
+ | This string option allows you to override the greeting banner displayed by vsftpd when a connection first comes in. | ||
+ | |||
+ | Default: (none - default vsftpd banner is displayed) | ||
+ | |||
+ | banner_file | ||
+ | This option is the name of a file containing text to display when someone connects to the server. If set, it overrides the banner string provided by the ftpd_banner option. | ||
+ | |||
+ | Default: (none) | ||
+ | </source> | ||
+ | D'aquesta manera, amb la <code>dirmessage_enable</code> activada i <code>ftpd_banner</code> definit amb una frase, podrem mostrar un missatge de benvinguda i ensenyar un missatge durant la navegació entre directoris. El meu arxiu de configuració ha quedat de la següent manera: | ||
+ | <source> | ||
+ | dirmessage_enable=YES | ||
+ | ftpd_banner="Benvingut al VSFTP de'n Guillem" | ||
+ | </source> | ||
+ | Llavors només haurem d'afegir missatges dins els directoris de l'FTP mitjançant arxius que es diguin ''.message'' i que, per exemple, donin informació sobre què s'hi trobarà allà. En el meu cas, posaré un ''.message'' a <code>/var/ftp/pub</code> i un altre al subdirectori de l'apartat anterior <code>/var/ftp/pub/upload</code> de manera que l'usuari rebi missatges a mesura que va entrant dins de directoris. | ||
+ | <source> | ||
+ | nano /var/ftp/pub/.message | ||
+ | Aquesta és l'arrel de l'usuari anònim. Si vols pujar fitxers has de fer-ho al subdirectori upload. | ||
+ | </source> | ||
+ | |||
+ | <source> | ||
+ | nano /var/ftp/pub/upload/.message | ||
+ | Et trobes al subdirectori upload de l'arrel del servidor FTP | ||
+ | </source> | ||
+ | ===Prova=== | ||
+ | :*'''Mostrar un missatge inicial abans del ''login'':''' | ||
+ | <source> | ||
+ | [root@baseCentOS ~]# ftp localhost | ||
+ | Trying ::1... | ||
+ | Connected to localhost (::1). | ||
+ | 220 "Benvingut al VSFTP de'n Guillem" | ||
+ | Name (localhost:root): | ||
+ | </source> | ||
+ | |||
+ | :*'''Mostrar missatges en navegar pels directoris:''' | ||
+ | <source> | ||
+ | 331 Please specify the password. | ||
+ | Password: | ||
+ | 230-Aquesta és l'arrel de l'usuari anònim. Si vols pujar fitxers has de fer-ho al subdirectori upload. | ||
+ | 230 Login successful. | ||
+ | Remote system type is UNIX. | ||
+ | Using binary mode to transfer files. | ||
+ | </source> | ||
+ | |||
+ | <source> | ||
+ | ftp> cd upload | ||
+ | 250-Et trobes al subdirectori upload de l'arrel del servidor FTP | ||
+ | 250 Directory successfully changed. | ||
+ | </source> |
Revisió de 11:24, 15 abr 2020
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 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
Haurem de posar a YES la directiva local_enable
i descomentarem la directiva que ja surt configurada chroot_local_user=YES
. També comentaré la directiva dirlist_enable
de manera que la configuració de l'exercici anterior no afecti amb aquest.
Per l'apartat de l'ample de banda, haurem d'afegir o modificar les directives anon_max_rate
i local_max_rate
de manera que definim un valor numèric corresponent a l'ample de banda màxim que tindrà aquell servidor FTP per a fer transferències, en funció de si ha iniciat sessió un usuari local del sistema o un anònim. En el meu cas, he definit un ample de banda molt restringit pels anònims i un ample de banda il·limitat per als usuaris locals:
local_max_rate=0 anon_max_rate=5000
Prova
- Els usuaris locals puguin accedir, però no pugin sortir fora del seu home:
- Primer crearem un usuari guillem per poder fer la prova amb un usuari local
useradd guillem passwd guillem
- I farem la prova de l'engabiat:
ftp> pwd ftp> /home/guillem ftp> cd .. 550 Failed to change directory. ftp> pwd ftp> /home/guillem
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
Per a complir els 2 punts haurem de modificar les directives userlist_enable
i userlist_deny
. Tal com diu al manual:
userlist_enable If enabled, vsftpd will load a list of usernames, from the filename given by userlist_file. If a user tries to log in using a name in this file, they will be denied before they are asked for a password. This may be useful in preventing cleartext passwords being transmitted. See also userlist_deny. Default: NO userlist_deny This option is examined if userlist_enable is activated. If you set this setting to NO, then users will be denied login unless they are explicitly listed in the file specified by userlist_file. When login is denied, the denial is issued before the user is asked for a password. Default: YES
Per tant, si activem userlist_enable' a YES i posem userlist_deny a NO, estarem dient que només els usuaris escrits en el fitxer definit per userlist_file podran accedir; de manera que un nou usuari local no tindrà accés per FTP fins que no se l'afegeixi en l'arxiu d'usuaris permesos, que crearé jo i hi afegiré guillem com a permès amb cat guillem > /etc/vsftpd/usuaris_permesos
En el meu cas, les directives modificades a l'arxiu de configuració del servei queden així:
userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd/usuaris_permesos
Prova
- Permetre usuari guillem:
- Si guillem està definit en l'arxiu usuaris_permesos, se li permetrà fer login.
[root@baseCentOS ~]# ftp localhost Trying ::1... Connected to localhost (::1). 220 (vsFTPd 3.0.2) Name (localhost:root): guillem 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.
- Si l'arxiu d'usuaris_permesos està buit, l'usuari guillem tindrà prohibit l'accés, fins i tot abans d'autenticar-se amb la contrasenya:
[root@baseCentOS ~]# ftp localhost Trying ::1... Connected to localhost (::1). 220 (vsFTPd 3.0.2) Name (localhost:root): guillem 530 Permission denied. Login failed.
Exercici 4
Modificar el servidor FTP:
- Personalitzar el FTP amb missatges (abans de login, després de login i durant la navegació entre directoris)
Procediment
Segons el manual, les directives referents als missatges i banners, són les següents:
dirmessage_enable If enabled, users of the FTP server can be shown messages when they first enter a new directory. By default, a directory is scanned for the file .message, but that may be overridden with the configuration setting message_file. Default: NO (but the sample config file enables it) message_file This option is the name of the file we look for when a new directory is entered. The contents are displayed to the remote user. This option is only relevant if the option dirmessage_enable is enabled. Default: .message ftpd_banner This string option allows you to override the greeting banner displayed by vsftpd when a connection first comes in. Default: (none - default vsftpd banner is displayed) banner_file This option is the name of a file containing text to display when someone connects to the server. If set, it overrides the banner string provided by the ftpd_banner option. Default: (none)
D'aquesta manera, amb la dirmessage_enable
activada i ftpd_banner
definit amb una frase, podrem mostrar un missatge de benvinguda i ensenyar un missatge durant la navegació entre directoris. El meu arxiu de configuració ha quedat de la següent manera:
dirmessage_enable=YES ftpd_banner="Benvingut al VSFTP de'n Guillem"
Llavors només haurem d'afegir missatges dins els directoris de l'FTP mitjançant arxius que es diguin .message i que, per exemple, donin informació sobre què s'hi trobarà allà. En el meu cas, posaré un .message a /var/ftp/pub
i un altre al subdirectori de l'apartat anterior /var/ftp/pub/upload
de manera que l'usuari rebi missatges a mesura que va entrant dins de directoris.
nano /var/ftp/pub/.message Aquesta és l'arrel de l'usuari anònim. Si vols pujar fitxers has de fer-ho al subdirectori upload.
nano /var/ftp/pub/upload/.message Et trobes al subdirectori upload de l'arrel del servidor FTP
Prova
- Mostrar un missatge inicial abans del login:
[root@baseCentOS ~]# ftp localhost Trying ::1... Connected to localhost (::1). 220 "Benvingut al VSFTP de'n Guillem" Name (localhost:root):
- Mostrar missatges en navegar pels directoris:
331 Please specify the password. Password: 230-Aquesta és l'arrel de l'usuari anònim. Si vols pujar fitxers has de fer-ho al subdirectori upload. 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.
ftp> cd upload 250-Et trobes al subdirectori upload de l'arrel del servidor FTP 250 Directory successfully changed.