CentOS7.2上vsftpd服务部署实践

vsftpd

注:(测试主机的ip为192.168.1.156)


vsftpd:一个从0建构的非常安全的FTP服务程序.

1. 安装vsftpd软件包(vsftpd.x86_64 0:3.0.2-11.el7_2)

yum -y install vsftpd    
systemctl start vsftpd.service  # 启动
ss -lnt      # 查看21号端口处于监听状态,成功的话此时可在浏览器中输入
             # ftp://192.168.1.156可得到内容如下图(即/var/ftp目录中内容)或使
             # 用ftp lftp等命令行客户端也能访问成功
Paste_Image.png

主配置文件: /etc/vsftpd/vsftpd.conf
辅助配置文件: /etc/vsftpd/ftpusers # pam认证的配置文件可以 查看文件/etc/pam.d/vsftpd说明(为了安全,默认是拒绝了诸如root等用户的登录)
主程序: /usr/sbin/vsftpd
UnitFile: /usr/lib/systemdj/system/vsftpd.service
文件路径映射: /var/ftp 即用户的家目录的映射,访问ftp必须以某个系统用户的身份,此用户的家目录即文件档目录

ftp系统用户描述

ftp用户种类

  • 匿名用户: 不需要输入帐号或密码就能访问的用户.
  • 系统用户: 本机上存在的且有账号与密码的用户.(因为搭建vsftpd只是为了共享文件,用此用户登录会削弱安全性)
  • 虚拟用户: 映射到某个系统用户的文件,只是为了登录vsftpd为存在,非常安全

配置vsftpd主配置文件(/etc/vsftpd/vsftpd.conf)

1.anonymous_enable=YES # 是否允许匿名用户登录
2.anon_upload_enable=YES # 是否允许匿名用户上传
3.anon_other_write_enable=YES # 是否允许匿名用户删除文件 依赖2(这项配置文件默认没有,得自己编写)
4.anon_other_mkdir_enable=YES # 是否允许匿名用户创建目录. 依赖2
5.local_enable=YES # 是否允许系统用户登录(普通用户才行)
6.chroot_local_user=YES # 用户访问ftp服务器端时只能访问登录用户自己的家目录(安全性)并映射成'/',需要事先将用户家目录取消其写权限,不然会报出OOPS: vsftpd: refusing to run with writable root inside chroot()Login failed.Service not available, remote server has closed connection类似的错误
7.chroot_list_enable=YES # 哪些用户需要将其禁锢在其家目录
8.chroot_list_file=/etc/vsftpd/chroot_list # 这条依赖6与7,6是YES的话8中的文件用户不会禁锢,反之相反(需要手动创建 echo 'centos'>/etc/vsftpd/chroot_list)
9.xferlog_enable=YES # 激活上传与下载的日志,建议这9 10 11几条都关闭
10.xferlog_std_format=YES
11.xferlog_file=/var/log/xferlog
12.userlist_enable=YES # 是否启用列表(/etc/vsftpd/user_list)控制可登录的用户,如果这个指令为YES的话则由第13条指令控制这个列表的拒绝行为与
13.userlist_deny={YES|NO} # YES(默认)的话为拒绝/etc/vsftpd/user_list里的用户登录,NO为允许, 即可登录用户黑白名单的设置(需要显示输入用户名或密码)[[

虚拟用户登录vsftpd(更安全)

用户帐号可以存储在文件 MySQL Redis..中,这里我们用MySQL实现.

pam模块(/usr/lib64/security/)对各应用程序的支持

