vsftpd mysql_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

9dc07fd3c1ee7fdc9c39fabeb91bbaf0.png

1b2ccfc5bb7b4796c216e848f0960cd2.png

说明:chroot_list_enable=YES

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

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

vsftpd+pam+mysql

安装开发环境用到的包Desktop Platform DevelopmentDevelopment 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 vsftpd@172.16.34.30 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

cde1afb35816617d2afaf03e12d3dc83.png

9ff6b58b1b68b895c51ffbe7b4859fbc.png

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

17b4144ae492d0f1bc2a4d0fe7a0ff79.png

配置虚拟用户让其拥有各自的权限,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

969b9b7554e7c458d2b9efb479666485.png

完事,睡觉了、、、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值