vsftp服务器搭建-学习笔记整理

ftp

1ftp简介与原理

ftp(file transfer protocol)中文称为“文件传输协议”用于internet上的控制文件的双向传输。

 

主动模式:服务端从20端口主动向客户端发起连接。

1、登录ftp服务器

2、登陆成功

3、客户端随机开放端口

4、客户端发送Port命令,读取数据,将开放的随机端口发送给服务器

5、服务器连接到客户端发送的随机端口,发送数据

6、服务器使用固定的20端口,向客户端的随机端口发送数据

 

被动端口:服务端在指定范围内内某个端口被动等待客户端连接。

1、登录ftp服务器

2、登陆成功

3、客户端发送pasv命令

4、服务器开放随机端口

5、服务器将开放的随机端口发送给客户端

6、客户端接收服务器开放的随机端口

7、客户端连接到服务器的随机端口获取数据。

 

一般使用被动模式,因为主动模式使用固定20端口访问客户端的随机端口传输数据时,客户端的随机端口可能会被防火墙拦截,服务器无能为力。

当使用被动模式时,客户端主动访问服务器的随机端口,当服务器的端口被防火墙拦截时,服务器可以调节,开放发送端口。

主要是从访问角度来衡量考虑。

 

端口:

ftp连接端口

控制连接:tcp 21,用于发送ftp命令信息

数据连接:tcp 20,用于上传、下载数据

 

 

 

2ftp相关文件

安装

vsftpd-2.2.2-11.el6.i686.rpm

 

相关文件

主配置文件:

/etc/vsftpd/vsftpd.conf

用户控制列表文件:

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

 

ftp相关用户

匿名用户

anonymousftp

本地用户

使用linux系统用户和密码

虚拟用户

管理员自定义的模拟用户

 

注意事项:

关闭防火墙

关闭SELinux

 

 

3、配置文件详解

 

默认配置文件

anonymous_enable=YES   #允许匿名用户登录

local_enable=YES #允许本地用户登录

write_enable=YES #允许本地用户上传

local_umask=022 #本地用户上传 umask

 

dirmessage_enable=YES #用户进入目录时,显示.message文件中信息

message_file=.message #指定信息文件

 

xferlog_enable=YES #激活记录日志

connect_from_port_20=YES #主动模式数据传输接口

xferlog_std_format=YES #使用标准的ftp日志格式

 

ftpd_banner #登录欢迎信息

listen=YES #允许被监听

pam_service_name=vsftpd

#设置PAM外挂模块提供的认证服务所使用的配置文件名,

       #/etc/pam.d/vsftpd文件

userlist_enable=YES #用户登录限制

tcp_wrappers=YES #是否使用tcp_wrappers作为主机访问控制方式

 

 

常用全局配置

listen_address=192.168.4.1 #设置监听的ip地址

Listen_port=21 #设置监听的ftp服务的端口号

download_enable=YES #是否允许西下载文件

max_clients=0 #限制并发客户端的连接数

max_per_ip=0 #限制同一ip地址的并发连接数

 

被动模式:

pasv_enable=YES #开启被动模式

pasv_min_port=24500 #被动模式最小端口

pasv_max_port=24600 #被动模式最大端口

 

常用安全配置

accept_timeout=60 #被动模式,连接超时时间

connect_timeout=60 #主动模式,连接超时时间

idle_session_timeout=600 #600秒没有任何操作就关闭端口连接

data_connection_timeout=500  #资料传输时,超过500秒没有完成,就断开传输

 

 

 

4、连接ftp的客户端使用

 

使用命令行连接

ftp ip

 -help 获取帮助

 -get   下载

 -mget 下载一批文件

 -put   上传

 -mput 上传一批文件

 -exit    退出

 

使用windows对话框

ftp://192.168.2.1

 

使用第三方工具

Winscp

 

 

在使用命令行方式连接tfp服务器的时候,不支持断点续传和目录传输

 

5、匿名用户访问

 

基本配置

anonymous_enable #允许匿名用户访问

anon_upload_enable #允许匿名用户上传

anon_mkdir_write_enable #允许匿名用户建立目录

anon_umask #设置上传的默认文件权限(默认是600

 

注意事项:

默认上传目录:/var/ftp/pub/

如果允许上传,需要服务权限系统目录权限同时允许

Vsftpd服务的伪用户是ftp

 

 

当匿名用户上传文件的时候,只开启上传权限是不够的,还需要对上传的文件夹拥有linux的系统操作权限,可以将上传文件到的目录所有者改为ftp伪用户,即可有权限上传操作。

 

 

 

6、本地用户访问

 

1、本地用户基本配置

local_enable=YES #允许本地用户登录

write_enable=YES #允许本地用户上传

local_umask=022 #本地用户上传umask

 

local_root=/var/ftp #设置本地用户的ftp根目录(注意目录权限)

local_max_rate=0   #限制最大传输速率(字节/秒)

 

注意:

当不设置local_root=/var/ftp参数时,各本地用户上传的默认目录是各自的家目录。

当设置了local_root=/var/ftp参数后,任何本地用户上传的目录都默认到了指定的目录,进行了统一。

 

同样当本地用户对文件上传是,除了开启ftp上传权限,还要拥有linux系统读写权限。更改上传目录的所属组,将本地用户加入到组中,即可上传文件。

 

 