例如:pam.cracklib.so可以验证弱口令
应用程序调用pam哪些模块的文件 /etc/pam.d/*

实例演示(利用pam认证模块 MySQL 完成虚拟用户访问vsftpd服务)

1. yum -y install mariadb-server  #安装数据库
   systemctl start mariadb.service; ss -lnt; # 启动数据库服务并检查

2. yum -y groupinstall "Development Tools" "Server Platform Development" # 准备编译环境(因为CentOS7没有自pam-mysql的rpm包,需要自行编译CentOS6不存在这个问题)

3. wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz  #下载pam-mysql的源码包并编译
   tar -zxvf pam_mysql-0.7RC1.tar.gz # 查看INSTALL 与README文件
   yum -y install mariadb-devel pam-devel openssl-devel   # 安装部分支持包
  ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security  #configure
  make && make install

4. mysql     # 准备数据库内容
   >create datebase vsftpd;    # 创建名为vsftpd的数据库来保存虚拟用户
   >use vsftpd;
   >create table users (id int not null auto_increment primary key, name char(30) not null unique key, password char(48) );
   >desc users;  # 查看
   >insert into users (name,password) values ('james',PASSWORD('magedu'));
   >insert into users (name,password) values ('uangianlap',PASSWORD('magedu'));
   >select * from users; #检查是否生成数据
   >grant select(all) on vsftpd.*  to 'vsftpd'@'localhost' identified by 'magedu'; # 授权vsftpd用户对本机上的数据库vsftpd里的所有表具有select(或者all)权限
   >grant select(all) on vsftpd.*  to 'vsftpd'@'127.0.0.1' identified by 'magedu'; # 对于地址解析,保险起见
   >flush privileges;exit;

5. 修改vsftpd主配置文件里的指令为: pam_service_name=vsftpd.mysql # 不是非得叫这个名,但这个文件要存在于/etc/pam.d/中.
   vim /etc/pam.d/vsftpd.mysql    # pam-mysql README文件
   > auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=magedu host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 
   > account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=magedu host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 

6. 创建一个用以(所有)虚拟用户映射的用户
   useradd -r -d /ftproot -s /sbin/nologin vuser
   mkdir /ftproot/{pub,upload}     # 注意目录起码得是555的权限,要实现上传得755,不然虚拟用户会无法访问

7. 修改主配置文件(/etc/vsftpd/vsftpd.conf),添加以下指令
   guest_enable=YES    #guest来宾表示虚拟帐号
   guest_username=vuser    # 虚拟帐号都映射到上一步创建的vuser用户

8. systemctl restart vsftpd.service;ss -lnt; 重启vsftpd服务并检查,即可生效

9. 修改主配置文件(/etc/vsftpd/vsftpd.conf)上一步后即使vuser对于目录/ftproot/upload有w权限,虚拟用户访问依旧无法实现上传功能.添加:
   user_config_dir=/etc/vsftpd/users_conf
   mkdir /etc/vsftpd/users_conf  # 目录名可以任意,这个目录下存放的都是跟用户名同名的文件,当同名的用户访问vsftpd服务时,这个文件的设置便作用生效.
   cat > /etc/vsftpd/users_conf/james<<eof
   >anon_upload_enable=YES                     # 虚拟用户也可以使用匿名用户的指令
   >eof
   cat > /etc/vsftpd/users_conf/uangianlap<<eof
   >anon_upload_enable=NO
   >eof
   systemctl restart vsftpd.service;ss -lnt;  # 重启并测试james与uangianlap两个虚拟用户是否都有对vsftpd的上传权限.这时候就只有james可以上传了.

经过以上9步,即可搭建一个安全的满足自定义需求的vsftpd服务了.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • ftp 文件传输协议 跨平台 上传下载文件 vsftpd 工具:非常安全的文件传输协议;默认的命令端口21号,数据...
    柒夏锦阅读 3,994评论 1 9
  • 1 概述 工作中,需要搭建ftp服务器来实现资源的共享。本文将通过脚本实现自动化安装ftp服务器,并进行相关配置,...
    ghbsunny阅读 3,077评论 0 2
  • #################匿名权限控制############### anonymous_enable=Y...
    牧民阅读 4,409评论 2 4
  • vsftpd.conf 部分:文件格式(5)索引 返回主要内容 名称 vsftpd.conf - vsftpd的配...
    张龙象阅读 2,250评论 0 1
  • 图片更清晰,文字在最下面 FTP是TCP/IP的一种应用,使用TCP而不是UDP,所以是可靠的,面向连接的。 FT...
    停下浮躁的心阅读 1,684评论 0 4