ftp服务

一.ftp服务

  ftp是文件传输协议,还有nfs(网络文件系统),samba(cifs/smb),是基于tcp协议的,工作于应用层

  ftp有两种连接方式

    1.命令连接(控制连接 监听在tcp21号端口)  

    2.数据连接

        主动模式:服务器用20端口连接客户端

        被动模式:端口随机

    3.数据传输模式:

        二进制模式

        文本模式

    4.服务器端程序

       wu-ftpd

       vsftpd :(very secure ftp daemon)

       proftpd

       filezilla

    5.客户端程序

       cli:

          ftp

          lftp

       gui:

         flashfxp

         filezilla

二.服务器端程序 vsftpd

     1.rpm包格式

        /etc/vsftpd 配置文件

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

        /usr/sbin/vsftpd  主程序(二进制文件)

     2.支持虚拟用户(系统用户 不能登录系统)基于PAM实现用户认证(可插入认证模块),需要关闭selinux

       /etc/pam.d/*

       /lib/security/*

     3.根目录

       /var/ftp/  (不能有写权限)不能运行进程的用户具有写权限

     4.安装vsftpd

       yum -y install vsftpd

     5.ftp用户

       a.匿名用户  会自动映射为系统用户

       b.系统用户

       c.虚拟用户  会主动映射为系统用户

     6.用anonymous(匿名用户) 登录时不用输入密码

     7.ftp传输的数据是明文的

     8.抓包

       tcpdump -i eth0 -nn -X -vv tcp port 21 and ip host ip地址

     9.将用户锁定在自己的家目录(默认是可以到处访问的)

      chroot_list_enable=YES /etc/vsftpd文件  作用为是否启用锁定用户目录

      chroot_list_file=文件路径 需要手动创建  在文件里添加用户名即可

      chroot_local_user=YES 禁锢所有用户

     10.查看进程是哪个用户运行的

       ps aux | grep vsftpd

     11.日志文件

       /var/log/xferlog  //文件名可以在/etc/vsftpd 文件里修改

     12./etc/vsftpd/ftpusers 文件里的所有用户都不能登录ftp服务器 (每一行一个用户)

     13./etc/vsftpd  配置项

       max_clients=数值  //最大的客户端连接次数

       max_per_ip=数值   //同一个ip的最大连接次数

     14.在/etc/vsftpd 里添加ssl or tls

       ssl_enable=YES

       ssl_sslv3=YES

       ssl_tlsv1=YES

       allow_anon_ssl=NO

       force_local_data_ssl=YES

       force_local_logins_ssl=YES

       rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt

       rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key

     15.在MySQL数据库里验证用户(虚拟用户)      

       一、安装所需要程序

         1、事先安装好开发环境和mysql数据库;

          # yum -y install mysql-server mysql-devel

          # yum -y groupinstall "Development Tools" "Development Libraries"

          2.安装pam_mysql-0.7RC1

             # tar zxvf  pam_mysql-0.7RC1.tar.gz

             # cd  pam_mysql-0.7RC1

             # ./configure --with-mysql=/usr --with-openssl

             # make

             # make install

          3.安装vsftpd

             # yum -y install vsftpd

       二、创建虚拟用户账号

          1.准备数据库及相关表

             首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。

          mysql> create database vsftpd; 

        //建立授权用户 只有查询权限

          mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'www.luochen.com';

          mysql> grant select on vsftpd.* to [email protected] identified by 'www.luochen.com';

          mysql> flush privileges;

          mysql> use vsftpd;

          mysql> create table users (

               -> id int AUTO_INCREMENT NOT NULL,

               -> name char(20) binary NOT NULL,

               -> password char(48) binary NOT NULL,

               -> primary key(id)

               -> );

          2、添加测试的虚拟用户

            根据需要添加所需要的用户,需要说明的是,这里将其密码采用明文格式存储,原因是pam_mysql的password()函数与MySQL的password()函数可能会有所不同。

            mysql> insert into users(name,password) values('tom','magedu');

            mysql> insert into users(name,password) values('jerry','magedu');

        三、配置vsftpd

          1.建立pam认证所需文件

           #vi /etc/pam.d/vsftpd.mysql

           添加如下两行

auth required /lib/security/pam_mysql.so user=vsftpd passwd=www.luochen.comhost=localhost 

db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

account required /lib/security/pam_mysql.so user=vsftpd passwd=www.luocehn.com host=localhost 

db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

          2.修改vsftpd的配置文件,使其适应mysql认证

            建立虚拟用户映射的系统用户及对应的目录

            #useradd -s /sbin/nologin -d /var/ftproot vuser

            #chmod go+rx /var/ftproot

           请确保/etc/vsftpd.conf中已经启用了以下选项

              anonymous_enable=YES

              local_enable=YES

              write_enable=YES

              anon_upload_enable=NO

              anon_mkdir_write_enable=NO

              chroot_local_user=YES

            而后添加以下选项

              guest_enable=YES

              guest_username=vuser

            并确保pam_service_name选项的值如下所示

              pam_service_name=vsftpd.mysql

        四、启动vsftpd服务

           # service vsftpd start

           # chkconfig vsftpd on

          查看端口开启情况

           # netstat -tnlp |grep :21

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      23286/vsftpd 

使用虚拟用户登录,验正配置结果,以下为本机的命令方式测试,你也可以在其它Win Box上用IE或者FTP客户端

          工具登录验正

            # ftp localhost

        五、配置虚拟用户具有不同的访问权限

           vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

           1、配置vsftpd为虚拟用户使用配置文件目录

             # vim vsftpd.conf

            添加如下选项

             user_config_dir=/etc/vsftpd/vusers_dir 

           2、创建所需要目录,并为虚拟用户提供配置文件

             # mkdir /etc/vsftpd/vusers_dir/

             # cd /etc/vsftpd/vusers_dir/

             # touch tom jerry

           3、配置虚拟用户的访问权限

             虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。

            anon_upload_enable=YES


     

       

     

     

   

       

    

      

   

你可能感兴趣的:(ftp服务)