设为首页 收藏本站
查看: 1297|回复: 0

[经验分享] 文件服务器vsftp的配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-10 09:30:32 | 显示全部楼层 |阅读模式
FTP(File Transfer Protocol,文件传输协议)是一个用于从一台主机到另一台主机传送文件的协议。FTP服务可以工作在主动模式和被动模式两种模式下。

  • 主动模式:ftp客户端通过一个随机选择的TCP端口连接FTP服务器的21端口请求建立连接。这是控制连接。当控制连接建立完成后,进行数据连接,FTP服务器会用自己的20端口和客户端随机的TCP端口进行数据传输。
  • 被动模式:ftp客户端通过一个随机选择的TCP端口连接FTP服务器的21端口请求建立连接。然后FTP服务器随机选择一个TCP端口,并用控制连接告诉客户端,客户端用另一个TCP端口连接。

Vsftp(Very secure FTP,非常安全的FTP)是一个基于GPL发布的类unix系统上使用的FTP服务器软件。
  • vsftp的安装
    [iyunv@lys ~]# yum install vsftpd
  • vsftpd 服务的启动,暂停,自动加载。
    [iyunv@lys ~]# service vsftpd start
    [iyunv@lys ~]# chkconfig vsftpd on
  • 在启动vsftpd前,需要关闭selinux,并清空iptables规则。



