pam+mysql+vsftpd

   如果要在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的21号端口

数据连接;客户端与服务器之间进行数据传输的连接,是按需连接,一旦此次数据传输结束,此次连接就会断开。只是断开连接,不是退出FTP服务此,数据连接20端口


1、FTP服务的安装配置;

    yum -y install vsftpd
    服务脚本;/etc/rc.d/init.d/vsftpd
    数据文件;/var/ftp/
    主程序;/usr/sbin/vsftpd

    /etc/pam.d/vsftpd;认证文件

   pam; Plugable Authentication Module,插件式认证模式
   nsswitch; 名称解析框架
   模块化;/lib64/libnss* , /usr/lib64/libnss*
   配置文件;/etc/nsswitch.conf
   pam;认证框架
   模块化; /lib64/security/pam*.so
   配置文件;/etc/pam.conf和/etc/pam.d、*

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、设置环境测试

关闭本机的SElinux关闭。
新建两个用户;aa,hao ,把其中一个用户锁定在家目录内。来验证两个用户各自 登录FTP时的结果;

   useradd aa

   useradd hao

打开主配置文件vim /etc/vsftpd/vsftpd.conf,开启以下两项功能

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 注意默认;chroot_list文件是不存在的,用的时候创建即可
vim /etc/vsftpd/chroot_list    创建chroot_list文件,把hao用户加入进去.这样hao用户在 登录FTP时只能在自己的家目录内,不能切换至其它目录
hao
现在重启动vsftpd服务,注意,主配置文件只要被修改过就必须重新启动,让其重新加载新的配置文件。
service vsftpd start

wKioL1M9tDrQb8DAAAGK1JSI2RE489.jpg

wKiom1M9tGOg8OHkAALh0aewKnE510.jpg


说明:chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list   这两项可以被下面这一个选项所代替

chroot-local_user=YES.  这是表示将所有用户限制,登录FTP时只能在自已的家目录中



vsftpd+pam+mysql

安装开发环境用到的包   Desktop Platform Development   Development tools
[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
   由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。
建立虚拟用户映射的系统用户及对应的目录;  这个目录其实就是所有能虚拟用户的共享目录
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


wKioL1M9t9mijB7oAAHDGGfpAV0802.jpg

wKiom1M9uALyB23VAAGRxyQkOto925.jpg

两个用户都可正常登录FTP,而useradd 创建的用户,是不能登录FTP的

wKioL1M9t9qQWDc8AADSzU9qM3c774.jpg

配置虚拟用户让其拥有各自的权限,vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问,每个虚拟用户的配置文件名同虚拟用户的用户名。
配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。
1、配置vsftpd为虚拟用户使用配置文件目录
 vim /etc/vsftpd/vsftpd.conf 添加如下选项;
  user_config_dir=/etc/vsftpd/user_config
2、创建所需要的目录,并为虚拟用户提供配置文件;
   mkdir /etc/vsftpd/user_config
   创建两个同虚拟用户名一样 文件  touch bb cc ouyang
3、配置虚拟用户的访问权限
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}
示例;此处我把bb用户的权限设为可以上传文件,cc用户没有
vim bb
anon_upload_enable=YES

wKiom1M9uAOzOkCXAAN8QaSkj_I645.jpg

完事,睡觉了、、、










你可能感兴趣的:(ftp)