zoukankan      html  css  js  c++  java
  • centos7下安装vsftpd与PAM虚拟用户

    Vsftp与PAM虚拟用户



    使用yum 安装vsftp

    yum install vsftpd pam pam-* db4 db4-* 
    

    设置开机启动

    chkconfig vsftpd on
    

     

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

    cd /etc/vsftpd/ 
    touch  vuser_passwd.txt
    

     


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

    vi  vuser_passwd.txt 
    
    tom
    DSfaoewLD3
    ken
    GetpOIIofd324DLJhg
    

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

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

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

    sed -ir 's/^/#/g' /etc/pam.d/vsftpd 
    echo -n ' 
    auth    required   /lib64/security/pam_userdb.so   db=/etc/vsftpd/vuser_passwd 
    
    account required   /lib64/security/pam_userdb.so   db=/etc/vsftpd/vuser_passwd
    
    ' >> /etc/pam.d/vsftpd 
    

      


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

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

      


    更改 vsftpd的配置文件

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

    配置如下:  

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

    设置被动模式

    allow_writeable_chroot=YES
    #connect_from_port_10021=YES
    pasv_min_port=8888
    pasv_max_port=8899
    

    放开端口

     

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

      

     

      


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

    mkdir /etc/vsftpd/vuser_conf/ 
    

    创建vsftp日志文件

    touch /var/log/vsftpd.log 
    chmod 600 /var/log/vsftpd.log 
    chown vsftpd.vsftpd /var/log/vsftpd.log 
    

     


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

    touch /etc/vsftpd/chroot_list
    echo vsftpd > /etc/vsftpd/chroot_list
    

      

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

    cd /etc/vsftpd/vuser_conf/ 
    cat > tom << EOF #起用虚拟用户,centos下yes必须为小写字母 
    
    local_root=/home/ftp/tom
    write_enable=YES
    anon_umask=022
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    

    注:行末不能有空格  


    启动vsftp

    /etc/init.d/vsftpd start
    

    放开selinux限制  

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

    防火墙

    firewall-cmd --add-port=21/tcp --permanent
    firewall-cmd --reload
    

      

      

     

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

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

    基于SSL加密

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

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

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


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

    ssl_enable=YES
    ssl_sslv2=YES
    ssl_sslv3=YES
    ssl_tlsv1=YES
    force_local_logins_ssl=YES   
    force_local_data_ssl=YES
    rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem
    

      

      


    #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

  • 相关阅读:
    linux文件系统初探--Day2(3)
    linux文件系统初探--Day2(2)
    linux文件系统初探--Day2(1)
    linux文件系统初探--Day1
    LKD-虚拟文件系统
    linux-nova 安装
    per-file DAX 工作日志(2)
    linux 内核设计与实现——进程管理
    关于用户与服务端密码的校验问题 !mysql php
    [Err] 1055
  • 原文地址:https://www.cnblogs.com/jenqz/p/5195306.html
Copyright © 2011-2022 走看看