Saltar a contenido

Demostración basada en el protocolo rsync

En vsftpd, hay usuarios virtuales (usuarios personalizados por el administrador) porque no es seguro utilizar usuarios anónimos y usuarios locales. Sabemos que un servidor basado en el protocolo SSH debe garantizar la existencia de un sistema de usuarios. Cuando hay muchos requisitos de sincronización, puede ser necesario la creación de muchos usuarios. Obviamente, esto no cumple con los estándares de operación y mantenimiento de GNU/Linux (mientras más usuarios, más inseguro), en rsync, por razones de seguridad, existe un método de inicio de sesión de autenticación del protocolo rsync.

¿Cómo hacerlo?

Simplemente escriba los parámetros y valores correspondientes en el archivo de configuración. En Rocky Linux 8, necesita crear manualmente el archivo /etc/rsyncd.conf.

[root@Rocky ~]# touch /etc/rsyncd.conf
[root@Rocky ~]# vim /etc/rsyncd.conf

A continuación se muestran algunos parámetros y valores de configuraciónv para este archivo, aquí encontrará más información sobre dichos parámetros:

Elemento Descripción
address = 192.168.100.4 La dirección IP en la que rsync escucha por defecto.
port = 873 Puerto de escucha por defecto de rsync.
pid file = /var/run/rsyncd.pid Ubicación del archivo con el pid del proceso.
log file = /var/log/rsyncd.log Ubicación del archivo de registro.
[share] Nombre de recurso a compartir.
comment = rsync Comentarios o información descriptiva.
path = /rsync/ La ubicación de la ruta del sistema donde se encuentra.
read only = yes Yes significa sólo lectura y No significa lectura y escritura.
dont compress = *.gz *.gz2 *.zip Tipos de archivo que no se comprimen.
auth users = li Habilita los usuarios virtuales y define cómo se llama un usuario virtual. Necesita crearlo usted mismo.
archivo secretos = mañana/rsyncd_users.db Utilizado para especificar la ubicación del archivo de contraseñas del usuario virtual, debe terminar en .db. El formato del contenido del archivo debe ser "Username: Password", uno por línea.

Consejo

Los permisos del archivo de contraseña deben ser 600

Escriba algo de contenido en el archivo a /etc/rsyncd.conf, y escriba el nombre de usuario y la contraseña en el archivo /etc/rsyncd_users.db, los permisos necesarios para ese archivo son 600.

[root@Rocky ~]# cat /etc/rsyncd.conf
address = 192.168.100.4
port = 873
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
[share]
comment = rsync
path = /rsync/
read only = yes
dont compress = *.gz *.bz2 *.zip
auth users = li
secrets file = /etc/rsyncd_users.db
[root@Rocky ~]# ll /etc/rsyncd_users.db
-rw------- 1 root root 9 November 2 16:16 /etc/rsyncd_users.db
[root@Rocky ~]# cat /etc/rsyncd_users.db
li:13579

Puede necesitar ejecutar el comando dnf -y install rsync-daemon antes de poder iniciar el servicio: systemctl start rsyncd.service

[root@Rocky ~]# systemctl start rsyncd.service
[root@Rocky ~]# netstat -tulnp
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      691/sshd            
tcp        0      0 192.168.100.4:873       0.0.0.0:*               LISTEN      4607/rsync          
tcp6       0      0 :::22                   :::*                    LISTEN      691/sshd            
udp        0      0 127.0.0.1:323           0.0.0.0:*                           671/chronyd         
udp6       0      0 ::1:323                 :::*                                671/chronyd  

Descarga de ficheros

Cree un archivo en el servidor para la verificación: [root@Rocky]# touch /rsync/rsynctest.txt

El cliente hace lo siguiente:

[root@fedora ~]# rsync -avz li@192.168.100.4::share /root
Contraseña:
recibiendo lista incremental de archivos
./
rsynctest. xt
envió 52 bytes recibidos 195 bytes 7.16 bytes/sec
tamaño total es 883 speedup es 3. 7
[root@fedora ~]# ls
aabbcc anaconda-ks.cfg fedora rsynctest.txt

¡Éxito! Además de la escritura anterior basada en el protocolo rsync, también se puede escribir así: rsync://li@10.1.2.84/share

Subida de ficheros

[root@fedora ~]# touch /root/fedora.txt
[root@fedora ~]# rsync -avz /root/* li@192.168.100.4::share
Password:
sending incremental file list
rsync: [sender] read error: Connection reset by peer (104)
rsync error: error in socket IO (code 10) at io.c(784) [sender = 3.2.3]

Se le indica que el error de lectura esté relacionado con el parametro "read only = yes" del servidor . Cambielo a "no" y reinicie el servicio: [root@Rocky ~]# systemctl restart rsyncd.service

Inténtelo de nuevo, ya que rsyn está mostrandole el mensaje de permiso denegado:

[root@fedora ~]# rsync -avz /root/* li@192.168.100.4::share
Password:
sending incremental file list
fedora.txt
rsync: mkstemp " /.fedora.txt.hxzBIQ " (in share) failed: Permission denied (13)
sent 206 bytes received 118 bytes 92.57 bytes/sec
total size is 883 speedup is 2.73
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1330) [sender = 3.2.3]

Nuestro usuario virtual es li, que está asignado al usuario del sistema nobody por defecto. Por supuesto, puede cambiarlo a otros usuarios del sistema. En otras palabras, nadie tiene permiso de escritura en el directorio /rsync/ . Por supuesto, podemos utilizar [root@Rocky ~]# setfacl -mu:nobody:rwx /rsync/ , inténtelo de nuevo.

[root@fedora ~]# rsync -avz /root/* li@192.168.100.4::share
Password:
sending incremental file list
fedora.txt
sent 206 bytes received 35 bytes 96.40 bytes/sec
total size is 883 speedup is 3.66

Author: tianci li

Contributors: Steven Spencer