Vsftp与PAM虚拟用户

使用yum 安装vsftp

  1. yum install vsftpd pam pam-* db4 db4-*

设置开机启动

  1. chkconfig vsftpd on

创建一个保存用户及密码的文件

  1. cd /etc/vsftpd/
  2. touch vuser_passwd.txt

 

添加用户(奇行用户,偶行密码)

  1. vi vuser_passwd.txt
  1. tom
  2. DSfaoewLD3
  3. ken
  4. GetpOIIofd324DLJhg

将文本内的帐号及密码添加到db4的数据库文件内

  1. db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

将vsftpd原内容全部注释掉,并添加如下:

  1. sed -ir 's/^/#/g' /etc/pam.d/vsftpd
  2. echo -n '
  3. auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
  4.  
  5. account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
  6.  
  7. ' >> /etc/pam.d/vsftpd

  

创建一个vsftpd服务的用户vsftpd,你也可以使用-d来指定他的家目录

  1. useradd -g www -d /home/vsftpd -s /sbin/nologin vsftpd
  2. #useradd -d /var/ftp/tom -s /sbin/nologin tom

  

更改 vsftpd的配置文件

  1. cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
  2. awk '! /^(#|$)/' /etc/vsftpd/vsftpd.conf.bak

配置如下:

  1. #不允许匿名访问
  2. anonymous_enable=NO
  3. #设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问
  4. local_enable=YES
  5. #允许写操作
  6. write_enable=YES
  7. #创建或上传后文件的权限掩码
  8. local_umask=022
  9. #禁止匿名用户上传
  10. anon_upload_enable=NO
  11. #禁止匿名用户创建目录
  12. anon_mkdir_write_enable=NO
  13. #进入目录时可以显示一些设定的信息,可以通过message_file=.message来设置
  14. dirmessage_enable=YES
  15. #开启日志
  16. xferlog_enable=YES
  17. #主动连接的端口号
  18. connect_from_port_20=YES
  19. #设定禁止上传文件更改宿主
  20. chown_uploads=NO
  21. #日志路径,记得自己创建一下并且对这个文件进行chown vsftpd.vsftpd /var/log/vsftpd.log
  22. xferlog_file=/var/log/vsftpd.log
  23. #就是格式话日志格式的,你懂得。使用wu ftp软件时设置yes就行
  24. xferlog_std_format=YES
  25. #因为我们把vsftpd的shell设置为nobody 了,所以 这个地方写vsftpd就可以啦!当然或者可以写成系统内的nobody
  26. nopriv_user=vsftpd
  27. #设定支持异步传输功能
  28. async_abor_enable=YES
  29. #设定支持ASCII模式的上传
  30. ascii_upload_enable=YES
  31. #设定支持ASCII模式的上传
  32. ascii_download_enable=YES
  33. #登陆欢迎语
  34. ftpd_banner=Welcome to dongnan FTP service.
  35. #限定在自己的目录内,不让他出去,就比如如果设置成NO,那么当你登陆到ftp的时候,可以访问服务器的其他一些有权限目录。设置为YES后即,锁定你的目录了
  36. chroot_list_enable=YES
  37. #待会要把用户写到这个里面,写到这里的用户乖乖的呆在家目录下吧
  38. chroot_list_file=/etc/vsftpd/chroot_list
  39. #以standalone方式来启动
  40. listen=YES
  41. #/etc/pam.d/下的vsftpd文件
  42. pam_service_name=vsftpd
  43. #在/etc/vsftpd/user_list中的用户将不得使用FTP
  44. userlist_enable=YES
  45. #支援 TCP Wrappers 的防火墙机制
  46. tcp_wrappers=YES
  47. #启用虚拟用户功能
  48. guest_enable=YES
  49. guest_username=vsftpd
  50. #虚拟用户的权限符合他们的宿主用户
  51. virtual_use_local_privs=YES
  52. #虚拟用户个人vsftpd的配置文件存放路径。vsftpd_config是文件夹啊。注意:配置文件名必须和虚拟用户名相同
  53. user_config_dir=/etc/vsftpd/vuser_conf

设置被动模式

  1. allow_writeable_chroot=YES
  2. #connect_from_port_10021=YES
  3. pasv_min_port=8888
  4. pasv_max_port=8899

