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. 第十二章 非对称加密算法-RSA

    注意:本节内容主要参考自<Java加密与解密的艺术(第2版)>第8章“高等加密算法--非对称加密算法” 12.1.RSA(最经典的非对称加密算法) 特点: 使用一套密钥即可完成加解密(与D ...

  2. z-index、display、selector选择器优先级css优先级面试用到

    z-index:控制元素叠放顺序,哪个z-index数值越大,那个优先被叠放在上面. relative.absolute.fixed这三种情况可以使用z-index. static不可以使用. dis ...

  3. HDU 4940 Destroy Transportation system(2014 Multi-University Training Contest 7)

    思路:无源汇有上下界可行流判定, 原来每条边转化成  下界为D  上界为 D+B   ,判断是否存在可行流即可. 为什么呢?  如果存在可行流  那么说明对于任意的 S 集合流出的肯定等于 流入的, ...

  4. UI的一些方法(按钮和线)

    //设置按钮字体颜色 [self.determineBtn setTitleColor:[UIColor colorWithHexString:@"0xff9500"] forSt ...

  5. 2014年3月份第4周51Aspx源码发布详情

    足购库存管理系统源码  2014-3-24 [VS2010]功能介绍:这是为一个卖鞋子的朋友设计的,本来要用SQL数据库的,可是他说他不想安装,怕拖电脑速度,没办法,用了Access,在数据同步上和S ...

  6. hdu 2084

    ps:这道题...是DP题..所以我去看了百度一些东西,才知道了什么是状态方程,状态转移方程.. 做的第一个DP题,然后TLE一次.贴上TLE的代码: #include "stdio.h&q ...

  7. IOS网络开发(一)

    1 简易的聊天工具 1.1 问题 Socket的英文原义是孔或者插座的意思,通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄,本案例使用第三方Socket编程框架AsyncSocket框架 ...

  8. Valgrind的多线程调试工具

    Valgrind的多线程调试工具  Helgrind是Valgrind的一个重点功能 本节主要针对与多线程基本安全问题进行检测:[所有的代码环境都是在POSIX_THREAD模式下] 写线程代码时 经 ...

  9. ${param.origin}

    拦截器中设置未登录拦击跳转链接 response.sendRedirect(request.getContextPath() + "/loginAndRegister/loginAndReg ...

  10. 腾讯优测| 让Android屏幕适配开发更简单-Google百分比布

    文/腾讯优测工程师 吴宇焕 腾讯优测优社区干货精选~ 相信开发同学都被安卓设备碎片化的问题折磨过,市面上安卓手机的主流屏幕尺寸种类繁多,给适配造成很大的困难.就算搞定了屏幕尺寸问题,各种分辨率又让人眼 ...