ftp详细介绍

7.1、文件传输协议ftp简介
文件传输协议( file transfer protocol,FTP),基于该协议FTP客户端与服务端可以实
现共享文件、上传文件、下载文件。FTP基于TCP协议生成一个虚拟的连接,主要用于控
制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客
户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。
FTP服务是 client/ server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。
7.2、ftp传输原理
Ftp协议中控制连接均是由客户端发起,而数据连接有两种工作方式:Port和Pasv方式
FTP主动模式(Port模式):客户端从一个任意的端口N(N>1024)连接到FTP服务器的port21命令端口,客户端开始监听端口N+1,并发送FTP命令“ port N+1”到FTP务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)
如果linux防火墙开启最好用主动模式
FTP被动模式(Pasv模式):客户端从一个任意的端口N(N>1024)连接到FTP服务器的port21命令端口,客户端开始监听端口N+1,客户端提交PASV命令,服务器会开启一个任意的端口(P>1024),并发送 PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
在企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。
7.3、Vsftpd服务器简介
目前主流的FTP服务器端软件包括 Vsftpd、 ProFTPD、 PureFTPd、 Wuftpd、 Server
FTP、 FileZilla Server等,其中UNX/ Linux使用较为广泛的FTP服务器端软件为 Vsftpd,
非常安全的FTP服务进程( very secure FTP daemon, Vsftpd), Vsftpd是在UNIX/Linux发行版中最主流的FTP服务器程序,优点是小巧轻快、安全易用、稳定高效、满足企业跨部门,多用户的使用等。
Vsftpd基于GPL.开源协议发布,在中小企业中得到广泛的应用, Vsftpd可以快速上手,基于 Vsftpd虚拟用户方式,访问验证更加安全, Vsftpd还可以基于 MySQL数据库作安全验证,多重安全防护
7.4、Vsftpd服务器安装配置
vsftpd服务器端安装有两种方法:一是基于YUM方式安装;二是基于源码编译安装,最终实现效果完全一样,本文采用YUM安装 Vsftpd,具体步骤如下
1、在 shell 1命令行执行如下命令
yum-y install vsftpd* pam* db4*
vsftpd:ftp软件 pam:认证模块 DB4:支持文件数据库
2、Vsftpd安装后的配置文件路径、启动 Vsftpd服务及查看进程是否启动
rpm -ql vsftpd
systemctl restart vsftpd 或者service vsftpd restart
ps -ef |grep vsftpd 或者 service vsftpd status
3、Vsftpd.conf默认配置文件详解如下:
anonymous enable=YES:开启匿名用户访问。
local_enable=YES:启用本地系统用户访问。
write_enable=YES:本地系统用户写入权限。
local_umask=022:本地用户创建文件及目录默认权限掩码
dirmessage_enable=YES:打印目录显示信息,通常用于用户第一次访问目录时,信息提示
xferlog_enable=YES:启用上传/下载日志记录。
connect_ from_port_20= YES FTP:使用20端口进行数据传输。
xferlog_std_format=YES:日志文件将根据 ferlo的标准格式写入。
listen=NO: Vsftpd不以独立的服务启动,通过 Xinetd服务管理,建议改成YEs
listen_ipv6=YES:启用IPv6监听。
pam_service_name= vsftpd:登录FTP服务器,依据/etc/pam.d/ vsftpd中内容进行认证
userlist_enable=YES: vsftpd/user list和 ftpusers配置文件里用户禁止访问FTP
tcp_wrappers=YES:设置 Vsftpd与 tcp_wrapper结合进行主机的访问控制,Vsftpd服务器检查/etc/ hosts.allow和/etc/ hosts.deny中的设置来决定请求连接的主机是否允许访问该FTP服务器
local_root=/var/ftp/pub 设置访问的路径(访问者只能特定目录下的文件)

4、ftp服务器其它文件介绍
1、ftpusers文件
vi /etc/vsftpd/ftpusers
ftpusers文件位于“/etc/vsftpd”目录中,用于保存不允许进行ftp登陆的本地用户帐号,这些帐号(包括root用户在内)通常不是普通用户帐号,而是在系统中具有较高权限的帐号。禁止这些用户可以提高系统的安全性
2、user_list文件
vi /etc/vsftpd/user_list
user_list文件位于“/etc/vsftpd”目录中,具有与ftpusers文件类似的访问控制功能,但是使用起来更加灵活。
5、启动 Vsftpd服务后,通过 Windows客户端资源管理器访问 Vsftpd服务器端
ftp://192.168.0.130/ ip地址为服务器的ip地址

