如果要在Linux服务器上搭建一个安全、高性能、稳定性好的FTP服务器,那么vsftpd可能是你的首选应用。vsftpd意思为“very secure FTP daemon(非常安全的FTP进程)”,是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如Linux、BSD、Solaris、HP-UX以及Irix等系统上面。vsftpd支持很多其他传统的FTP服务器不支持的良好特性。本篇就说下vsftpd的主配置文件里的选项,以及如何结合mysql+pam+vsftpd做虚拟用户认证
FTP服务器的连接分为两种;
数据连接;客户端与服务器之间进行数据传输的连接,是按需连接,一旦此次数据传输结束,此次连接就会断开。只是断开连接,不是退出FTP服务此,数据连接20端口
1、FTP服务的安装配置;
/etc/pam.d/vsftpd;认证文件
2、vsftpd的主配置文件详解;
[root@linux ~]# vim /etc/vsftpd/vsftpd.conf 主配置文件 anonymous_enable=YES //是否开启匿名用户访问 anonymous_enable=YES //是否开启本地用户既系统用户访问 write_enable=YES //是否开启本地用户的写权限:上传文件的权限 local_umask=022 //系统用户上传文件时候的umask默认值 anon_upload_enable=YES //是否开启虚拟用户上传文件的权限 anon_mkdir_write_enable=YES //是否开启虚拟用户新建文件件的权限 chown_uploads=YES //是否开启上传文件的属主修改 chown_username=whoever //上传文件后所属主 xferlog_file=/var/log/xferlog xferlog_std_format=YES //日志记录,需要开启上面两项才可以生效 idle_session_timeout=600 //连接超时时间 data_connection_timeout=120 //数据传输超时时间 ascii_upload_enable=YES ascii_download_enable=YES //是否开启ascii码的上传、下载 chroot_list_enable=YES //是否锁定用户登录后的目录,配置文件在/etc/vsftpd/chroot_list,表内定义了锁定的用户列表 chroot_local_user=YES //只禁固所有用户只允许登录访问自已家目录的文件 chroot_list_file=/etc/vsftpd/chroot_list //用户登录以后把用户锁在那个目录下的定义 。默认匿名用户登录FTP是可以切换至root用户下的,这样是非常不安全的vim /etc/vsftpd/chroot_list这个目录可以将用户锁定到自已的家目录中,只需将用户加入到这个文件当中即可 listen=YES //设置ftp服务是否为独立进程 pam_service_name=vsftpd //pam认证服务名称 userlist_enable=YES // 用户列表限定 用法(定义黑白名单) 定义黑名单:userlist_enable=YES 、userlist_deny=YES 定义白名单:userlist_enable=YES、userlist_deny=NO max_clients = // 单个IP最多发起几个请求的 max_per_ip = //最多允许几个IP链接FTP服务器
3、设置环境测试
useradd aa
useradd hao
打开主配置文件vim /etc/vsftpd/vsftpd.conf,开启以下两项功能
说明:chroot_list_enable=YES
chroot-local_user=YES. 这是表示将所有用户限制,登录FTP时只能在自已的家目录中
vsftpd+pam+mysql
[root@linux ~]# yum -y install mysql-server mysql-devel pam_mysql [root@linux ~]# service mysqld start 创建一个存储虚拟用户的数据库名为vsftpd,并对其授权 spacer.gif 添加测试的用到的虚拟用户;bb,cc密码为'redhat' spacer.gif mysql> use vsftpd; mysql> grant all on vsftpd.* to vsftpd@localhost identified by 'redhat'; mysql> grant all on vsftpd.* to [email protected] identified by 'redhat'; mysql>flush privileges;
建立pam认证所需文件 #vi /etc/pam.d/vsftpd.mysql 这是一个事先不存在的文件,需要时创建即可 添加如下两行 auth required /lib64/security/pam_mysql.so user=vsftpd passwd=redhat host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required /lib64/security/pam_mysql.so user=vsftpd passwd=redhat host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
建立虚拟用户映射的系统用户及对应的目录; 这个目录其实就是所有能虚拟用户的共享目录 useradd -s /sbin/nologin -d /var/ftproot user chmod go+rx /var/ftproot 启动vsftpd的主配置文件的以下几项; anonymous_enable=YES local_enable=YES write_enable=YES anon_upload_enable=NO anon_mkdir_write_enable=NO chroot_local_user=YES 而后添加以下选项 guest_enable=YES guest_username=vuser pam_service_name=vsftpd.mysql
两个用户都可正常登录FTP,而useradd 创建的用户,是不能登录FTP的
完事,睡觉了、、、