vsftp安装以及本地用户和虚拟用户认证方式配置
vsftp配置文件十分绕口和复杂,下面是我的一些总结!
vsftp安装
cd /data/install/ tar xvf vsftpd-3.0.2.tar.gz cd vsftpd-3.0.2 make
如果make报如下错误:
/lib/libpam.so.0: could not read symbols: File in wrong format
原因是vsftp没有考虑到64位平台上库文件的位置!
办法:将vsf_findlibs.sh文件中的lib换成lib64,可以使用vim打开vsf_findlibs.sh文件,运行如下的命令!
:%s/\/lib\//\/lib64\//g
然后接着安装:
make clean make && make install && echo ok
因为,vsftp包中直接提供了Makefile文件,不用configure步骤!至此,vsftp安装完成!
ftp系统本地用户认证配置
说明,这个配置文件的作用是允许本地用户访问ftp、并且不能切换到上层目录,每个行尾必须没有空格和其它字符,必须删掉我的注释才能用,不然会启动报错的。系统用户配置文件:
vim /etc/vsftpd.conf ftpd_banner=ftp.xnow.me listen=YES local_enable=yes #是否启用本地用户 write_enable=YES local_umask=022 anonymous_enable=yes #设置认证模块 pam_service_name=vsftpd xferlog_enable=YES xferlog_file=/var/log/vsftpd.log #日志文件 xferlog_std_format=YES userlist_enable=yes # 启用用户列表,默认位置是 /etc/vsftpd.user_list userlist_deny=no #只有列表文件中的问户可以登陆ftp #chroot_list_enable=no #chroot_local_user=yes local_root=/data/program/cdnwebs #ftp用户登陆后的目录 chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd.user_list #规定不能访问上层目录的用户 allow_writeable_chroot=YES
最后四句的作用是:不允许用户切换到上一层目录,将用户chroot到指定的local_root目录下! 如果没有最后一句,会报错:
“500 OOPS: vsftpd: refusing to run with writable root inside chroot ()”
因为在新版的vsftp中,chroot的目录不能被写入,必须使用chmod a-w /ftp,加了最后一行,就不用设置目录为不能写入了!重启vsftp再登陆,就发现当前目录是“/”中了!然后,接着配置认证模块和用户列表等:
vim /etc/pam.d/vsftpd session optional pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-auth useradd -s /sbin/nologin -d /data/program/cdnwebs ftpuser chown -R ftpuser:ftpuser /data/program/cdnwebs vim /etc/vsftpd.user_list ftpuser touch /etc/ftpusers
由于/etc/pam.d/vsftpd中定义sense=deny,所以/etc/ftpusers里的用户默认会被拒绝,所以只是创建一个空文件,这样,就只有ftpuser这个系统用户能登陆ftp了!
第二种ftp认证----虚拟用户:
这种认证方法把虚拟用户全部映射到一个真实的系统用户上,可以增加ftp的安全性!这个方式的认证依赖于db4-utils,需要使用它的db_load命令生成加密的认证文件!首先配置主配置文件/etc/vsftpd.conf
vim /etc/vsftpd.conf anonymous_enable=NO local_enable=yes write_enable=YES local_umask=022 xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES listen=YES ftpd_banner=Welcom to my virtual FTP server. guest_enable=YES #开启虚拟用户认证 guest_username=ftpuser #虚拟用户映射为系统本地用户ftpuser pam_service_name=ftp.vuser # 认证名为ftp.vuser chroot_local_user=yes user_config_dir=/etc/vsftpd/vsftpd_user_conf #虚拟用户的配置文件目录 virtual_use_local_privs=YES allow_writeable_chroot=YES
新建虚拟用户aaa
mkdir /etc/vsftpd/vsftpd_user_conf vim /etc/vsftpd/vsftpd_user_conf/aaa write_enable=yes local_root=/data
创建账号和密码文件:
vim /etc/vsftpd/vusers.list #文件基数行是用户名,偶数行是密码,中间不要有空格和空行 aaa 123456
生成加密的认证文件:
db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vsftpd_login.db
添加认证模块:
vim /etc/pam.d/ftp.vuser auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
这里注意模块的路径是lib还是lib64,由系统位数决定,后面的路径是生成的认证文件的路径。
启动ftp
vsftpd &
在客户端上使用aaa用户登陆,添加用户只需要在/etc/vsftpd/vusers.list中添加两行----账号和密码,并再次生成加密认证文件!不需要重启vsftpd服务
遇坑,请注意
遇到登陆问题,可以查看/var/log/secure日志。。。我在日志中发现如下错误:
Jun 11 11:18:54 dev1312 vsftpd: pam_userdb(ftp.vuser:auth): user_lookup: could not open database `/etc/vsftpd/vsftpd_login': Invalid argument
原因可能是我安装db4-utils的时候遇到了错误,所以我通过解压rpm,把so和db_load文件存放到了相应的路径中,但是生成的db文件有格式问题。。。后来,我通过在一台没问题的机器上生成db文件,然后拷贝到这个有问题的机器上,从而解决了这个报错!
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:昔我往矣 来源: 昔我往矣
- 标签: vsftp 虚拟用户
- 发布时间:2014-12-28 23:51:45
- [54] IOS安全–浅谈关于IOS加固的几种方法
- [53] android 开发入门
- [52] 如何拿下简短的域名
- [51] 图书馆的世界纪录
- [49] Oracle MTS模式下 进程地址与会话信
- [49] Go Reflect 性能
- [47] 【社会化设计】自我(self)部分――欢迎区
- [46] 读书笔记-壹百度:百度十年千倍的29条法则
- [36] 程序员技术练级攻略
- [27] 视觉调整-设计师 vs. 逻辑