192.168.1.1-路由器设置 | 192.168.0.1-无线路由器设置

FTP协议和vsftpd服务器的搭建命令

发布时间:2015-04-07 09:28

什么是vsftpd?

      vsftpd是一个类UNIX操作系统上的一个FTP服务器,包括linux。vsftpd全称是very secure FTP daemon(非常安全的FTP进程),顾名思义,安全是它的一大特性。

        比如说vsftpd是在chroot模式下工作的,通俗chroot模式就是把它禁锢在一个目录中,禁止它访问别的目录。如果你不是用chroot模式,使用系统用户账号登陆FTP时,那么便有了这个用户的所有权力,这样岂不是很不安全?


理解FTP协议

        在配置vsftp之前,先说一下什么是FTP,FTP(File Transfer Protocol)是文件传输协议的简称。工作于应用层,用于上传或下载文件,能够将一个主机的文件共享给其他主机。

        FTP有两种连接方式,命令连接和数据连接。命令连接也叫控制连接,是一直在线,21/tcp,和服务器进行沟通。数据连接是按需打开,按需关闭的,请求下载文件时打开,传输完毕后关闭。

        FTP有两种模式,主动FTP和被动FTP。

 

        主动FTP有两次TCP三次握手,最终在20号端口建立书籍连接。一次是客户端发起,另一次由服务器端发起。首先客户端以大于1024的源端口向FTP的服务器端21号目标端口发起连接请求。另一次是FTP服务器端主动发起到客户端的连接,使用20号源端口,主动向客户端的1025号端口发起连接请求。但是防火墙可能会阻止,因此有了被动FTP。

        被动FTP服务器端只是用21号端口,也有两次TCP的三次握手,只不过三次握手都是由客户端发起的。第一次客户端以1024为源端口向FTP服务器的21号端口发起连接请求,FTP服务器告诉客户端使用1024--5000的端口进行数据传输,这个消息帧属于第一次三次握手的一部分。而后第二次三次握手开始,客户端使用1025号源端口主动连接服务器端的发来的端口号。这样都是客户端发起的连接请求,防火墙便不会阻止。


FTP用户

             FTP有三类用户,无论那种用户都要映射为一个系统用户。

    匿名用户:anonymous用户

    系统用户:passwd中记录的用户

    虚拟用户:建立一个系统账号,将所有账号映射到此用户访问,使用的不是系统用户账号,提高安全性


简单配置vsftpd

    rpm包安装

        # yum install vsftpd

        # service vsftpd on

        # chkconfig vsftpd on


    vsftp配置文件调整及说明

        annoymous_enable=YES                         允许匿名用户登录

        local_enable=YES                    是否开启系统用户

        write_enable=YES                  是否允许系统用户上传文件

        anon_upload_enable=NO                          匿名用户不可上传文件

        local_umask=022                                       上传文件的权限设定

        anon_mkdir_write_enable=NO                   匿名用户不能创建目录

        anon_other_write_enable=NO                   匿名用户不能删除文件

        dirmessage_enable=YES                          显示用户欢迎信息,比如在/var/ftp/.message文件中写一句‘Welcome',则用户进入/var/ftp目录时,会显示此信息。

                                                                            

        xferlog_enable=YES                 开启日志传输

        xferlog_file=/var/log/vsftpd.log            定义日志传输文件,若不存在,请事先创建

        #chown_upload                               上传文件后将属主改为其他用户

        #chown_username                   改为哪个用户,不建议root用户

        connect_from_port_20=YES              20号端口进行数据连接

        idle_session_timeout =600                        控制连接超时时间

        data_connection_timeout =120                  单次数据连接时间

        #ascii_upload_enable=YES

        #ascii_download_enable=YES                   以纯文本格式实现上传下载,有两种数据传输模式,文本和二进制,建议不要打开此项。

 

        chroot_local_user=YES                        每一个用户都禁锢在家母录中

        #chroot_list_file_enable=YES       用一个文件将用户锁在家目录下

        #chroot_list_file=/etc/vsftpd/chroot_list       哪一个文件中创建一个用户列表,所有在此列表中的用户都禁锢在家目录当中。

        listen=YES           vsftpd是否工作为一个独立的守护进程

        pam_service_name=vsftpd                         所有写在ftpuser都禁止登录ftp服务器

        userlist_enable=YES                                   拒绝user_list中用户登录

        userlist_deny=YES                      拒绝user_list中用户登录,若改为NO则仅允许user_list中用户登录

        #max_clients                    最大登录FTP服务器客户端的个数

        #max_per_ip                每一个单独IP允许发起几个连接请求


基于mysql的虚拟用户

# yum -y install mysql-server mysql-devel

# service mysqld start

# chkconfig mysqld on


# tar xf pam_mysql-0.7RC1.tar.gz

# cd pam_mysql-0.7RC1

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

# make

# make install

mysql> CREATE DATABASE vsftpd

mysql>US E 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));

mysql> GRANT SELECT ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY 'vsftpd';

mysql> GRANT SELECT ON vsftpd.* TO vsftpd@127.0.0.1 IDENTIFIED BY 'vsftpd';

mysql> FLUSH PRIVILEGES; www.luyouqiwang.com

mysql> INSERT INTO users (name,password) VALUES ('tom','xiaoming'),('cat','xiaoming');


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

auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0


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

# chmod go+rx /var/ftproot


# vim /etc/vsftpd/vsftpd.conf

    guest_enable=YES

    guest_username=vuser

    pam_service_name=vsftpd.mysql

# service vsfptd restart

即可。

关于我们 - RSS地图 - 最近更新 - 友情链接 - 网站地图 - 版权声明