I/O:网络、存储
存储:
DAS : Direct Attached storage
接口类型:“block"
设备:SATA,SAS;IDE,SCSI;USB;
NAS :Network Attached Storage
接口类型:“file"
协议: CIFS(samba), NFS(Network File system)
RPc: Remote Procedure Call
SAN :Storage Area Network
接口类型:"block"
协议:ISCSI(IP-SAN), FCSAN, FCOE, …..
应用层:
ftp,..
文件服务:ftp,cifs/nfs
ftp:
ftp:file transfer protocol,文件传输协议;
两类连接:
命令连接:传输命令
数据连接:传输数据
两种模式:
主动模式:PORT
Server: 20/tcp连接客户端的命令连接使用的端口向后的第一个可用端口
被动模式:PASV
Server:打开一个随机端口,并等待客户端连接
PAM :Pluggable Authenticate Module
认证框架:库,高度模块化;
协议:C/S
Server :
Windows: Serv-U, IIS, Filezilla
开源 : wuftpd, proftpd, pureftpd, vsftpd(Very Secure FTP daemon), ...
Client :
Windows : ftp, Filezilla, CuteFTP, FiashFXP, ...
开源 : lftp, ftp, Filezilla, gftp,…
vsftpd :
vsftpd is a Very Secure FTP daemon. It was written completely from scratch.
URL :
SCHEME://username:password@HOST:PORT/PATH/TO/FILE
路径映射:
用户家目录:每个用户的URL的/映射到当前用户的家目录:
vsftpd以ftp用户的身份运行进程,默认认用户即为ftp用户,匿名用户的默认路径即ftp用户的家目录Nar/ftp
ftp, anonymous
注意:一个用户通过文件共享服务访问文件系统上的文件的生效权限为此二者的交集;
程序环境:
主程序:/usr/sbin/vsftpd
主配置文件:/etc/sftpd/vsftpd.conf
数据根目录:/var/ftp
Systemd Unit File : /usr/lib/systemd/system/vsftpd.service
配置vsftpd :
用户类别:
匿名用户:anonymous-->ftp,/var/ftp
系统用户:至少禁止系统用户访问ftp服务,/etc/vsftpd/ftpusers,PAM(/etc/pam.d/vsftpd);
虚拟用户:非系统用户,用户账号非为可登录操作系统的用户账号(非/etc/passwd):
用户通过vsftpd服务访问到的默认路径,是用户自己的家目录:默认可以自己有权限访问的所有路径间切换;
禁锢用户于其家目录中:
配置文件:/etc/vsftpd/vsftpd.conf
directive value
注意:directive之前不能有多余字符:
匿名用户:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir write_enable=yES
anon_other_write_enable=YES
系统用户:
local_enable=YES
write_enable=YES
local_umask=022
辅助配置文件/etc/vsftpd/ftpusers:
列在此文件中的用户 均禁止使用ftp服务;
chroot_local_user=YES
禁锢所有本地用户 于其家目录:需要事先去除用户对家目录的写权限;
chroot_list_enable=YEs
chroot_list_file=/etc/vsftpd/chroot_list
禁锢列表中文件存在的用户于其家目录中;需要事先去除用户对家目录的写权限;
传输日志:
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
守护进程的类型:
standalone:独立守护进程;由服务进程自行监听套按字,并接收用户访问请求
transient:瞬时守护进程;由受托管方代为监听套按字,服务进程没有访问请求时不启动:当托管方收到访问请求时,才启动服务进程;
CentOS 6:xinetd独立守护进程,/etc/xinetd.d/,
CentOS7:由systemd代为监听:
控制可登录vsftpd服务的用户列表:
userlist_enable=YES
启用/etc/vsftpd/user llst文件来控制可登录用户;
userlist_deny=
YES:意味着此为黑名单;
NO:白名单;
上传下载速率:
anon_max_rate=0
local_max_rate=0
并发连接数限制:
max_clients=2000
max_per_ip=50
虚拟用户:
用户账号存储于何处?
文件、MySQL、Redis、..
vsftpd:认证功能托管给pam;
基于何种存储服务来存储用户信息,以及对存储服务的驱动要靠pam实现:
pam_mysgl :
# yum install mariadb-devel pam-devel
#./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security
# make && make install
创建数据库、授权用户、创建账号和密码;
提供配置文件:/etc/pam.d/vsftpd.vusers
auth required /usr/lib64/security/pam_mysal.so user=vsftpd passwd=vvvvv host=127.0.0.1 db=vsftpd table=users usercolumn=name
passwdcolumn=password crypt=2
account required /usr/lib64/security/pam_mysal.so user=vsftpd passwd=vvvvv host=127.0.0.1 db=vsftpd table=users usercolumn=name
passwdcolumn=password crypt=2
配置vsftpd,添加或修改以下选项:
pam_service_name=vsftpd.vusers
guest_enable=YES
guest_username=vuser
虚拟用户的写权限,通过匿名一样的指令进行定义;
还能实现不同的用户有不同的权限;
user_config_dir=/etc/vsftpd/users_con-fig/