FTP(file transfer protocol)是文件传输协议的缩写。利用ftp服务可以实现文件的上传及下载等相关的文件传
输服务。
ftp服务就是文件传输服务,即文件传输协议,具备更强的文件传输可靠性和更高的效率。文件传输协议(file
transfer protocol,ftp),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。用户可以通
过客户端向FTP服务端上传、下载、删除文件,ftp服务器端可以同时提供给多人共享使用。
ftp最主要的功能是在服务器端和客户端之间进行文件的传输。
ftp是以TCP封包的模式来进行服务器与客户端之间的连接,当连接建立后,用户便可以在客户端连接ftp服务
器来进行文件的上传和下载,同时也可以直接管理用户在tfp服务器上的文件。
ftp是基于客户端/服务器模式,工作原理如下:
要使用ftp服务来实现文件的传输,首先需要登录到服务器,然后再进行文件的传输。但是对于很多公开提供软件下载的服务器来说非常不方便。为了解决该问题,匿名用户访问随之产生。
匿名用户是通过使用一个公用用户名anonymous,密码不限的策略管理,让任何用户都可以方便地从这些服务器上下载相关资源。
ftp的两种工作模式:
在主动传输模式下,ftp客户端随机开启一个大于1024的端口N(如1031)向服务器的21端口发起连接,然后开放N+1端口(1032)进行监听,并向服务器发出port 1032命令。服务器接收到命令后,会用其本地的ftp数据端口(通常是20)来连接客户端指定的端口1032并进行数据传输。
在被动传输模式下,ftp客户端随机开启一个大于1024端口(如1031)向服务器的21端口发起连接,同时会开启N+1号端口(1032),然后向服务器发送pasv命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口(如1521)进行监听,然后用port p命令通知客户端,自己的数据端口是1521.客户端收到命令后,会通过1032号端口链接服务器的1521端口,然后在这两个端口之间进行数据传输。
总之,主动传输模式的ftp是指服务器主动连接客户端的数据接口,被动传输模式的ftp是指服务器被动地等待客户端连接自己的数据端口。
vsftp(very secure FTP),该ftp的目的是构建一个安全的ftp服务器程序。
vsftp具有的主要特点:
1.安全、高速、稳定的ftp服务器
2.可以做多个ip的虚拟ftp主机服务器
3.方便地设置匿名登录
4.不执行任何外部程序,从而减少了安全隐患
5.支持带宽限制
6.支持两种认证方式
命令:rpm -qa vsftpd
命令:yum vsftpd
启动:service vsftpd start
重启:重启service vsftpd restart
停止:service vsftpd stop
执行“ntsysv”命令启动自动服务配置程序,找到“vsftpd”服务选项,按空格键在前面加上星号,按tab键,选择确定即可。
命令:cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES # 允许匿名用户访问
local_enable=YES # 启用本地系统用户访问
write_enable=YES # 本地系统写入权限
local_umask=022 # 本地用户创建文件及目录默认权限掩码
anon_upload_enable=YES # 允许匿名用户上传文件
anon_mkdir_write_enable=YES # 允许匿名用户创建目录
anon_other_write_enable=YES # 允许匿名用户其他写入权限
dirmessage_enable=YES # 打印目录显示信息,通常用于用户第一次访问目录时,信息提示
xferlog_enable=YES # 启用上传日志、下载日志记录
connect_from_port_20=YES # 使用20端口进行数据传输
xferlog_std_format=YES # 日志文件将根据xferlong的标准格式写入
listen=YES # 不以独立的服务启动,通过xinetd服务服务管理
pam_service_name=vsftpd # 登录ftp服务器,依据/etc/pam.d/vsftpd中的内容进行认证
userlist_enable=YES # vsft.user_list和ftpusers配置文件里用户禁止访问ftp
tcp_wrappers=YES # 设置vsftpd与tcp wrapper结合进行主机的访问控制,vsftpd服务器检查
/etc/hosts.allow和/etc/hosts.deny中的设置来决定请求连接的主机,是否
允许访问该ftp服务器
因默认vsftpd匿名用户有两种:anonymous、ftp,所以匿名用户如果需要上传文件、删除及修改等权限,需要vsftpd用户对/var/ftp/pub目录有写入权限,使用chown和chmod任意一种设置权限,如下:
chown -R ftp pub/
或chmod o+w pub
linux中的目录可以在/var/ftp/pub
中添加。
重启服务器之后,即可在windows系统中添加文件
注:要完成这些,需要关闭linux和windows的防火墙和修改相关配置文件
关闭linux防火墙:service iptables stop
修改配置文件:setenforce 0
关闭windows防火墙
vsftpd匿名用户设置完毕,任何人都可以查看ftp服务器端的文件、目录,设置可以修改、删除文件和目录,如何存放私密文件在ftp端,并保证文件或目录专属于拥有者?vsftpd系统用户可以实现该需求。
实现vsftpd系统用户方式验证,只需在linux系统中创建多个用户即可。
useradd -s /sbin/nologin jxx001
useradd -s /sbin/nologin jxx002
passwd 用户名
命令:vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
命令:service vsftpd restart
打开我的电脑,此时输入用户名和密码即可
vsftpd基于系统用户访问ftp服务器,系统用户越多越不利于管理,而且不利于安全,为了更加安全使用vsftpd,可以使用vsftpd虚拟用户方式。
vsftpd虚拟用户原理为虚拟用户没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录linux系统,从而让系统更加安全可靠。
如果ftp并不对互联网上的所有用户开发,则可以关闭匿名访问,开启实体账户或者虚拟账户的验证机制。
在实际操作中,如果使用实体账户访问,ftp用户在拥有服务器真实用户名和密码的情况下,会对服务器产生潜在的危害,ftp服务器如果设置不当,则用户有可能使用实体账号进行非法操作。
为了ftp服务器的安全,可以使用虚拟用户验证方式,即将虚拟的账号映射为服务器的实体账号,客户端使用虚拟账号访问ftp服务器。
挂在盘符:mount /dev/cdrom /mnt/Packge
进入安装包,进行下载:cd /mnt/Packge/Packges
下载:rpm -ivh db4-4.7.25-17.el6.x86_64.rpm
rpm -ivh db4-utils-4.7.25-17.el6.x86_64.rpm
或者使用yum安装:yum install db4
mkdir -p /home/ftp/jxx001
mkdir -p /home/ftp/jxx002
useradd -s /sbin/nologin vftp
验证:cat /etc/passwd |grep vftp
chown vftp. /home/ftp/ -R
vim /etc/vsftpd/logins.txt
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/login.db
查看命令:ls /etc/vsftpd
chmod 600 /etc/vsftpd/login.db
vim /etc/pam.d/ftp
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
#allow_writeable_chroot=YES
guest_enable=YES
guest_username=vftp
listen=YES
listen_port=21
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10088
anon_world_readable_only=NO
user_config_dir=/etc/vsftpd/user_conf
mkdir /etc/vsftpd/user_conf
vim /etc/vsftpd/user_conf/jxx001
write_enable=YES
anon_world_readable_only=no
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
local_root=/home/ftp/jxx001
vim /etc/vsftpd/user_conf/sgd002
write_enable=YES
anon_world_readable_only=no
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
local_root=/home/ftp/jxx002
service vsftpd restart