Instalación de VSFTP
Configuración de una máquina CentOS con la tarjeta red ya conectada a internet.
Hay que ir a este directorio para ver la configuración de las tarjetas de red
/ect/sysconfig/network-scripts
Con el editor «vi» se debe modificar el archivo si la tarjeta no estuviera activa
Instalamos un servidor FTP el vsftpd, y luego el cliente ftp para comprobar que funciona en local.
yum install vsftpd # para probar si funciona el servicio en local yum install ftp # por si hay que comprimir algo con zip, no obstante es mejor usar tar xvcf yum install zip
para cuando hagamos envíos automatizados de muchos megas y de ficheros es conveniente enviarlos comprimidos para ahorrar ancho de banda.
Arrancamos el servidor FTP
systemctl start vsftpd.service
Opcional (si queremos dejar el servicio activo para que se arranque siempre):
systemctl enable vsftpd.service
Opcional (si queremos para el servicio activo para que se arranque siempre):
systemctl stop vsftpd.service
Comprobamos que el servicio funciona:
ftp 127.0.0.1
Aquí debería aparecer el ftp pidiéndonos usuario y password (podemos probar con anonymous que no necesita contraseña)
Ahora vamos a intentar conectarnos desde otro sistema, en este caso desde un sistema Windows con el Filezilla Client instalado.
Por defecto la carpeta habilitada en el sistema para las conexiones es:
/var/ftp/pub
Puede que la prueba anterior desde otro sistema no haya funcionado, entoces es muy probable que se tenga instalado el FirewallD (en caso de sistemas CentOS o iptables en otros sistemas) y entoces lo que tenemos que hacer ahora es abrir el firewall para que permita conexiones por FTP
firewall-cmd --permanent --add-service=ftp systemctl restart firewalld.service
Comprobamos que el servicio desde fuera funciona (desde ftp de windows o mediente filezilla como antes):
- Primero averiguamos la IP de la máquina: ip addr
- Desde otro sistema por ejemplo windows: ftp <la-ip-de-la-maquina>
- Aquí debería aparecer el ftp pidiéndonos usuario y password (podemos probar con anonymous)
El FTP anónimo funcionó porque por defecto VSFTPD permite las conexiones anónimas, para evitar esto simplemente habrá que abrir el archivo de configuración de VSFTPD que se encuentra en /etc/vsftpd/vsftpd.conf y cambiar la línea que pone anonymous_enable=YES por anonymous_enable=NO. Si quisieramos todo lo contrario, que anonymous pudiera no sólo entrar sino que además pudiera subir archivos o incluso crear carpetas tendríamos que cambiar las variables:
anon_upload_enable=YES anon_mkdir_write_enable=YES
No obstante es una opción MUY poco aconsejable cuando el servidor está en Internet.
Luego una vez hechos los cambios toca reiniciar el servicio y comprobar que los cambios surgieron efecto.
systemctl restart vsftpd.service
Llegado a este punto vamos a ver como crear usuarios para que puedan acceder por FTP a unas carpetas concretas para cada uno de esos usuarios, por ejemplo vamos a suponer que estamos creando un servidor WEB para que distintos clientes puedan mediante FTP subir su página web
Vamos a crear una carpeta para que sirva de carpeta raiz:
- cd /home
- mkdir juanjo
- cd juanjo
- mkdir paginas
- cd paginas
- mkdir web
Ahora ya puestos vamos a crear un archivo dentro de la carpeta «web» para que tenga algo:
- nano probando.html
Indicamos a SeLinux que esta nueva ruta es para anonymous, aquí tenemos dos posibilidades
chcon -R -t public_content_t /home/juanjo/paginas/web # Si queremos permitir la escritura en esa carpeta chcon -R -t public_content_rw_t /home/juanjo/paginas/web
Editamos el archivo vsftpd.conf /etc/vsftpd y añadimos la constante, con eso vamos a configurar el servidor ftp para que trabaje por defecto (anonymous_root cuya variable es anon_root) :
anon_root=/home/juanjo/paginas/web
Para que SeLinux acepte la nueva carpeta del acceso anónimo hay que indicarle que es de acceso público, introduciendo el siguiente comando:
chcon -R -t public_content_t /home/juanjo/paginas/web
Reiniciamos el servidor FTP
- systemctl restart vsftpd.service
Ahora por ejemplo con un Filezila (Filezilla Client) comprobamos la conexión anonymous:
- Descargar Filezilla Client
- Conectar al servidor FTP (ver con ip addr la dirección del servidor)
- usuario: anonymous
- clave: <aquí da lo mismo lo que se ponga>
ACCESO DE USUARIOS LOCALES.
Cada vez que creamos un usuario en Linux nos interesa que tenga acceso por FTP a su carpeta, para permitir esto hay que hacer los siguientes cambios.
Debemos indicar al sistema de seguridad de Linux que vamos a permitir que los usuarios accedan por FTP a sus carpetas:
setsebool -P ftp_home_dir on setsebool allow_ftpd_full_access on
Editar (nano) el archivo vsftpd.conf de la carpeta /etc/vsftpd
- local_enable=YES
Reiniciamos el servidor FTP
- systemctl restart vsftpd.service
Ahora vamos a crear un usuario para probar
useradd -g ftp -d /home/juanjo juanjo passwd juanjo
Vamos a darle permisos a todos los usuarios para que puedan entrar en la carpeta de juanjo:
chmod -R 755 /home/juanjo
Usuarios enjaulados
sudo adduser --home /var/www/html/usuario1 --no-create-home --shell /bin/bash usuario1 passwd usuario1 mkdir /var/www/html/usuario1 chmod -R 755 /var/www/html/usuario1 setsebool -P ftp_home_dir setsebool allow_ftpd_full_access on chown usuario1:ftp ./usuario1
Instalación PureFTPd
Tutorial de instalación paso a paso del servidor de FTP PureFTPd
Primero añadimos el repositorio donde está el Pure-FTP ya que en CentOS por defecto utiliza el VSFTPD
cd ~ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt cd /tmp wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm rpm --import https://fedoraproject.org/static/0608B895.txt wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -ivh epel-release-6-8.noarch.rpm yum update yum install pure-ftpd
Ahora configuramos el PureFTPD
cd /etc/pure-ftpd/ nano -w pure-ftpd.conf
- UnixAuthentication yes
- VerboseLog yes
- PureDB /etc/pure-ftpd/pureftpd.pdb
- CreateHomeDir yes
ssss