时间:2022-12-15来源:www.pcxitongcheng.com作者:电脑系统城
vsftpd 是very secure FTP daemon的缩写,安全性是它的一个最大的特点。
vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件。
命令如下:
| 1 | whereis vsftpd |
vsftpd服务未安装显示如下:

命令如下:
| 1 | sudo apt-get install vsftpd |
安装过程:

再次查询vsftpd服务,如图所示:

| 1 | vsftpd -version |
版本号显示如下,说明安装成功。

查询vsftpd状态
| 1 | service vsftpd status |
开启vsftpd
| 1 | sudo service vsftpd start |
重启vsftpd
| 1 | sudo service vsftpd restart |
关闭vsftpd
| 1 | sudo service vsftpd stop |
该处使用的url网络请求的数据。
1、修改vsftpd的配置文件
| 1 | sudo vi /etc/vsftpd.conf |
将配置文件中:anonymous_enable=YES

2、使用ftp工具连接到自己的服务器,输入用户名anonymous,密码为空。
登录成功后,应该看到下面的提示信息:

3、ubuntu20.04匿名用户的目录是 /srv/ftp,不同版本的目录不一样。在该目录下,创建空文件welcome。
| 1 | sudo touch welcome |
现在可以使用FTP客户端看到这个文件了。

前面已经配置完成,不再赘述。
2.1本地用户登录配置
在一个网点内部,FTP更多的情况下被配置为向授权用户开放。为此,用户应该在服务器上拥有自己的账号。vsftpd把这样的用户成为本地用户。
修改vsftpd的配置文件,重启FTP服务器。
| 1 | sudo vi /etc/vsftpd.conf |
| 1 2 3 4 5 |
# Uncomment this to allow local users to log in.local_enable=YES## Uncomment this to enable any form of FTP write command.write_enable=YES |
出于安全性,有一些用户不允许通过FTP登录,vsftpd将这些用户整理在 /etc/ftpusers中。
这是FTP黑名单,所有被列入其中的用户都不能通过FTP登录进来。

2.2 限制用户在本地目录中
vsftpd提供了chroot(change root)系统调用,使其它目录对使用者不可见,也不可访问。
修改vsftpd的配置文件中以下配置。
| 1 2 3 4 |
# You may restrict local users to their home directories. See the FAQ for# the possible risks in this before using chroot_local_user or# chroot_list_enable below.chroot_local_user=YES |
类似的,也可以知道哪些用户受限,通过配置文件chroot_list_file。
| 1 2 3 4 5 6 7 8 9 10 |
# You may specify an explicit list of local users to chroot() to their home# directory. If chroot_local_user is YES, then this list becomes a list of# users to NOT chroot().# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that# the user does not have write access to the top level directory within the# chroot)chroot_local_user=YESchroot_list_enable=YES# (default follows)chroot_list_file=/etc/vsftpd.chroot_list |
3.1 创建虚拟用户数据库文件
安装创建数据库文件需要使用的db工具:
| 1 | sudo apt-get install db-util |
db工具通过读取一个特定格式的文本文件来创建数据库文件,这个文件为每个用户预留2行,第一行为用户名,第二行为密码。
建立文件login_user,包含内容:
| 1 2 |
fei123456 |
运行db_load 命令,通过~/login_user(由-f选项指定)创建数据库文件/etc/vsftpd_login.db。
| 1 | sudo db_load -T -t hash -f /home/xuzhanfei/login_user /etc/vsftpd_login.db |
-T:通过文本文件创建-t hash:通过哈希表的数据结构创建数据库最后,更改权限,使其只对root用户可见:
| 1 | sudo chmod 600 /etc/vsftpd_login.db |
3.2 配置PAM验证
/etc/pam.d/vsftpd 是vsftpd 默认使用的PAM验证文件,在该文件中加入以下两行,其余内容屏蔽:
| 1 2 |
auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_loginaccount required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login |
同时,修改vsftpd的配置文件中以下配置。
| 1 2 |
# This string is the name of the PAM service vsftpd will use.pam_service_name=vsftpd |
3.3 创建本地用户映射
下面做一些配置,将登录进来的用户映射到一个指定的非特权用户,这里就使用ftp用户。
修改vsftpd的配置文件中以下配置:
| 1 2 3 4 |
# 激活访客身份guest_enable=YES# 映射用户guest_username=ftp |
3.4 设置用户目录和权限
将 fei 用户目录设置为 /home/ftp/fei,赋予读写权限。
首先,为用户创建主目录,虚拟用户登录后自动映射为本地ftp 用户,因此,把目录的属主设置为 ftp 用户:
| 1 2 |
sudo mkdir /srv/ftp/feisudo chown ftp /srv/ftp/fei/ ##设置目录的属主 |
接下来,配置用户的目录和权限,先创建路径:
| 1 | sudo mkdir /etc/vsftpd_user_conf |
修改vsftpd的配置文件中以下配置:
| 1 2 |
# 存放用户配置的目录user_config_dir=/etc/vsftpd_user_conf |
添加 fei 的文本文件,增加以下内容:
| 1 2 3 4 5 6 7 |
# 打开vsftpd的全局写权限write_enable=YES# 打开文件上传权限anon_upload_enable=YES# 打开建立目录的权限anon_mkdir_write_enable=YESlocal_root=/srv/ftp/fei/ |
重启 vsftpd 服务。
注:未解决本地用户和虚拟用户登录冲突的问题

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXX端口,你过来连接我”。于是客户端向服务器的XXX端口发送连接请求,建立一条数据链路来传送数据。
被动模式也会存在防火墙的问题,客户端与服务端传输数据时,在服务端也会有防火墙,但在服务端的防火墙有连接追踪的功能,解决了防火墙的问题。因此,一般使用被动模式比较多。
修改vsftpd的配置文件中以下配置。
| 1 2 3 4 |
pasv_enable=YES (使能被动连接)pasv_min_port=9981 (被动连接服务器建立的端口XXX)pasv_max_port=9983pasv_address=192.194.203.142 (路由器静态IP地址) |
(1)外网想要连接FTP服务器,需要知道数据传输的端口9981-9983。
(2)数据端口是随机的,那么服务器该如何将这些随机数据端口映射到公网的路由器上呢???
(3)我们需要把命令端口21和随机的数据端口映射到公网的端口(该端口需要开通权限),例如:学校开放公网端口为:9981-9983。


验证端口开放成功:

2024-07-07
myeclipse怎么导入tomcat教程2024-07-07
myeclipse如何启动tomcat2024-07-07
myeclipse如何绑定tomcat上线了一个小的预约程序,配置通过Nginx进行访问入口,默认的日志是没有请求时间的,因此需要配置一下,将每一次的请求的访问响应时间记录出来,备查与优化使用....
2023-03-17