放开端口

 

  1. firewall-cmd --add-port=8888-8899/tcp --permanent
    firewall-cmd --reload

  

 

  

创建一下保存虚拟用户配置文件的目录

  1. mkdir /etc/vsftpd/vuser_conf/

创建vsftp日志文件

  1. touch /var/log/vsftpd.log
  2. chmod 600 /var/log/vsftpd.log
  3. chown vsftpd.vsftpd /var/log/vsftpd.log

创建要将哪些用户固定在家目录的配置文件

  1. touch /etc/vsftpd/chroot_list
  2. echo vsftpd > /etc/vsftpd/chroot_list

  

将需要固定用户目录的用户名字写进去即可。

  1. cd /etc/vsftpd/vuser_conf/
  2. cat > tom << EOF #起用虚拟用户,centos下yes必须为小写字母
  3.  
  4. local_root=/home/ftp/tom
  5. write_enable=YES
  6. anon_umask=022
  7. anon_world_readable_only=NO
  8. anon_upload_enable=YES
  9. anon_mkdir_write_enable=YES
  10. anon_other_write_enable=YES

注:行末不能有空格  

启动vsftp

  1. /etc/init.d/vsftpd start

放开selinux限制  

  1. setsebool -P ftp_home_dir=1 //设置ftp可以使用home目录
  2. setsebool -P allow_ftpd_full_access=1 //设置ftp用户可以有所有权限

防火墙

  1. firewall-cmd --add-port=21/tcp --permanent
  2. firewall-cmd --reload

  

  

Starting vsftpd for vsftpd: 500 OOPS: bad bool value in config file for: anon_upload_enable
注意: 这里出现了 500 OOPS 之类的错误,请使用以下命令去除"多余的空格",再次启动vsftp 即可。

  1. sed -ir 's/[ ]*$//g' /etc/vsftpd/vsftpd.conf
  2. sed -ir 's/[ ]*$//g' /etc/vsftpd/vuser_conf/tom

基于SSL加密

(可以应用于任何用户验证。可以利用本博的博文抓包验证)

  1. mkdir /etc/vsftpd/.sslkey //建立存放证书的目录
  2. cd /etc/vsftpd/.sslkey //进入该目录以备建立证书
  3. openssl req new -x509 -nodes -days 900 -out vsftpd.pem -keyout vsftpd.pem //生成证书,Common Name必须是客户端访问FTP服务器时的FQDN.默认过期时间为30天,这里设为900天
  4. chmod -R 400 /etc/vsftpd/.sslkey //保证证书安全,修改证书目录的权限。

filezilla client连接时“加密”选择“要求显式的FTP over TLS”

在/etc/vsftpd/vsftpd.conf配置文件中添加:

  1. ssl_enable=YES
  2. ssl_sslv2=YES
  3. ssl_sslv3=YES
  4. ssl_tlsv1=YES
  5. force_local_logins_ssl=YES
  6. force_local_data_ssl=YES
  7. rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem

  

  1.   

#service  vsftpd  restart

参考
Vsftp服务安装搭建,虚拟用户配置
http://kinggoo.com/app-installvsftpdconf.htm

第二十一章、檔案伺服器之三: FTP 伺服器

/sbin/nologin和/bin/false的区别 
/bin/false是最严格的禁止login选项,一切服务都不能用,而/sbin/nologin只是不允许系统login,可以使用其他ftp等服务。

参考:http://jingyan.baidu.com/article/d169e186469f44436611d8ec.html