使用匿名用户和本地用户登录ftp服务器后,可以随意切换到根目录,可以随意下载到东西。就要,限制用户在本地目录不可以随意切换目录

 

 

把用户限制在家目录

chroot_local_user=YES

#开启用户目录限制(只有此行,把所有用户都现在在用户主目录中)

 

设置chroot_local_user=YES参数之后,所有的本地用户都只会在此目录下,不可随意切换到其他目录。

 

如果想要允许用户可以随意切换其他目录可以使用参数:

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

#写入到/etc/vsftpd/chroot_list文件中的用户可以访问任何目录,其他用户限制在用户主目录

 

 

2、用户访问控制

 

ftp相关文件

 用户控制列表文件:

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

 

访问控制:

1

userlist_enable=YES #开启用户访问控制

userlist_deny=YES

userlist_file=/etc/vsftpd/user_list

#写入/etc/vsftpd/user_list文件中的用户不能访问ftp服务器,没有写入的用户可以访问(默认就是如此)

 

2

userlist_enable=YES #开启用户访问控制

userlist_deny=NO

userlist_file=/etc/vsftpd/user_list

#写入/etc/vsftpd/user_list文件中的用户可以访问ftp服务器,没有写入的用户不能访问

 

 

注意:

不要把限制用户主目录用户访问限制搞混

#chroot_local_user=YES 用于把用户禁锢在主目录下

#userlist_enable=YES 用于用户访问控制

 

 

7、虚拟用户访问

 

1、配置虚拟用户访问

配置虚拟用户登录的步骤:

1、添加虚拟用户口令文件

2、生成虚拟用户口令认证文件

3、编辑vsftpdPAM认证文件

4、建立本地映射用户并设置宿主目录权限

5、修改配置文件

6、重启vsftp服务,并测试

7.调整虚拟用户权限

 

1、添加虚拟用户口令文件

vi /etc/vsftpd/vuser.txt   #vuser.txt文件名是随意起的,但是要与后面配置对应

cangls#用户名

123#密码

bols#用户名

123#密码

 

2、生成虚拟用户口令认证文件

yum -y install db4-utils

#如果没有安装口令认证命令,需要安装

 

db_load -T -t hash -f /etc/vsftpd/vuser.txt  /etc/vsftpd/vuser.db

#把文本文档转换为认证的数据库

 

3、编辑vsftpdPAM认证文件

vi /etc/pam.d/vsftpd

auth required /lib/security/pam.userdb.so db=/etc/vsftpd/vuser

account required /lib/security/pam.userdb.so db=/etc/vsftpd/vuser

 

#注释掉其他行,加入此俩行即可

#注释掉其他行,可以禁止本地用户登录,因为本地用户登录时的验证依然依赖这个文件

 

4、建立本地映射用户并设置宿主目录权限

useradd -d /home/vsftproot -s /sbin/nologin vuser

#此用户不需要登录,只是映射用户

#用户名必须和下一步配置文件中一致

 

chmod 755 /home/vftproot

 

5、修改配置文件

vi /etc/vsftpd/vsftpd.conf

 guest_enable=YES #开启虚拟用户

 guest_username=vuser #ftp虚拟用户对应的系统用户

 pam_service_name=vsftpd #PAM认证文件(默认存在)

 

6、重启vsftp服务,并测试

service vsftpd restart

#此时虚拟用户可以登录,查看,下载,不能上传

#默认上传文件的位置是宿主用户的家目录

#权限使用的是匿名用户权限进行管理

 

7.调整虚拟用户权限

vi /etc/vsftpd/vsftpd.conf

anonymous_enbale=NO #关闭匿名用户登录,更加安全

#(不影响虚拟用户登录)

anon_upload_enable=YES    #允许(虚拟)匿名用户上传

anon_mkdir_write_enable=YES #允许(虚拟)匿名用户建立目录

anon_other_write_enable=YES

#给虚拟用户设定权限,允许所有虚拟用户上传

 

2、为每个虚拟用户建立自己的配置文件,单独定义权限

可以给每个虚拟用户单独建立目录,并建立自己的配置文件。这样方便单独配置权限,并可以单独指定上传目录

 

1、修改配置文件

vi /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir

#指定保存虚拟用户配置文件的目录

 

2、手工建立目录

mkdir /etc/vsftpd/vusers_dir

 

3、为每个虚拟用户建立配置文件

vi /etc/vsftpd/vusers_dir/cangls

anon_upload_enable=YES    #允许(虚拟)匿名用户上传

anon_mkdir_write_enable=YES #允许(虚拟)匿名用户建立目录

anon_other_write_enable=YES

#允许此用户上传

local_root=/tmp/vcangles

#cangls指定独立的上传目录

 

4、建立上传目录

mkdir /tmp/vcangls

Chown vuser:vuser /tmp/vangls

 

如果不给bols指定单独的配置文件,则遵守主配置文件(/etc/vsftpd/vsftpd.conf)的权限。

 

 

 

配置效果如下:

禁止匿名用户登录(配置文件修改)

禁止本地系统用户登录(pam文件修改)

允许虚拟用户登录(配置文件修改)

cangls的上传目录是/tmp/vcangls并且允许查看,下载,上传

bols的上传目录是虚拟用户的默认目录/home/vftproot,只能查看,下载。但是 不能上传

你可能感兴趣的:(linux)