标签:vsftp
1.ftp
ftp说明:文件共享服务
启用RPC:RemoteProcedurecall远程过程调用
使用端口说明:
命令连接,控制连接:21
数据连接:
主动模式:20/tcp
被动模式:端口随机
数据传输模式:
根据文件原本的数据格式
vsftpd:
/etc/vsftpd:配置文件目录
/etc/init.d/vsftpd:服务器脚本
/usr/sbin/vsftpd:运行程序
基于PAM实现用户认证:
/etc/pam.d/*
/lib/security/*
/lib64/security/*
chroot:
禁锢用户于其家目录中
系统用户:
write_enable=YES
文件服务权限:
文件系统权限and文件共享权限
安全通信方式:
ftps:ftp+ssl/tls
sftp:Openssh
配置文件说明:
/etc/vsftpd.conf
anonymous_enable=YES #是否允许匿名用户登录
local_enable=YES #是否允许系统用户登录
write_enable=YES #允许本地用户有写权限
local_umask=022 #定义文件默认权限
anon_upload_enable=YES #定义允许匿名用户上传
anon_mkdir_write_enable=YES #允许匿名用户创建和删除权限
anon_other_write_enable=YES #结合上面一起使用
dirmessage_enable=YES
#定义用户登录的欢迎语,在文件家目录下创建隐藏文件.message
xferlog_enable=YES #开启文件传输日志
xferlog_file=/var/log/vsftp.log #文件传输日志的文件路径
connect_from_port_20=YES
chown_uploads=YES
#文件上传后改变其属主信息,保证安全性,这样无法对文件进行其他操作
chown_username=whoever#文件上传后,改为的用户定义
xferlog_std_format=YES
#idle_session_timeout=600 #会话的超时时间,超过此时间则断开
#data_connection_timeout=120 #数据连接的超时时间
#ascii_upload_enable=YES #是否开始纯文本传输格式,建议关闭。
#ascii_download_enable=YES #是否开始纯文本下载格式,建议关闭。
#chroot_local_user=YES #锁定用户家目录
#chroot_list_file=/etc/vsftpd/chroot_list
#锁定的用户在此定义,如果想所有用户只允许在在自己家目录,则注释这两行,开始下面的
chroot_list_enable=YES#锁定所有用户在自己家目录
listen=YES
#是否开启独立守护进程,如果不开启,则开始瞬时守护进程,定义在/etc/xinetd.d/下
pam_service_name=vsftpd#PAM认证文件名,在/etc/pam.d下
userlist_enable=YES
#定义在此文件中的用户无法登陆/etc/vsftpd/user_list
#如果user_list为空,则ftpusers生效
userlist_deny=YES
#定义user_list文件中用户无法登陆
userlist_deny=YES
#定义只允许user_list文件中的用户登录
tcp_wrappers=YES
max_clients#允许最多同时连接请求的客户端个数
max_per_ip#允许同一个ip同一时间最多的请求连接数
使用SSL
#mkdircertscrlnewcerts
#touchindex.txt
#echo01>serial
生成私钥
#(umask077;opensslgenrsa-outprivate/cakey.pem2048)
生成证书
#req-new-x509-keyprivate/cakey.pem-outcacert.pem-days
3650
生成vsftp私钥
#mkdir/etc/vsftpd/ssl
#(umask077;opensslgenrsa-outvsftpd.key2048)
生成vsftpd证书
#opensslreq-new-keyvsftpd.key-outvsftpd.csr
签署证书
#opensslca-invsftpd.csr-outvsftpd.crt
添加配置文件
#ssltls
ssl_enable=YES
ssl_sslv3=YES
ssl_tlsv1=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key
重启服务,客户端选择SSL认证
vsftpd:(PAM)
系统用户
匿名
虚拟用户:
Mysql:vsftd,user:name,passwd
/etc/vsftpd/vusers:-->db_load
将文件转为二进程格式,db4-utils
vsftp+pam_mysql认证
1.首先安装好mysql及其他开发环境
2.安装pam_mysql
tar-xfpam_mysql-0.7RC1.tar.gz
cdpam_mysql-0.7RC1
./configure--with-mysql=/usr/local/mysql/--with-openssl
make&&makeinstall
3.安装vsftpd,(32系统可以使用系统yum安装,64位必须编译安装)
tar-xfvsftpd-3.0.2.tar.gz
cdvsftpd-3.0.2
编译前修改:
解决:libgcc_s.so.1mustbeinstalledforpthread_cancel
towork
videfs.h
将100UL改为400UL
#defineVSFTP_AS_LIMIT100UL*1024*1024
#defineVSFTP_AS_LIMIT400UL*1024*1024
解决:500OOPS:tcp_wrappersissettoYESbutnotcp
wrappersupportcompiledin
vimbuilddefs.h
将unfine改为define
#unfineVSF_BUILD_TCPWRAPPERS
#defineVSF_BUILD_TCPWRAPPERS
开始编译及安装
make
makeinstall
4.编译过程错误:
1./usr/bin/ld:cannotfind-lcap
yum-yinstalllibcaplibcap-devel(LCAP
是一种实现链路动态汇聚的协议主动模式、被动模式)
2.缺少目录
install:cannotcreateregularfile
`/usr/local/man/man8/vsftpd.8‘:Nosuchfileordirectory
install:cannotcreateregularfile
`/usr/local/man/man5/vsftpd.conf.5‘:Nosuchfileordirectory
创建目录即可
添加虚拟映射用户
adduser-s/sbin/nologin-d/var/ftprootvuser
chmodgo+rx/var/ftproot/
安装配置文件
cpvsftpd.conf/etc/
添加:
allow_writeable_chroot=YES
guest_enable=YES
guest_username=vuser#为刚才添加的映射用户
pam_service_name=vsftp.mysql#pam.d下名称
启动服务:
/usr/local/sbin/vsftpd&
5.配置数据库:
1.创建数据库
createdatabasevsftpd;
2.创建表
createtableusers(idintauto_incrementnotnull,
namechar(20)binarynotnull,passwdchar(48)binarynotnull,primary
key(id));
3.授权访问用户
granallonvsftpd.*tovsftpd@localhostidentifiedby
‘ckl893‘;
flushprivileges;
4.添加访问用户
insertintousers(name,passwd)
value(‘ckl‘,password(‘ckl893‘));
insertintousers(name,passwd)
value(‘mm‘,password(‘ckl893‘));
配置认证文件
vi/etc/pam.d/vsftp.mysql
authrequired/lib64/security/pam_mysql.so
user=vsftpdpasswd=ckl893host=localhostdb=vsftpdtable=usersusercolumn=name
passwdcolumn=passwdcrypt=2
accountrequired/lib64/security/pam_mysql.so
user=vsftpdpasswd=ckl893host=localhostdb=vsftpdtable=usersusercolumn=name
passwdcolumn=passwdcrypt=2
crypt=0密码在mysql中是纯明文的
crypt=2密码在mysql中使用的是加密的
如果遇到错误查看日志
tailf/var/log/secure
PAMunabletodlopen(/lib64/security/pam_mysql.so):
libmysqlclient.so.18:cannotopensharedobjectfile:Nosuchfileor
directory
解决:
cp/usr/local/mysql/lib/libmysqlclient.so.18/lib64
***注意***
虚拟用户所能执行的权限全部是由匿名用户匹配,anon*
所有匿名用户都映射到同一个虚拟用户,所以所有的用户都是相同的权限
如何使不同的用户有不同的权限?
如,ckl没有下载权限,mm有下载及创建权限
1.创建配置文件目录,及文件,文件名同用户名
#mkdir/etc/vsftpd/vuser
#cd/etc/vsftpd/vuser/
#vickl
anon_upload_enable=NO
#vimm
anon_upload_enable=YES
anon_mkdir_write_enable=YES
vi/etc/vsftpd.conf
user_config_dir=/etc/vsftpd/vuser
重启服务器即可
本文出自 “运维菜鸟” 博客,请务必保留此出处http://ckl893.blog.51cto.com/8827818/1682362
标签:vsftp
原文地址:http://ckl893.blog.51cto.com/8827818/1682362