centos7下安装vsftpd与PAM虚拟用户的更多相关文章

  1. CentOS6.3下搭建vsftpd(采用虚拟用户设置)

    CentOS6.3如果在安装的时候所有安装选项都打勾的话就含有单间vsftpd必备的软件:vsftpd.pam*.db4* 检查是否安装: [root@centos6 ~]# rpm -qa | gr ...

  2. Centos下安装FTP并进行虚拟用户访问方式配置

    1. 安装认证所需包 [root@localhost]#yum install pam* [root@localhost]#yum install db4* 首先安装PAM(用于用户认证)和DB4(用 ...

  3. centos7下安装vsftpd

    安装步骤: 创建ftp目录 cd / mkdir ftpfile 创建指定登陆用户并不让他拥有登陆系统的权限(设置指定登陆shell) useradd ftpuser -d /ftpfile/ -s ...

  4. centos7下安装vsftpd配置

    0. 首先安装ftp服务 yum install -y ftp 1. 通过yum install -y vsftp安装vsftp 2.    修改vi /etc/vsftpd/vsftpd.conf, ...

  5. CentOS 6.4 下安装vsftpd

    概述: vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器当然首选这个. 本文介绍了在CentOS 6.4下安装vsftpd.配置虚拟用户登录FTP的过程. 正文: 一:安装vsftp ...

  6. CentOS下安装vsftpd

    因为FTP的端口是 两个,一个是固定21端口,还有一个任意端口的数据通道.关键是任意端口不好搞. 首先在vsftpd的配置文件中设置 任意端口的范围 [root@localhost root]# vi ...

  7. ubuntu 12.04 配置vsftpd 服务,添加虚拟用户,ssl加密

    1.对于12.04的vsftpd 有一些bug,推荐安装版本vsftpd_2.3.5-1ubuntu2ppa1_amd64.debapt-get install python-software-pro ...

  8. docker(一) Centos7下安装docker

    docker(一) Centos7下安装dockerdocker(二) windows10下安装dockerdocker(三) 镜像和容器常用命令 docker(四) 使用Dockerfile构建镜像 ...

  9. CentOS7 下安装 iSCSI Target(tgt) ,使用 Ceph rbd

    目录 一.iSCSI 介绍 1. iSCSI 定义 2. 几种常见的 iSCSI Target 3. 优缺点比较 二.安装步骤 1. 关闭防火墙 2. 关闭selinux 3. 通过 yum 安装 t ...

随机推荐

  1. Windows Store App 旋转中心

    旋转中心的位置可以通过设置CenterOfRotationX.CenterOfRotationY和CenterOfRotationZ属性来指定.CenterOfRotationX和CenterOfRo ...

  2. 使用urllib编写python爬虫

    新版python中,urllib和urllib2合并了,统一为urllib (1)简单爬取网页 import urllib content = urllib.request.urlopen(req). ...

  3. Windows下搭建Git开发环境

    Windows下搭建Git开发环境主要有以下三种方法: 1,VS,vs2013和vs2015中已经集成了git插件了 2,msysGit+TortoiseGit 3,msysGit+SourceTre ...

  4. 获取LocationProvider

    Android的定位信息由LocationProvider对象来提供,该对象代表一个抽象的定位组件.在开始编程之前,需要先获得LocationProvider对象. 一.获取所有可用的Location ...

  5. HTTP 错误 500.23 - Internal Server Error 解决方法

    分析原因:在安装完成后IIS已经支持ASP和ASP.NET 2.0,需要注意的是.NET站点的应用程序池应选用Classic .NET AppPool,而不能用默认的DefaultAppPool,否则 ...

  6. POJ 1094 Sorting It All Out 拓扑排序 难度:0

    http://poj.org/problem?id=1094 #include <cstdio> #include <cstring> #include <vector& ...

  7. win7 下设置时间格式为yyyy-MM-dd 格式无效的解决方法

    部分win7 64位机器,在时间区域部分设置了时间格式为:yyyy-MM-dd后程序和数据库里面还是原来默认的yyyy/MM/dd格式 打开注册表,搜索 yyyy/MM/dd ,修改为yyyy-MM- ...

  8. SqlServer性能优化 手工性能收集动态管理视图(三)

    动态管理视图: 具体的实例语句:  --关于语句执行的基本情况 select * from sys.dm_exec_query_stats --动态管理函数  需要提供参数  select top 1 ...

  9. 从零开始学习Node.js例子六 EventEmitter发送和接收事件

    pulser.js /* EventEmitter发送和接收事件 HTTPServer和HTTPClient类,它们都继承自EventEmitter EventEmitter被定义在Node的事件(e ...

  10. Win10/UWP新特性系列—电池报告

    UWP中,新增了当节电模式开启时,App能获取到通知的API,通过响应电源条件的更改,比如咨询用户是否使用黑色背景等来帮助延长电池使用时间. 通过Windows.Devices.Power命名空间中的 ...