ftp服务器
- 一、FTP服务描述
- 二、vsfpt服务器配置
- 三、vsftpd系统用户配置
- 四、vsftpd虚拟用户配置
- 1.安装软件
- 2.创建相应的ftp数据目录
- 3.创建一个用户提供给虚拟用户使用
- 4.将ftp数据目录设置成vftp用户
- 5.创建虚拟账号与密码的文本文件(一行账号,一行密码, 注意不要有多余的空格)
- 6.将创建好的密码文件txt格式转换db格式
- 7.定义文件权限
- 8.定义pam认证文件(注意:db=/etc/vsftpd/login 文件就是上面生成的login.db文件;省略后缀.db)
- 9.配置vsftp主配置文件(guest_username=vftp 对应上面创建的用户)
- 10.创建上面配置文件中指定的子配置文件目录 user_conf
- 11.定义 jxx001 用户的配置文件(注意:这里创建配置用户配置文件的文件名必须与上面创建的用户名一致)
- 12.定义 jxx002 用户的配置文件
- 13.启动vsftpd
FTP(file transfer protocol)是文件传输协议的缩写。利用ftp服务可以实现文件的上传及下载等相关的文件传
输服务。
一、FTP服务描述
ftp服务就是文件传输服务,即文件传输协议,具备更强的文件传输可靠性和更高的效率。文件传输协议(file
transfer protocol,ftp),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。用户可以通
过客户端向FTP服务端上传、下载、删除文件,ftp服务器端可以同时提供给多人共享使用。
ftp最主要的功能是在服务器端和客户端之间进行文件的传输。
ftp是以TCP封包的模式来进行服务器与客户端之间的连接,当连接建立后,用户便可以在客户端连接ftp服务
器来进行文件的上传和下载,同时也可以直接管理用户在tfp服务器上的文件。
1.FTP工作原理
ftp是基于客户端/服务器模式,工作原理如下:
- 首先,客户端向服务器发出连接请求,同时客户端系统动态打开一个大于1024(如端口1030)的端口等候服务器的连接.
- 当ftp服务器的端口21侦听到该请求后,会在客户端1030端口与服务器的21端口之间建立一个ftp会话连接。
- 当需要传输数据时,ftp客户端再动态打开一个大于1024的端口(如端口1031)连接到服务器的20端口,并在这两个端口之间进行数据的传输。
- 数据传输完毕后,ftp客户端将断开与ftp服务器的连接,客户端动态分配的端口将自动释放掉。
2.匿名用户
要使用ftp服务来实现文件的传输,首先需要登录到服务器,然后再进行文件的传输。但是对于很多公开提供软件下载的服务器来说非常不方便。为了解决该问题,匿名用户访问随之产生。
匿名用户是通过使用一个公用用户名anonymous,密码不限的策略管理,让任何用户都可以方便地从这些服务器上下载相关资源。
3.ftp服务的传输模式
ftp的两种工作模式:
- 主动传输模式active ftp
- 被动传输模式passive 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是指服务器被动地等待客户端连接自己的数据端口。
4.流行的ftp服务器软件简介
vsftp(very secure FTP),该ftp的目的是构建一个安全的ftp服务器程序。
vsftp具有的主要特点:
1.安全、高速、稳定的ftp服务器
2.可以做多个ip的虚拟ftp主机服务器
3.方便地设置匿名登录
4.不执行任何外部程序,从而减少了安全隐患
5.支持带宽限制
6.支持两种认证方式
二、vsfpt服务器配置
1.检查是否安装vsftp
命令:rpm -qa vsftpd
2.安装vsftpd
命令:yum vsftpd
3.启动、重启、停止服务命令
启动:service vsftpd start
重启:重启service vsftpd restart
停止:service vsftpd stop
4.自动启动vsftp服务
执行“ntsysv”命令启动自动服务配置程序,找到“vsftpd”服务选项,按空格键在前面加上星号,按tab键,选择确定即可。
5.查看配置文件
命令: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服务器
6.修改/var/ftp/pub目录权限
因默认vsftpd匿名用户有两种:anonymous、ftp,所以匿名用户如果需要上传文件、删除及修改等权限,需要vsftpd用户对/var/ftp/pub目录有写入权限,使用chown和chmod任意一种设置权限,如下:
chown -R ftp pub/
或chmod o+w pub
7.添加文件
linux中的目录可以在/var/ftp/pub
中添加。
重启服务器之后,即可在windows系统中添加文件
注:要完成这些,需要关闭linux和windows的防火墙和修改相关配置文件
关闭linux防火墙:service iptables stop
修改配置文件:setenforce 0
关闭windows防火墙
三、vsftpd系统用户配置
vsftpd匿名用户设置完毕,任何人都可以查看ftp服务器端的文件、目录,设置可以修改、删除文件和目录,如何存放私密文件在ftp端,并保证文件或目录专属于拥有者?vsftpd系统用户可以实现该需求。
实现vsftpd系统用户方式验证,只需在linux系统中创建多个用户即可。
1.建立用户jxx001和jxx002
useradd -s /sbin/nologin jxx001
useradd -s /sbin/nologin jxx002
passwd 用户名
2.修改配置文件
命令: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
3.重启服务器
命令:service vsftpd restart
4.测试登录
打开我的电脑,此时输入用户名和密码即可
四、vsftpd虚拟用户配置
vsftpd基于系统用户访问ftp服务器,系统用户越多越不利于管理,而且不利于安全,为了更加安全使用vsftpd,可以使用vsftpd虚拟用户方式。
vsftpd虚拟用户原理为虚拟用户没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录linux系统,从而让系统更加安全可靠。
如果ftp并不对互联网上的所有用户开发,则可以关闭匿名访问,开启实体账户或者虚拟账户的验证机制。
在实际操作中,如果使用实体账户访问,ftp用户在拥有服务器真实用户名和密码的情况下,会对服务器产生潜在的危害,ftp服务器如果设置不当,则用户有可能使用实体账号进行非法操作。
为了ftp服务器的安全,可以使用虚拟用户验证方式,即将虚拟的账号映射为服务器的实体账号,客户端使用虚拟账号访问ftp服务器。
1.安装软件
挂在盘符: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
2.创建相应的ftp数据目录
mkdir -p /home/ftp/jxx001
mkdir -p /home/ftp/jxx002
3.创建一个用户提供给虚拟用户使用
useradd -s /sbin/nologin vftp
验证:cat /etc/passwd |grep vftp
4.将ftp数据目录设置成vftp用户
chown vftp. /home/ftp/ -R
5.创建虚拟账号与密码的文本文件(一行账号,一行密码, 注意不要有多余的空格)
vim /etc/vsftpd/logins.txt
6.将创建好的密码文件txt格式转换db格式
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/login.db
查看命令:ls /etc/vsftpd
7.定义文件权限
chmod 600 /etc/vsftpd/login.db
8.定义pam认证文件(注意:db=/etc/vsftpd/login 文件就是上面生成的login.db文件;省略后缀.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
9.配置vsftp主配置文件(guest_username=vftp 对应上面创建的用户)
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
10.创建上面配置文件中指定的子配置文件目录 user_conf
mkdir /etc/vsftpd/user_conf
11.定义 jxx001 用户的配置文件(注意:这里创建配置用户配置文件的文件名必须与上面创建的用户名一致)
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
12.定义 jxx002 用户的配置文件
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
13.启动vsftpd
service vsftpd restart