系统环境:RHEL6.5
IP地址:10.10.125.4
服务描述:
ftp服务器(File Transfer Protocol:文件传输协议):Internet上用来传送文件的协议
vsftp:一个基于GPL发布的linux系统上使用的FTP服务器软件,全称为Very Secure FTP;
工作模式:C/S
使用端口:21/20 其中20端口是数据传输端口,21是监听端口
安装:
rpm -ivh/mnt/Packages/vsftpd-2.2.2-6.el6_0.1.x86_64.rpm
or yum -y install vsftpd
linux系统作为客户端访问需要安装lftp工具;该工具支持的文件协议包含:ftp;ftps,http,https,hftp,fish(其中ftps和https需要包含openssl库)。
特点:书签 ,排队,镜像,断点续传,多进程下载等功能。
相关配置文件位置:
/etc/vsftpd/ ftpusers #用于指定哪些用户不能访问ftp服务器,黑名单 user_list #用于指定哪些用户可以访问ftp服务器,白名单 vsftpd.conf #vsftpd主配置文件 vsftpd_conf_migrate.sh #vsftpd操作的一些变量和设置的脚本 /var/ftp/ #默认匿名用户的根目录
启动服务器:
/etc/init.d/vsftpd {start|stop|restart|try-restart|force-reload|status}
查看监听端口:
netstat -anptu | grep ftp
访问方式:
windows系统:
linux系统:
地址栏:lftp 10.10.125.4
应用实例:
1、搭建一台服务器允徐所有人访问,并允许用户自己创建用户目录
修改主配置文件:/etc/vsftp/vsftpd.conf
anonymous_enable=YES #允许匿名用户登录 # Uncomment this to allow the anonymous FTP user to upload files. This only anon_upload_enable=YES #允许匿名用户上传 # Uncomment this if you want the anonymous FTP user to be able to create anon_mkdir_write_enable=YES #允许匿名用户创建目录
修改好主配置文件之后重启服务
service vsftpd restart
测试由于pub目录权限是755不能创建目录
可创建test目录,并修改属主
mkdir /var/ftp/test chown ftp /var/vtp/test
2、现在有两个小组更新web站点内容,包括上传文件,创建目录和更新网页等。
创建账号user1,user2,该账号能登陆ftp服务器,但不允许登录本地系统,并将这两个账号的根目录限制到/var/www/html,不能进入该目录意外的任何目录
创建用户并设置默认密码:123456
[[email protected] vsftpd]# for id in {1,2};do useradd -s /sbin/nologin user${id};echo "123456" | passwd --stdin user${id};done
anonymous_enable=NO #禁止匿名用户登录
chroot_local_user=YES #允许本地用户登录
chroot_list_enable=YES #激活chroot功能
local_root=/var/www/html #设置本地用户的根目录
chroot_list_file=/etc/vsftpd/chroot_list #设置锁定用户在根目录中的列表文件,此文件存放要锁定的用户名
保存
创建chroot_list文件
[[email protected] vsftpd]# touch /etc/vsftpd/chroot_list
[[email protected] vsftpd]#vim !$
user1
user2
将允许登录vsftp的用户添加至/etc/vsftpd/chroot_list文件中,每个用户名占一行空间
重启vsftpd服务使配置生效
service vsftpd restart
更改根目录访问权限
chmod -R o+w /var/www/html
完成相关设置
3、为ftp开设虚拟用户
功能:
1)为客户提供相关文档下载,对搜友互联网开放共享目录,云溪下载产品信息,禁止上传。
2)对公司合作单位能够使用ftp服务器上传和下载,但不能删除任何数据。
3)创建一公司内部用户具备所有权限。
4)关闭实体账号登录,使用虚拟账号验证机制,并对不同虚拟账号设置不同访问权限
5)为保证服务器性能,需要根据用户等级限制客户端的连接数以及下载速度。
创建用户文本文件:用户名位于奇数行,密码位于偶数行
[[email protected] vsftpd]# vim /etc/vsftpd/vsftpd_viruser.txt
ftp
123456
vip
123456
生成数据库
由于保存的用户名和密码无法直接被系统调用,因此需要使用db_load命令生成能被系统调用的数据库文件
检查文件是否安装,如果没有安装可以直接通过yum或rpm的方式进行安装
[[email protected] vsftpd]# rpm -qf `which db_load`
db4-utils-4.7.25-18.el6_4.x86_64
[[email protected] vsftpd]# rpm -ivh /mnt/Packages/db4-utils-4.7.25-18.el6_4.x86_64.rpm
[[email protected] vsftpd]# db_load -T -t hash -f /etc/vsftpd/vsftpd_viruser.txt /etc/vsftpd/vsftpd_viruser.db
生成数据库文件之后可以删除用户存储文件/etc/vsftpd/vsftpd_viruser.txt
修改数据库文件访问权限
[[email protected] vsftpd]# chmod 600 vsftpd_viruser.db
配置PAM文件
通过调用系统的PAM模块使服务器能够使用数据库文件,进而完成对客户端的身份验证。
PAM概述:
PAM(Plugable Authentication Module)可插拔认证模块,不必重新安装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,应以服务名称命名。
[[email protected] vsftpd]# vim /etc/pam.d/vsftpd
在文件末尾添加一下两行内容,并将默认设置全部使用#注释掉 auth required /lib64/secruity/pam_userdb.so db=/etc/vsftpd/vsftpd_viruser account required /lib64/secruity/pam_userdb.so db=/etc/vsftpd/vsftpd_viruser
创建虚拟账号对应的系统用户及ftp共享的目录
[[email protected] vsftpd]# useradd -d /var/ftp/ftpvip ftpvip [[email protected] vsftpd]# useradd -d /var/ftp/ftpuser ftpuser [[email protected] vsftpd]# chmod -R 700 /var/ftp/ftpvip/ #修改权限 [[email protected] vsftpd]# chmod -R 500 /var/ftp/ftpuser/
建立配置文件
由于该功能中一个配置文件无法实现,需要为每个虚拟账号建立独立的配置文件,并根据
[email protected] ~]# cat /etc/vsftpd/vsftpd.conf | grep -v ^# anonymous_enable=NO #禁止匿名用户登录 local_enable=YES #允许本地用户登录 write_enable=YES #允许本地用户可写 local_umask=022 #默认umask掩码 dirmessage_enable=YES # xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES pam_service_name=vsftpd #配置vsftpd使用pam模块为vsftpd chroot_local_user=YES listen=YES #启用侦听指令,使vsftpd能够以独立模式运行监听,但这个指令不能与IPv6同时侦听使用 tcp_wrappers=YES user_config_dir=/etc/vsftpd/viruserconfig #设置虚拟账号的主目录为viruserconifg max_clients=300 #设置ftp服务器最大接入客户端数量300个 max_per_ip=10 #设置每个IP地址最大连接数位10个
[[email protected] ~]# vim /etc/vsftpd/viruserconfig/ftp guest_enable=yes #开启虚拟用户 guest_username-ftpuser #定义虚拟用户名 anon_world_readable_only=no #允许只读 anon_max_rate=50000 #限制传输速率为50kb/s
配置vip用户
[[email protected] ~]# vim /etc/vsftpd/viruserconfig/vip guest_enable=yes guest_username=ftpvip anon_word_readable_only=no write_enable=yes anon_mkdir_write_enable=yes anon_upload_enable=yes anon_max_rate=100000
重启vsftpd服务生效
service vsftpd restart
验证发现不能登录报530错误
[[email protected] vsftpd]# lftp 10.10.125.4 -u vip 口令: lftp [email protected]:~> ls ls: 登录失败: 530 Login incorrect. lftp [email protected]:~>
服务端打开日志
[roo[email protected] vsftpd]# tail -f /var/log/secure Aug 24 10:50:24 xuexi vsftpd[3381]: PAM unable to dlopen(/lib64/secruity/pam_userdb.so): /lib64/secruity/pam_userdb.so: cannot open shared object file: No such file or directory Aug 24 10:50:24 xuexi vsftpd[3381]: PAM adding faulty module: /lib64/secruity/pam_userdb.so
可以得出是由于缺少相关模块导致登录失败
检查该文件是否存在
ls -lh /lib64/security/pam_userdb.so -rwxr-xr-x. 1 root root 11K Oct 7 2013 /lib64/security/pam_userdb.so 哈哈哈尴尬。。。。不细心那不细心。。。
发现模块已经存在仍然不能认证
ls: 登录失败: 500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list
使用注入用户名
echo "vip" >> /etc/vsftpd/chroot_list
echo "ftp" >> /etc/vsftpd/chroot_list
ls: 登录失败: 500 OOPS: missing value in config file for: guest_username-ftpuser
上边这个报错也是由于虚拟用户设置文件配置错误导致将按照提示改好之后即可。
登录测试:
lftp [email protected]:/ftpuser> ls -rw-r--r-- 1 0 0 6 Aug 24 05:41 1111.docx -rw-r--r-- 1 0 0 7884800 Aug 24 05:40 bin.tar
到此vsftpd配置完成
相关参考连接:http://1745027.blog.51cto.com/1735027/692653