实现基于SSL的FTPS
(1)查看是否支持SSL
ldd `which vsftpd` 查看到libssl.so
(2)创建自签名证书cd /etc/pki/tls/certs/
make vsftpd.pem
mv vsftpd.pem /etc/vsftpd
(3)配置vsftpd服务支持SSL
vim /etc/vsftpd/vsftpd.conf
ssl_enable=YES 启用SSL
allow_anon_ssl=NO 匿名不支持SSL
force_local_logins_ssl=YES 本地用户登录加密
force_local_data_ssl=YES 本地用户数据传输加密
rsa_cert_file=http://www.likecs.com/etc/vsftpd/vsftpd.pem
cat -A /etc/vsftpd/vsftpd.conf可以检查空格
(4)用filezilla等工具测试
实现基于文件验证的vsftpd虚拟用户
(1)创建虚拟账号
cd /etc/vsftpd
vim ftpusers.txt 在这个文件中创建虚拟账号,格式是奇数行是账号名,偶数行是口令,如图:
(2)将存放账号的文件编码为hash格式,需要用db_load命令
db_load -T -t hash -f ftpusers.txt ftpusers.db 生成一个tpusers.db数据库文件
chmod 600 ftpuser.db 为了安全,不让其他人查看该文件,原来存放账号的文件就可以删掉了
(3)创建一个系统账号,所有虚拟账号会统一映射为一个指定的系统帐号,访问共享位置,即为此系统帐号的家目录
useradd -r -d -m /app/ftpuser -s /sbin/nologin ftpuser
chmod 555 /app/ftpuser
mkdir /app/ftpuser/upload
chown ftpuser /app/ftpuser/upload
(4)创建pam配置文件,让ftp通过数据库文件来验证身份,需要用到pam模块
定义一个pam模块配置文件
vim /etc/pam 后面是db数据库文件的路径
(5)将虚拟账号映射为系统账号,指定pam配置文件,修改ftp配置文件
(6)重启ftp服务,测试,现在就可以用虚拟账号登陆了
(7)虚拟用户建立独立的配置文件
mdkir /etc/vsftpd/ftpusers.d/ 创建配置文件存放的路径
vim /etc/vsftpd/vsftpd.conf
user_config_dir=http://www.likecs.com/etc/vsftpd/ftpusers.d/
cd /etc/vsftpd/ftpusers.d/ 进入此目录
现在想允许ftp1能够上传文件和创建目录和删除修改上传的文件,ftp2登陆的目录为/app/ftpuser1,
ftp3登陆的根目录为/app/ftpuser2
vim ftp1
vim ftp2
vim ftp3
再创建根目录,并在各根目录下创建不同的文件加以区分
mkdir /app/ftpuser1
mkdir /app/ftpuser2
mkdir /app/ftpuser1/f1
mkdir /app/ftpuser2/f2
chown ftpuser /app/ftpuser1/f1
chown ftpuser /app/ftpuser2/f2
chmod 555 /app/ftpuser*
(8)测试
ftp1用户
ftp2用户