用户认证:
虚拟用户:仅用于访问某特定服务中的资源,vsftpd支持将用户及密码保存在本地数据文件,数据库或LDAP中。
  nsswitch: network server switch, 名称解析框架
  配置文件:/etc/nsswitch.conf
  模块:/lib64/libnss*, /usr/lib64/libnss*
  pam: pluggable authentication module, 用户认证框架
  模块:/lib64/security/
  配置文件:/etc/pam.conf, /etc/pam.d/*
系统用户:以vsftpd所在主机中的/etc/passwd中的用户及密码作为认证用户来源
匿名用户:vsftpd 允许匿名用户登录
CentOS 6.5: vsftpd

用户认证配置文件:/etc/pam.d/vsftpd
服务脚本:/etc/rc.d/init.d/vsftpd
配置文件目录:/etc/vsftpd
主配置文件:vsftpd.conf
匿名用户(映射为ftp用户)共享资源位置:/var/ftp
系统用户通过ftp访问的资源的位置:用户自己的家目录
虚拟用户通过ftp访问的资源的位置:给虚拟用户指定的映射成为的系统用户的家目录
匿名用户的配置:

anonymous_enable=YES
anon_upload_enable=YES

anon_mkdir_write_enable=YES
anon_ohter_write_enable=YES

系统用户的配置:

local_enable=YES
write_enable=YES

local_umask=022
禁锢所有的ftp本地用户于其家目录中:

chroot_local_user=YES
禁锢文件中指定的ftp本地用户于其家目录中:

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
改变上传文件的属主:

chown_uploads=YES
chown_username=whoever
vsftpd使用pam完成用户认证,其用到的pam配置文件:

pam_service_name=vsftpd
是否启用控制用户登录的列表文件

userlist_enable=YES
userlist_deny=YES|NO
默认文件为/etc/vsftpd/user_list


连接限制:

max_clients: 最大并发连接数;
max_per_ip: 每个IP可同时发起的并发请求数;
传输速率:

anon_max_rate: 匿名用户的最大传输速率, 单位是“字节/秒”;
local_max_rate: 本地用户

虚拟用户:所有的虚拟用户会被统一映射为一个指定的系统账号,访问的共享位置即为此系统账号的家目录;各虚拟用户可被赋予不同的访问权限;通过匿名用户的权限控制参数进行指定;
虚拟用户账号的存储方式:

文件:编辑文件
奇数行为用户名
偶数行为密码
此文件需要被编码为hash格式;

系型数据库中的表中:

即时查询数据库完成用户认证;
mysql库,pam要依赖于pam_mysql
# yum -y install pam_mysql


安装好vsftpd后,可以查看生成那些文件,主配置文件/etc/vsftpd/vsftpd.conf
wKiom1ZAXwrjVZImAAB7Fsy1ckc766.jpg
启动vsftpd服务,并查看端口。
wKioL1ZAYPLgCMigAABB9g-hJQ4485.jpg
清空ip规则,并关闭selinux
[iyunv@lys ~]# iptables -F
[iyunv@lys ~]# getenforce
Enforcing
[iyunv@lys ~]# setenforce 0  临时关闭selinux
[iyunv@lys ~]# vi   /etc/selinux/config  永久关闭selinux
SELINUX=disabled
在Windows客户端,进入命令行模式,使用ftp这个命令,来测试是否能匿名正常登录ftp服务器

wKiom1ZAZDGScu7NAACnavHgzs8113.jpg
默认情况下,是允许匿名登录的。也可以通过linux主机来测试。
wKioL1ZAZcbTlnPpAAAsbIGf1Xw149.jpg
新建一个ftpuser,通过系统用户来登录。
wKiom1ZAaFmDIvTaAAAhQuXrRjY380.jpg
发现系统可以随意切换目录。
ftp> ls
227 Entering Passive Mode (192,168,2,114,176,227).
150 Here comes the directory listing.
drwxr-xr-x    5 0        0            4096 Nov 02 21:10 ConsoleKit
-rw-r--r--    1 0        0            4439 Jul 16  2014 DIR_COLORS
-rw-r--r--    1 0        0            5139 Jul 16  2014 DIR_COLORS.256color
-rw-r--r--    1 0        0            4113 Jul 16  2014 DIR_COLORS.lightbgcolor
drwxr-xr-x    3 0        0            4096 Jul 24 07:50 NetworkManager
-rw-r--r--    1 0        0              45 Feb 12  2014 Trolltech.conf
drwxr-xr-x    4 0        0            4096 Nov 02 21:13 X11
drwxr-xr-x    3 0        0            4096 Nov 02 21:11 abrt
drwxr-xr-x    4 0        0            4096 Nov 02 21:16 acpi
-rw-r--r--    1 0        0              44 Nov 02 22:12 adjtime
-rw-r--r--    1 0        0            1512 Jan 12  2010 aliases
-rw-r--r--    1 0        0           12288 Nov 02 21:21 aliases.db
drwxr-xr-x    2 0        0            4096 Nov 02 21:17 alsa
drwxr-xr-x    2 0        0            4096 Nov 02 21:17 alternatives
-rw-------    1 0        0             541 Mar 30  2015 anacrontab
-rw-r--r--    1 0        0             148 May 14  2009 asound.conf
-rw-r--r--    1 0        0               1 Feb 19  2015 at.deny
drwxr-x---    3 0        0            4096 Nov 02 21:17 audisp

vsftpd+pam+mysql的实现(mysql,vsftp基于同一台linux主机)

1.安装mysql和pam_mysql,其中pam_mysql是由epel提供。
2.创建虚拟用户
3.创建保存用户名和密码的数据库和表
mysql> create database vsftpd;
mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123';

mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by '123';
mysql> flush privileges;
mysql> use vsftpd;

mysql> create table users (
    -> id int AUTO_INCREMENT NOT NULL,
    -> name char(20) binary NOT NULL,
    -> password char(48) binary NOT NULL,
    -> primary key(id)
    -> );
2、添加测试的虚拟用户

根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD函数加密后存储。

mysql> insert into users(name,password) values('tom',password('magedu'));

mysql> insert into users(name,password) values('jerry',password('magedu'));

三、配置vsftpd

1.建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql

添加如下两行
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。

2.修改vsftpd的配置文件,使其适应mysql认证

建立虚拟用户映射的系统用户及对应的目录

# useradd -s /sbin/nologin -d /var/ftproot vuser
# chmod go+rx /var/ftproot
请确保/etc/vsftpd.conf中已经启用了以下选项

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选项的值如下所示
pam_service_name=vsftpd.mysql    // 系统用户将无法登录

四、启动vsftpd服务

# service vsftpd start

# chkconfig vsftpd on
查看端口开启情况

# netstat -tnlp |grep :21

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      23286/vsftpd
使用虚拟用户登录,验正配置结果,以下为本机的命令方式测试,你也可以在其它Win Box上用IE或者FTP客户端工具登录验正,重启vsftpd服务后,输入用户名和密码报错,报错日志如下

wKiom1ZAjcOwjlFDAAC3dOj3kjg957.jpg
wKioL1ZAjnLykL2eAABkb36-OKo935.jpg 想很久都不知道怎么办,后来去查var/lib/mysql/mysql.sock,路径确实不存在,看到和mysql有关,我就去看mysql的配置文件
wKiom1ZAjtyBXSz7AAAhO5TuX_0246.jpg
发现mysql.sock在/tmp/目录下,接着我就把/tmp/mysql.sock和/var/lib/mysql/mysql.sock做了一个连接,。
[iyunv@lys ~]# ln -sv /tmp/mysql.sock /var/lib/mysql/mysql.sock
`/var/lib/mysql/mysql.sock' -> `/tmp/mysql.sock'
重启服务,再登录就正常了。(为什么不直接读取/tmp/mysql.sock,而是读取/var/lib/mysql/mysql.sock???有没有大神知道是为什么?)
wKiom1ZAj6jw7HBQAADUdN_CF9M985.jpg




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-137350-1-1.html 上篇帖子: CentOS 6.7 FTP安装配置之vsftp 下篇帖子: ftp安装配置 服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表