Servidor FTP
Construye un servidor FTP en centos7
FTP: protocolo de transferencia de archivos, modo de trabajo [cliente / servidor], número de puerto del servicio FTP: tcp / 21, tcp / 20
Modo activo FTP : el cliente se conecta al puerto de comando del puerto 21 del servidor FTP desde un puerto arbitrario N (N> 1024), el cliente comienza a escuchar en el puerto N + 1 y envía el comando FTP "puerto N + 1" al servidor FTP, El servidor FTP utiliza el puerto de datos (20) para conectarse al puerto de datos (N + 1) designado por el cliente.
Modo pasivo FTP : el cliente se conecta al puerto de comando del puerto 21 del servidor FTP desde un puerto arbitrario N (N> 1024), el cliente comienza a escuchar en el puerto N + 1, el cliente envía el comando PASV y el servidor abre un puerto arbitrario ( P> 1024) y envíe el comando PORT P al cliente. El cliente inicia una conexión desde el puerto local N + 1 al puerto P del servidor para transmitir datos.
En el entorno real de la empresa, si el cliente FTP y el servidor FTP están abiertos al firewall, FTP debe funcionar en modo activo, de modo que solo los puertos 20 y 21 deben abrirse en las reglas del firewall del servidor FTP.
1. Introducción al servidor FTP
FTP (Protocolo de transferencia de archivos): El protocolo de transferencia de archivos es un sistema cliente / servidor. Los usuarios que utilizan FTP deben estar autenticados antes de poder iniciar sesión. Los usuarios del servidor FTP se pueden dividir en tres categorías.
Usuario del sistema : el usuario del sistema. Linux generalmente no restringe a los usuarios físicos, por lo que los usuarios físicos pueden trabajar en todo el sistema de archivos. Pero por lo general no quieren que accedan al sistema de forma remota a través de FTP.
Usuario virtual : Un usuario que solo puede usar el sistema en modo FTP y no puede iniciar sesión en el sistema directamente usando Shell, es decir, un usuario virtual.Se requiere autenticación para acceder al servidor. La mayoría de los usuarios de FTP son tales usuarios.
Usuario anónimo : Se puede proporcionar acceso de usuario anónimo para servidores públicos Nombre de usuario: anónimo. Sin embargo, cuando se utilizan usuarios anónimos, deben restringirse tanto como sea posible, con permisos más bajos, como: la cantidad de usuarios conectados al mismo tiempo es limitada, la cantidad de archivos a los que se accede es limitada, los archivos no se pueden cargar, se permiten menos instrucciones y la configuración está oculta. El número máximo de conexiones en las que los usuarios pueden iniciar sesión al mismo tiempo, etc.
2. Instalación del servidor FTP
1. Instale el paquete vsftpd usando la fuente yum predeterminada
#yum install vsftpd ftp
2. Inicie el servicio y configúrelo para que se inicie automáticamente
Nombre de servicio de vsftpd: vsftpd.service
#systemctl start vsftpd.service 启动服务
#systemctl enable vsftpd.service 开机自启
3. Configure el firewall y el mecanismo de Selinux
#firewall-cmd --permanent --zone=public --add-service=ftp
#firewall-cmd --reload
#systemctl stop firewalld
#setenforce 0
4. Acceda al servidor ftp
Use el comando ftp para acceder en el sistema Linux
Acceder al servidor FTP en el cliente de Windows
Tres, configurar usuarios anónimos para acceder a ftp
1. Los usuarios anónimos acceden a puntos de conocimiento relacionados con FTP
(1) De forma predeterminada, los usuarios anónimos y los usuarios del sistema pueden acceder a ftp. El directorio predeterminado al que se accede es: / var / ftp
Prueba de acceso (nombre de usuario: la contraseña anónima está vacía)
(2) El archivo de configuración de ftp es: /etc/vsftpd/vsftpd.conf
Configure usuarios anónimos para acceder a ftp:
anonymous_enable=YES
(3) Configure un usuario anónimo para que no ingrese una contraseña al iniciar sesión en ftp:
no_anon_password=YES
ftpd_banner= welcome to our home! //设置提示内容
(4) Configure usuarios anónimos para cargar, crear y eliminar archivos:
anon_upload_enable=YES 匿名用户上传权限
anon_mkdir_write_enable=YES 匿名用户新建文件夹的权限
anon_other_write_enable=yes 匿名用户删除和修改文件的权限
(5) Establecer permisos de archivo
chmod 777 pub 不推荐使用
setfacl -m u:ftp:rwx pub 推荐使用
(6) Establecer permisos para que los usuarios anónimos carguen o creen archivos nuevos
Valor de máscara: determina el
método de representación del valor de máscara de permiso predeterminado al crear un nuevo archivo o carpeta : 0022
Si usa vsftp como usuario local, debe modificar el valor de local_umask en el archivo de configuración;
si usa vsftp como usuario virtual, debe modificar el valor de anon_umask en el archivo de configuración.
Cuando umask = 022, el permiso de directorio recién creado es 755 y el permiso de archivo es 644; cuando
umask = 077, el permiso de directorio recién creado es 700 y el permiso de archivo es 600.
(7) La configuración no permite que los usuarios del sistema inicien sesión, solo los usuarios anónimos pueden iniciar sesión:
anonymous_enable=YES
local_enable=no
(8) Establezca el directorio predeterminado para que los usuarios anónimos accedan a FTP
anon_root=/var/ftp
anon_root=/var/public
Nota: Para modificar el usuario anónimo predeterminado cuando el directorio del servidor vsftp, no el anon_root a otra cuenta del directorio de inicio existente, o no puede lograr que los usuarios anónimos accedan al servidor ftp.
En cuarto lugar, configure los usuarios del sistema para acceder al servidor FTP.
1. Acceso del usuario del sistema a conocimientos relacionados con FTP
(1) El usuario del sistema accede al directorio principal de forma predeterminada y tiene la autoridad para cargar, descargar, crear y eliminar, y también puede cambiar a otros directorios del sistema.
Desactive el acceso de usuarios anónimos y solo permita que accedan los usuarios del sistema
anonymous_enable=no 关闭匿名用户访问
local_enable=yes 允许系统用户访问
local_umask=022
(2) Configure los usuarios del sistema para que solo tengan acceso a su propio directorio de inicio y tengan todos los permisos, y no se les permita cambiar a otros directorios del sistema.
chroot_local_user=YES 控制用户访问路径访问自己的主目录,不能切换到其他目录
allow_writeable_chroot=YES 允许写入
ftpd_banner= welcome to our home!
max_clients=30 设置最大连接数
idle_session_timeout=600 设置超时时间
(3) Configure el usuario del sistema para acceder al directorio especificado, y no se le permite cambiar a otros directorios del sistema, y tiene la autoridad para cargar, descargar, crear y eliminar.
local_root=/mnt/public/ 设置系统用户访问ftp的默认目录
write_enable=YES 允许写入
chroot_local_user=YES 控制用户访问路径访问指定目录,不能切换到其他目录
allow_writeable_chroot=YES 允许写入
Modifique los permisos de archivo en el directorio / mnt / public /
2. Control de acceso basado en usuarios locales
De forma predeterminada, todos los usuarios del sistema en el servidor ftp pueden acceder a ftp. ¿Cómo restringir el acceso solo a usuarios específicos del sistema? En vsftp se proporcionan dos archivos de configuración relacionados con los usuarios del sistema:
/ etc / vsftpd / ftpusers proporciona una lista de usuarios de ftp (lista negra) que tienen prohibido iniciar sesión. El usuario contenido en este archivo tendrá prohibido iniciar sesión en el servidor vsftpd, independientemente de si el usuario aparece en / etc / vfsftpd / user_list.
/ etc / vsftpd / user_list proporciona una lista de usuarios de ftp (lista blanca) que pueden iniciar sesión. Los usuarios contenidos en este archivo pueden tener prohibido iniciar sesión y se les puede permitir iniciar sesión.
La decisión específica se toma en el archivo de configuración principal vsftpd.conf:
Cuando hay userlist_enable = YES, el archivo user_list entra en vigor.
Cuando hay userlist_deny = YES, solo las cuentas de la lista tienen prohibido iniciar sesión.
Cuando hay userlist_deny = NO, los usuarios de la lista pueden iniciar sesión.
Entre ellos: la prioridad del archivo ftpusers es mayor que la del archivo user_list, es decir, si un usuario existe en dos archivos al mismo tiempo, se deniega el acceso a ftp.
Ejemplo: Solo permita que el usuario ftpuser acceda a ftp, entonces se pueden realizar las siguientes configuraciones:
#vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES #启用userlist用户列表(系统默认设置)
userlist_deny=NO #只允许列表中的用户登录
#vim/etc/vsftpd/user_list
Después de reiniciar el servicio y probar en el cliente, solo el usuario ftpuser puede acceder a ftp en este momento
Cinco, configurar usuarios virtuales para acceder a FTP
1. Instale el software y los módulos de autenticación necesarios para los usuarios virtuales de Vsftpd
#yum install pam* libdb-utils libdb* --skip-broken -y
2. Cree un archivo de usuario virtual temporal /etc/vsftpd/ftpusers.txt. El formato del nombre de usuario y la contraseña es el siguiente:
Nombre de usuario de Techftp
123456 Contraseña
Netftp
123456
Admftp
123456
Markftp
123456
3. Genere el archivo de autenticación de la base de datos de usuarios virtuales Vsftpd y establezca la autoridad en 600
#db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftp_login.db
#chmod 600 /etc/vsftpd/vsftp_login.db
4. Configure el archivo de autenticación PAM: vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vsftp_login
account required pam_userdb.so db=/etc/vsftpd/vsftp_login
5. Cree un usuario del sistema para la asignación de usuarios virtuales
#useradd -s /sbin/nologin ftpuser
6. Modifique el archivo de configuración: #vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd
pam_service_name=vsftpd.vu
guest_enable=YES 开启系统虚拟用户访问
guest_username=ftpuser 指定系统虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf 指定虚拟用户的配置文件目录
virtual_use_local_privs=YES 允许虚拟用户访问
7. Cree directorios virtuales privados y archivos de configuración independientes para usuarios virtuales respectivamente.
#mkdir /home/ftpuser/techftp
#mkdir /etc/vsftpd/vsftpd_user_conf
#vim techftp
local_root=/home/ftpuser/techftp 默认访问的目录
write_enable=YES 允许写入
anon_world_readable_only=YES 允许浏览
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#mkdir /home/ftpuser/netftp
#vim netftp
local_root=/home/ftpuser/netftp
write_enable=YES
virtual_use_local_privs=NO #不具有可登录用户的权限
anon_world_readable_only=YES #可浏览目录
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
Seis, gestión de registros Vsftpd
1. La configuración del archivo de registro del servidor FTP creado por el software Vsftp se puede encontrar en /etc/vsftpd.conf:
Xferlog_enable = YES Encienda el servidor FTP para registrar cargas y descargas
Xferlog_std_format = formato de registro SÍ
Xferlog_file = La ruta especifica el archivo de registro
El valor predeterminado es: / var / log / xferlog
2. El formato de salida del archivo de registro es el siguiente:
(1) Hora actual (hora local), el formato es: DDD MMM dd hh: mm: ss AAAA
(2) Tiempo de transmisión: el tiempo utilizado para transmitir el archivo, en segundos
(3) Nombre / IP de host remoto:
(4) Tamaño de archivo: el tamaño del archivo transferido, en bytes
(5) Nombre de archivo: nombre del archivo de transferencia, incluida la ruta
(6) Tipo de transmisión: a: transmisión en ASCII; b: transmisión en archivo binario
(7) Marca de tratamiento especial:
_: Sin trato especial
C: el archivo está comprimido
U: el archivo está en formato sin comprimir
T: el archivo está en formato tar
(8) Dirección de transmisión: o Transferencia del servidor FTP al cliente; i Transferencia del cliente al servidor FTP
(9) Modo de acceso: un usuario anónimo; g usuario invitado; r usuario en el sistema
(10) Nombre de usuario
(11) Nombre del servicio: generalmente FTP
(12) Método de autenticación: 0 ninguno; 1 autenticación RFC931
(13) Identificación de usuario autenticado: si usa *, la prueba significa que no se puede obtener la identificación
(14) Estado de finalización: i la transmisión no se ha completado; c significa que la transmisión se ha completado.