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

[经验分享] FTP服务器管理和配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-9-21 09:23:12 | 显示全部楼层 |阅读模式


FTP服务的简介

  FTP是Internet上使用非常广泛的一种通信协议,用于在不同的主机之间进行文件传输。Linux系统下常用的FTP服务器软件包括有wu-ftpd;vsftpd(Very Secure ftp Daemon);proftpd;pureftpd等

   客户端软件有:

     CLI:ftp;lftp;(wget ,lftpget)下载工具,非交互式

     GUI: gftpd ;FlashFXP;Cuteftp;Filezilla

FTP采用C/S的工作模式,通过TCP协议建立客户端和服务器之间的连接。但与其他大多数的应用协议不同,FTP协议在客户端和服务器之间建立了两套通信链路,分别是控制链路和数据链路;


FTP客户端与服务器之间的通信过程

      1、用户使用FTP协议的客户机程序,连接到远程的FTP服务器程序上

     2、用户使用客户端程序进行FTP文件的上传或下载,FTP客户端程序通过控制链路向FTP发送相应的控制命令

    3、服务器程序接收并执行用户所发出的命令

    4、FTP服务器将执行结果返回到客户端


  FTP通过两组套接字通信:控制莲姐套接字 21/TCP,数据连接套接字 20/TCP。但是传输数据又可以分为主动模式与被动模式,其数据传输端口有所不同。

  主动模式工作的原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送PORT命令到FTP服务器 ,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图:

QQ截图20170921092241.jpg

被动模式工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上 ),然后把开放的端口告诉客户端,客户端再连接到服务器开放的端口进行数据传输,原理如下图:

QQ截图20170921092250.jpg

VSFTP服务器的安装和配置

  vsftpd可以通过rpm包或者源码安装,通过rpm安装只需使用yum命令即可。

文件的组成:

/etc/vsftpd: 配置文件目录

/etc/rc.d/init.d/vsftpd: 服务脚本

/usr/sbin/vsftpd: 主程序

/var/ftp:数据文件目录(匿名用户访问目录)