注:FTP主被动模式的选择,默认为主动模式,设置为被动模式的方法如下:
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100
7.5、Vsftpd服务程序
vsftpd作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到FTP服务器上。
匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。
本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。
虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。
在下面分别介绍如何配置这三种认证模式
7.6、Vsftpd匿名用户配置
Vsftpd默认以匿名用户访问,匿名用户默认访问的FTP服务器发布端路径为/var/ftp/pub,匿名用户只有查看权限,无法创建、删除、修改。
如需关闭FTP匿名用户访问,需修改配置文件/etc/ vsftpd/ vsftpd.conf,将 anonymous enable=YES修改为 anonymous_enable=NO,重启 Vsftpd服务即可。如果允许匿名用户能够上传、下载、删除文件,需在 etc/vsftpd.conf配置文件
中加入以下代码,详解如下:
anon_upload _ enable=YES:允许匿名用户上传文件
anon_mkdir_write_enable=YES:允许匿名用户创建目录。
anon_other_write_enable=YES:允许匿名用户其他写入权限
由于默认 Vsftpd匿名用户有两种: anonymous、ftp,所以匿名用户如果需要上传文件、删除及修改等权限,需要 Vsftpd用户对/var/ftp/pub目录有写入权限,使用 chown和chmod任意一种命令均可设置权限,具体设置命令如下:
chown -R ftp pub/
chmod -R 777 pub/
如上vsftpd.conf配置文件完毕,同时权限设置完毕,重启Vsftpd服务即可,通过Windows客户端访问,能够上传文件、删除文件、创建目录等操作
7.7、Vsftpd系统用户配置
Vsftpd匿名用户设置完毕,任何人都可以查看FTP服务器端的文件、目录,甚至可以修改、删除、文件和目录,如何存放私密文件在FTP服务器端,并保证文件或者目录专属于拥有者呢? Vsftpd系统用户可以实现该需求,解决上述问题。
实现 Vsftpd系统用户方式验证,只需在 Linux系统中创建多个用户即可,创建用户使用 useradd指令,同时给用户设置密码,即可通过用户和密码登录FTP,进行文件上传、下载、删除等操作。
Vsftpd系统用户实现方法步骤如下:
(1) Linux系统中创建系统用户 dedu,dedu1,分别设置密码为123456
useradd dedu
useradd dedu1
设置密码
Passwd dedu 123456
Passwd dedu1 123456
(2)修改 vsftpd.conf配置文件代码如下:
anonymous_enable= NO
local_enable= YES
write_enable= YES
local_umask=022
dirmessage_enable= YES
xferlog_enable= YES
Connect_from_port_20= YE
xferlog_std_format= YES
listen= YES
listen_ipv6= YES
pam_service_name= vsftpd
userlist_enable=YES
tcp_wrappers= YES
(3) 通过 Windows资源客户端验证,使用 dedu,dedu1用户登录FTP服务器,即可上传文件、删除文件、下载文件, dedu、dedu1系统用户上传文件的家目录在/home/ dedu、dedu1下
7.8、vsftpd虚拟用户配置
Vsftpd基于系统用户访问FTP服务器,系统用户越多越不利于管理,而且不利于系统安全,为了能更加安全使用 Vsftpd,可以使用 Vsftpd虚拟用户方式。
Vsftpd虚拟用户原理为虚拟用户没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录 Linux系统,从而让系统更加的安全可靠
Vsftpd虚拟用户企业案例配置步骤如下:
(1)安装 Vsftpd虚拟用户需要用到的软件及认证模块。
yum install pam* libdb-utils libdb* --skip-broken -y
(2)创建虚拟用户临时文件/etc/vsftpd/ ftpusers.txt,新建虚拟用户和密码,其edu001,edu002为虚拟用户名,123456为密码,如果有多个用户,依此格式填写
edu001
123456
edu002
123456
(3)生成 Vsftpd虚拟用户数据库认证文件,设置权限为700。
db_load -T -t hash -f /etc/vsftpd/ftpusers. txt /etc/vsftpd/vsftpd_login.db
chmod 700 /etc/vsftpd/vsftpd_login.db
(4)配置PAM认证文件,/etc/pam.d/ vsftpd行首加入如下两行代码:
auth required pam_userdb.so.db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
(5) Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建用户命令如下:
useradd -s /sbin/nologin ftpuser
(6)完整的vsftpd.conf配置文件代码如下:
anonymous_enable= YES
local_enable= YES
write_enable= YES
local_umask=022
dirmessage_enable= YES
xterlog_enable= YES
connect_from_port_20= YES
xferlog_std_format=YES
listen= No
listen_ipv6-=YES
userlist_enable=YES
tcp_wrappers= YES
pam_service_ name= vsftpd
guest_enable= YES
guest username= ftpuser
user_config_dir =/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
7、至此,所有虚拟用户共同使用/home/ ftpuser主目录实现文件上传与下载,可以在/etc/ vsftpd/ vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录,代码如下:
Mkdir -p /etc/vsftpd/vsftpd_user_conf/
(8)以下分别为虚拟用户edu001、edu002创建配置文件
Vim /etc/ vsftpd/vsftpd_user_conf/ edu001,同时创建私有的虚拟目录,代码如下:
local
root=/home/ftpuser/edu001
anon_world_readable_only= YES
anon_upload_enable=YES
anon_mkdir_write_enable= YES
anon_other_write_enable=YES
vim/etc/vsftpd/vsftpd_user_ conf/edu002,同时创建私有的虚拟目录,代码如下:
local_root=/home/ftpuser/edu002
write_enable=YES
anon_world_readable_only= YES
anon_mkdir_write_enable=YES
other_write_enable=YES
虚拟用户配置文件内容详解如下:
local_root=/home/ftpuser/edu002: edu002虚拟用户配置文件路径
write_enable=YES:允许登录用户有写权限
anon_world_readable_only=YES:允许匿名用户下载,然后读取文件。
anon_ upload_enable=YES:允许匿名用户上传文件权限,只有在 write_enable=YES
时该参数才生效。
anon_mkdir_write_enable=YES:允许匿名用户创建目录,只有在 write_enable=
YES时该参数才生效
anon_other_write_enable=YES:允许匿名用户其他权限,例如删除、重命名等。
9、创建虚拟用户各自虚拟目录,代码如下:
Mkdir -p /home/ftpuser/( edu001, edu002);
Chown -R ftpuser: ftpuser /home/ftpuser

猜你喜欢

转载自blog.csdn.net/xusongs/article/details/89310775