文件服务:
应用层:ftp;
内核级网络文件系统:nfs
POSIX(可移植操作系统接口 Portable Operating System Interface of UNIX,缩写为 POSIX )
API(应用程序编程接口)
跨平台的网络文件系统:cifs (samba)
网络存储:
NAS:Network
Attached Stoage,文件系统级接口;
SAN:Storage Area
Network ,块级别接口;iSCSI;
ftp:应用层协议
file
transfer protocol,21/tcp
C/S:
Client
<–> Server
连接:
命令连接;
数据连接:、
基于不同的套接字通信;
数据传输模式:
文本格式:
二进制格式:
数据连接:
主动模式:服务端通过20/tcp连接客户端命令连接端口+1的端口;
问题:
被动模式:客户端使用随机端口连接服务器某随机端口;
客户端发出数据传输请求之后,服务器响应一个报文给客户端;
112,123;
协议安全:
明文;认证时传输的账号和密码均为明文;
安全增强:
ftps:
ftp over ssl (基于传输层的协议,更多时候通用安全通信框架)
sftp:
ftp over ssh (基于应用层的协议,完成用户远程认证登录)
C/S:协议的实现:就是开发出来符合协议要求的应用软件
S:Serv-U、IIS、FileZilla
Server
C:
CLI:ftp, lftp,
curl, wget, lftpget, …
GUI:FileZilla,
flashfxp, cute, gftp, …
S:开源解决方案;
wuftpd:washington
university
vsftpd:very secure
ftp daemon
pureftp:
proftpd:
程序环境:init:service
vsftpd start 启动服务,监听端口为21
主程序:/usr/sbin/vsftpd
主配置文件:/etc/vsftpd/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);
虚拟用户:
用户通过vsftpd服务访问到的默认路径,是用户自己的家目录;默认可以自己有权限访问的所有路径间切换;
禁锢用户于其家目录中;
配置文件:/etc/vsftpd/vsftpd.conf
directive
value
注意:directive之前不能有多余字符;
匿名用户:
anonymous_enable=YES 是否允许匿名账户访问,默认是允许,NO表示禁止
anon_upload_enable=YES 默认处于注释状态,表示是否允许用户上传文件
anon_mkdir_write_enable=YES 是否允许用户创建目录,默认为开启,编辑开启
anon_other_write_enable=YES 是否允许用户删除文件,默认未开启,自己添加
系统用户:
使用:lftp -u centos
172.18.253.24,登录本地用户
local_enable=YES
是否允许系统用户或者本地用户登录,默认允许,且可以上传文件、删除文件、创建目录、删除目录
write_enable=YES
辅助配置文件/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/,
CentOS 7:由systemd代为监听;
控制可登录vsftpd服务的用户列表:
userlist_enable=YES
启用/etc/vsftpd/user_list文件来控制可登录用户;
userlist_deny=
YES:意味着此为黑名单;
NO:白名单;
虚拟用户:
用户账号存储于何处?
文件、MySQL、Redis、…
vsftpd:认证功能托管给pam;
基于何种存储服务来存储用户信息,以及对存储服务的驱动要靠pam实现;
pam_mysql:
# 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_mysql.so user=vsftpd passwd=mageedu
host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password
crypt=2
account
required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu
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 其中vuser是可以随意创建的
虚拟用户的写权限,通过匿名一样的指令进行定义;
还能实现不同的用户有不同的权限;
1.在vsftp.conf里面加入如下一行
user_config_dir=/etc/vsftpd/vusers_config/
2.其次在/etc/vsftpd/vusers_config,建立以用户名命名的文件并编辑
vim tom
anon_upload_enbale=NO
#不允许虚拟用户tom上传文件
vim
jerry
anon_upload_enable=YES #允许虚拟用户jerry上传文件
原创文章,作者:oranix,如若转载,请注明出处:http://www.178linux.com/74592