/etc/pam.d/vsftpd: 认证文件 pam(Plugable Authentication Module)插件式认证模块

  模块化库文件:/lib64/security/pam*.so

  认证配置文件:/etc/pam.conf和/etc/pam.d/*

基本配置:/etc/vsftpd/vsftpd.conf

   

启动和关闭vsftpd

  vsftpd支持两种启动方式:xinetd和standalone。其中,xinetd是通过xinetd进程来启动和关闭vsftpd服务,这是vsftpd默认启动方式。standalone方式则是采用独立进程启动和关闭,与普通程序的启动方式一样。

xinetd方式:

  采用这种方式时,vsftpd不能单独管理,当vsftpd需要重启时,也必须重启整个xinetd服务器。不推荐这种方式

standalone方式:

    # service vsftpd star

    # service vsftpd stop

    # service vsftpd restart

  或者使用: # chkconfig vsftpd on 使得ftp服务自启动

  

vsftpd.conf配置文件

    vsftpd服务器的配置主要通过其主配置文件/etc/vsftpd.conf来完成。该文件以'#'作为注释,每个选项一行,格式为'选项=值'。

常用选项:

匿名用户的配置:

  anonymous_enable=YES登陆权限

  anon_upload_enable=YES上传权限

  anon_other_write_enable=YES删除权限

  anon_mkdir_write_enable=YES创建目录

  启用写入功能时,ftp用户对相应的本地文件系统也有相应的写入权限;生效的权限取决于文件系统权限和服务权限的交集。

禁锢用户于其家目录中:

  chroot_local_user={Yes|No}

  chroot_list_enable={YES|NO}                只禁锢列表中的用户在家目录

  chroot_list_file=/etc/vsftpd/chroot_list   禁锢用户列表

欢迎信息的定义:

  ftp_banner=some string

    或者banner_file=/path/to/some_banner_file(文件中写欢迎信息)

  dirmessage_enable=yes(切换目录时,目录下的欢迎信息)

    在ftp可访问的目录下创建.messages文件

控制登录用户的机制:

  /etc/vsftpd/ftpusers中的用户都不允许使用ftp服务, 这是在/etc/pam.d/vsftpd中定义。

user_list配置文件有两种用法:

  黑名单:

    userlist_enable=YES

    userlist_deny=YES

  白名单:

    userlist_enable=YES

    userlist_deny=NO

连接限制:

  max_clients: 最大并发连接数

  max_per_ip: 每IP可同时发起并发请求

传输速率:

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

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

上传文件的umask:

  anno_umask: 匿名用户上传文件的umask;

  local_umask: 本地用户上传文件的umask;

修改匿名用户上传文件的属主和属组:

  chown_uploads=YES

  chown_username=someuser

ftp用户:

   匿名用户: anonymous_enable

   系统用户:local_enable

   虚拟用户:所有的虚拟用户会映射会一个系统用户,访问时的文件目录是为此系统用户的家目录。

用户的存放位置:

  

虚拟用户账户在 : 文件,MySQL,Oracle,Redis,LDAP...

    以文件存放虚拟用户的配置步骤:

        1.创建用于保存虚拟用户文件,其中奇数行为用户名,偶数行为密码;

            # touch VUSER_FILE

            tom

            123456

            jerry

            123123

        2.将保存虚拟用户账户的文本文件转换为数据库文件:

            db_load -T -t hash -f /PATH/TO/VUSER_FILE /PATH/TO/USERDB.db

        3.设定PAM的认证文件

            /etc/pam.d/vusers.file

            auth required /lib64/security/pam_userdb.so db=/PATH/TO/USERDB

            account required /lib64/security/pam_userdb.so db=/PATH/TO/USERDB


        4.创建一个用于映射虚拟用户身份的本地用户

            useradd LOCAL_USER

        5.修改此虚拟主机的配置文件:

            anonymous_enable=NO

            guest_enable=YES

            guest_username=LOCAL_USER

            pam_service_name=vusers.file

            local_root=/myftp/ftpdata

            anon_upload_enable=YES

            anon_mkdir_write_enable=YES

            anon_other_write_enable=YES



    如果想要对于所有的虚拟用户分别设定权限,可以使用:

        在虚拟主机的主配置文件中添加指令:

            user_config_dir=/PATH/TO/CONFIG_DIR


        创建出这个目录,并且在目录下创建出与虚拟用户名相同的文件;

        anon_upload_enable=YES

        anon_mkdir_write_enable=YES

        anon_other_write_enable=YES

        local_root=/myftp/ftpdata/alice

        anon_umask=022


基于MySQL存放虚拟用户

'centos',PASSWORD('qhdlink')

'suse',PASSWORD('link19')


    1.编译安装pam的mysql驱动

        下载地址:http://pam-mysql.sourceforge.net/


        需要预先安装编译环境,即: Development Tools,Server Platform Development, pam-devel, mysql_devel

        # tar xf pam_mysql-0.7RC1.tar.gz

        # cd pam_mysql-0.7RC1

        # ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/lib64/secutiry

        # make -j 4 && make install


    2.创建数据库,数据表,及授权用户;

        mysql> create database vsftpd;

        mysql> use vsftpd;

        mysql> create table users (username char(20),password char(48));

        mysql> insert into users values ('centos',PASSWORD('qhdlink')),('gentoo',PASSWORD('qhdlink'))

        mysql> grant all on vsftpd.* to 'vsftpd'@'localhost' identified by 'vsftppass';

        mysql> grant all on vsftpd.* to 'vsftpd'@'127.0.0.1' identified by 'vsftppass';

        mysql> grant all on vsftpd.* to 'vsftpd'@'172.16.%.%' identified by 'vsftppass';


    3.创建pam的认证文件:

        /etc/pam.d/vusers.mysql


        auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftppass host=127.0.0.1 db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2

        account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftppass host=127.0.0.1 db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2


    4.创建映射用户:

        useradd mysqluser


    5.修改此虚拟主机的配置文件:

        anonymous_enable=NO

        guest_enable=YES

        guest_username=LOCAL_USER

        pam_service_name=vusers.mysql

        user_config_dir=/PATH/TO/MYSQL_USER_CONFIG





运维网声明 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-404816-1-1.html 上篇帖子: 云服务器4折最后三天 下篇帖子: FTP实时更新上传脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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