Centos 7 vsftp 详解

栏目: 服务器 · 发布时间: 7年前

内容简介:1.安装2.登陆或者
[root@vm-50-156 ~]# yum -y install vsftpd


[root@vm-50-156 ~]# systemctl enable vsftpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

客户端连接

1.安装

sudo apt-get install ftp

2.登陆

pi@raspberrypi:~ $ ftp 192.168.50.156
Connected to 192.168.50.156.
220 (vsFTPd 3.0.2)
Name (192.168.50.156:pi): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

或者

pi@raspberrypi:~ $ ftp 192.168.50.156
Connected to 192.168.50.156.
220 (vsFTPd 3.0.2)
Name (192.168.50.156:pi): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

匿名用户登陆

但是目前匿名用户只能访问,下载文件 不能上传,需要设置配置文件

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 0        0              15 May 06 05:47 pub
226 Directory send OK.
ftp> put test.txt
local: test.txt remote: test.txt
200 PORT command successful. Consider using PASV.
550 Permission denied.

配置文件修改

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES

    anon_upload_enable=YES #允许上传
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES #允许创建和写入文件

重启服务,上传测试

ftp> put test.txt
local: test.txt remote: test.txt
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
19 bytes sent in 0.00 secs (240.9700 kB/s)
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               4 May 06 05:47 a
-rw-------    1 14       50             19 May 06 05:59 test.txt
226 Directory send OK.
ftp>

本地用户登陆

1.创建用户

[root@vm-50-156 ~]# useradd ftp1 -s /sbin/nologin -g ftp
[root@vm-50-156 ~]# passwd ftp1
Changing password for user ftp1.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

2.然后客户端登陆

pi@raspberrypi:~/ftp $ ftp 192.168.50.156
Connected to 192.168.50.156.
220 (vsFTPd 3.0.2)
Name (192.168.50.156:pi): ftp1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/ftp1"
ftp>

禁止登陆

1.全局禁止

local_enable=YES //改为 NO

2.配置文件禁止

  • ftpusers 黑名单 添加进去后禁止登陆

比如,在末尾添加了 ftp2 这个用户

[root@vm-50-156 vsftpd]# cat ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
ftp2

那么当你去登陆的时候就会出现

pi@raspberrypi:~/ftp $ ftp 192.168.50.156
Connected to 192.168.50.156.
220 (vsFTPd 3.0.2)
Name (192.168.50.156:pi): ftp2
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
  • user_list //这个文件由主配置文件的 userlist_enable 参数控制,当其值为 NO,则允许登陆,当其值为 YES 则禁止登陆

例如:

userlist_enable=NO

则结果

pi@raspberrypi:~/ftp $ ftp 192.168.50.156
Connected to 192.168.50.156.
220 (vsFTPd 3.0.2)
Name (192.168.50.156:pi): ftp1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

如果为 YES

userlist_enable=YES

则

pi@raspberrypi:~/ftp $ ftp 192.168.50.156

Connected to 192.168.50.156.

220 (vsFTPd 3.0.2)

Name (192.168.50.156:pi): ftp1

530 Permission denied.

Login failed.

ftp>

定制登陆信息

1.配置文件

[root@vm-50-156 ftp1]# vim /etc/vsftpd/vsftpd.conf

dirmessage_enable=YES

默认情况会读取 ftp 用户家目录的.message文件,所以你可以创建一个.message文件到家目录中,比如有个用户 ftp1,

[root@vm-50-156 ftp1]# pwd
/home/ftp1
[root@vm-50-156 ftp1]# ls
[root@vm-50-156 ftp1]# ll -a
total 16
drwx------  2 ftp1 ftp   78 May  6 14:41 .
drwxr-xr-x. 8 root root  89 May  6 14:19 ..
-rw-r--r--  1 ftp1 ftp   18 Dec  7 07:19 .bash_logout
-rw-r--r--  1 ftp1 ftp  193 Dec  7 07:19 .bash_profile
-rw-r--r--  1 ftp1 ftp  231 Dec  7 07:19 .bashrc
-rw-r--r--  1 root root 113 May  6 14:41 .message

查看文件内容

[root@vm-50-156 ftp1]# cat .message
--欢迎您来到awen 的FTP!
--博客: https://awen.me

客户端登陆

pi@raspberrypi:~/ftp $ ftp 192.168.50.156
Connected to 192.168.50.156.
220 (vsFTPd 3.0.2)
Name (192.168.50.156:pi): ftp1
331 Please specify the password.
Password:
230---欢迎您来到awen 的FTP!
230---博客: https://awen.me
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

禁锢在用户的主目录

默认情况下

ftp> pwd
257 "/home/ftp1"
ftp> cd / # 切换到根目录,发现可以查看根目录下的所以目录了,通常这样是不被运行的
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
lrwxrwxrwx    1 0        0               7 May 01 11:31 bin -> usr/bin
dr-xr-xr-x    5 0        0            4096 May 06 01:10 boot
drwxr-xr-x   21 0        0            3420 May 06 05:23 dev
drwxr-xr-x  101 0        0            8192 May 06 06:19 etc
-rw-rw----    1 0        0           36741 May 04 03:12 frpc.2017-05-03.log
-rw-rw----    1 0        0           83890 May 06 05:23 frpc.log
drwxr-xr-x    8 0        0              89 May 06 06:19 home
lrwxrwxrwx    1 0        0               7 May 01 11:31 lib -> usr/lib
lrwxrwxrwx    1 0        0               9 May 01 11:31 lib64 -> usr/lib64
drwxr-xr-x    2 0        0               6 Nov 05 15:38 media
drwxr-xr-x    2 0        0               6 Nov 05 15:38 mnt
drwxr-xr-x    5 0        0            4096 May 06 02:33 opt
dr-xr-xr-x  286 0        0               0 May 06 05:23 proc
dr-xr-x---    9 0        0            4096 May 06 06:47 root
drwxr-xr-x   32 0        0            1140 May 06 05:34 run
lrwxrwxrwx    1 0        0               8 May 01 11:31 sbin -> usr/sbin
drwxr-xr-x    2 0        0               6 Nov 05 15:38 srv
dr-xr-xr-x   13 0        0               0 May 06 05:23 sys
drwxrwxrwt   36 0        0            4096 May 06 06:46 tmp
drwxr-xr-x   13 0        0             155 May 01 11:31 usr
drwxr-xr-x   21 0        0            4096 May 06 05:34 var
drwxr-xr-x    3 0        0             239 May 05 08:27 vm-images
drwxr-xr-x    2 0        0              99 May 03 04:43 vm-iso
226 Directory send OK.

注释

chroot_local_user=NO # 如果未 NO 则chroot_list文件中的用户禁止访问其他目录,如果为 YES,则chroot_list中的用户可以访问其他目录
chroot_list_enable=YES
allow_writeable_chroot=YES #添加这行
chroot_list_file=/etc/vsftpd/chroot_list

然后重启服务,然后将禁止访问上一级目录的用户添加到

[root@vm-50-156 vsftpd]# cat chroot_list
ftp1

当我们的chroot_local_user 设置为 NO 的时候,访问 发现被禁止了

pi@raspberrypi:~/ftp $ ftp 192.168.50.156
Connected to 192.168.50.156.
220 (vsFTPd 3.0.2)
Name (192.168.50.156:pi): ftp1
331 Please specify the password.
Password:
230---欢迎您来到awen 的FTP!
230---博客: https://awen.me
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> cd /
250 Directory successfully changed.
ftp> pwd
257 "/"
ftp> pwd
257 "/"
ftp> cd /
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> quit

反之为 YES 则

pi@raspberrypi:~/ftp $ ftp 192.168.50.156
Connected to 192.168.50.156.
220 (vsFTPd 3.0.2)
Name (192.168.50.156:pi): ftp1
331 Please specify the password.
Password:
230---欢迎您来到awen 的FTP!
230---博客: https://awen.me
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> cd /
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
lrwxrwxrwx    1 0        0               7 May 01 11:31 bin -> usr/bin
dr-xr-xr-x    5 0        0            4096 May 06 01:10 boot
drwxr-xr-x   21 0        0            3420 May 06 05:23 dev
drwxr-xr-x  101 0        0            8192 May 06 06:19 etc
-rw-rw----    1 0        0           36741 May 04 03:12 frpc.2017-05-03.log
-rw-rw----    1 0        0           83890 May 06 05:23 frpc.log
drwxr-xr-x    8 0        0              89 May 06 06:19 home
lrwxrwxrwx    1 0        0               7 May 01 11:31 lib -> usr/lib
lrwxrwxrwx    1 0        0               9 May 01 11:31 lib64 -> usr/lib64
drwxr-xr-x    2 0        0               6 Nov 05 15:38 media
drwxr-xr-x    2 0        0               6 Nov 05 15:38 mnt
drwxr-xr-x    5 0        0            4096 May 06 02:33 opt
dr-xr-xr-x  288 0        0               0 May 06 05:23 proc
dr-xr-x---    9 0        0            4096 May 06 07:07 root
drwxr-xr-x   32 0        0            1140 May 06 05:34 run
lrwxrwxrwx    1 0        0               8 May 01 11:31 sbin -> usr/sbin
drwxr-xr-x    2 0        0               6 Nov 05 15:38 srv
dr-xr-xr-x   13 0        0               0 May 06 05:23 sys
drwxrwxrwt   36 0        0            4096 May 06 07:04 tmp
drwxr-xr-x   13 0        0             155 May 01 11:31 usr
drwxr-xr-x   21 0        0            4096 May 06 05:34 var
drwxr-xr-x    3 0        0             239 May 05 08:27 vm-images
drwxr-xr-x    2 0        0              99 May 03 04:43 vm-iso
226 Directory send OK.
ftp>

虚拟用户

1.创建一个文件vusers.list 添加内容

[root@vm-50-156 vsftpd]# vim vusers.list
[root@vm-50-156 vsftpd]# cat vusers.list
mike 用户名
123 密码
john
456

2.生成 db 文件

[root@vm-50-156 vsftpd]# db_load -T -t hash -f vusers.list vusers.db
[root@vm-50-156 vsftpd]# ls
chroot_list  ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vusers.db  vusers.list
[root@vm-50-156 vsftpd]#

查看文件类型

[root@vm-50-156 vsftpd]# file vusers.db
vusers.db: Berkeley DB (Hash, version 9, native byte-order)

设置权限

[root@vm-50-156 vsftpd]# chown 600 /etc/vsftpd/vusers.*

创建用户

#useradd -d /var/ftproot/ -s /sbin/nologin virtual
useradd -d /var/ftproot/ -s /sbin/nologin virtual
useradd: user 'virtual' already exists

赋予其权限

chmod 755 /var/ftproot/

3.建立支持虚拟用户的 PAM 认证文件

[root@vm-50-156 /]# vim /etc/pam.d/vsftpd.vu
[root@vm-50-156 /]# cat /etc/pam.d/vsftpd.vu
auth required pam_userdb.so.db=/etc/vsftpd/vusers.db
account required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers

4.修改配置文件

[root@vm-50-156 /]# vim /etc/vsftpd/vsftpd.conf
[root@vm-50-156 /]# systemctl restart vsftpd.service

配置文件内容

guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
userlist_enable=NO
tcp_wrappers=YES
allow_writeable_chroot=YES

登陆失败

pi@raspberrypi:~ $ ftp 192.168.50.156
Connected to 192.168.50.156.
220 (vsFTPd 3.0.2)
Name (192.168.50.156:pi): john
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.

查看

[root@vm-50-156 vsftpd]# systemctl status vsftpd.service
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2017-05-06 15:43:42 CST; 38s ago
  Process: 8596 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 8597 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           ├─8597 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
           ├─8598 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
           └─8599 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

May 06 15:43:42 vm-50-156 systemd[1]: Stopping Vsftpd ftp daemon...
May 06 15:43:42 vm-50-156 systemd[1]: Starting Vsftpd ftp daemon...
May 06 15:43:42 vm-50-156 systemd[1]: Started Vsftpd ftp daemon.
May 06 15:43:54 vm-50-156 vsftpd[8598]: PAM unable to dlopen(/usr/lib64/security/pam_userdb.so.db=/etc/vsft...ctory
May 06 15:43:54 vm-50-156 vsftpd[8598]: PAM adding faulty module: /usr/lib64/security/pam_userdb.so.db=/etc...users
Hint: Some lines were ellipsized, use -l to show in full.
[root@vm-50-156 vsftpd]#

检查是认证文件配置错了

[root@vm-50-156 /]# cat /etc/pam.d/vsftpd.vu
auth required pam_userdb.so.db=/etc/vsftpd/vusers.db
account required pam_userdb.so.db=/etc/vsftpd/vusers # 这里手残多打了个.
account required pam_userdb.so db=/etc/vsftpd/vusers

重启下

pi@raspberrypi:~ $ ftp 192.168.50.156
Connected to 192.168.50.156.
220 (vsFTPd 3.0.2)
Name (192.168.50.156:pi): john
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

ok 了

配置参数

vsftpd是(very secure FTP)的缩写,是一款咋*nix上非常安全的ftp软件,它基于GPL开发,支持IPV6、SSL加密等等。其安全性主要体现在:

  • 进程分离,处理不同人物的进程是彼此独立运行。
  • 进程均以最小的权限运行。
  • 多数进程使用chroot进行锁定,防止越权访问非法目录。

chroot 是一种改变根的技术,比如我们创建一个/var/ftp/pub/,则该目录对于客户来说就是共享的根目录。

ftp的端口号是21

ftp的工作模式

1.主动工作模式

工作步骤:

  • 第一步,客户端随机开启大于1024的端口X与服务器的21端口进行连接通信,建立连接后,客户端可以随时通过该连接通道与服务器进行上传或下载。
  • 第二步,当客户端需要与服务器进行数据传输时,客户端会再开启一个大于1024的随机端口Y,并将Y端口号通过之前的命令通道传送给服务器的21端口
  • 第三步,服务器获取到可短的第二个端口后会主动连接客户端的该端口,通过TCP三次握手后,完成服务器与客户端数据通道的建立,所有数据均通过该端口进行传输。

2.被动模式

  • 第一步,客户端随机开启大于1024的X端口与服务器的21端口进行连接。
  • 第二步,当客户端需要与服务器进行数据传输时候,客户端从命令通道发送数据请求要求上传或下载数据。
  • 第三部,服务器收到数据请求后会随机开启一个端口Y,并且通过命令通道将该端口信息传输给服务端。
    -第四步,客户端收到服务器发送的端口Y信息,在客户端本地开启一个随机端口Z,此时客户端在主动通过本机的Z端口与服务器的Y端口进行连接,通过TCP三次握手后,进行数据传输

FTP协议需要多个网络端口才可以正常工作,期中一个端口专门用于命令的传输,另一个用于数据的传输。主动模式在传输数据时,服务器会主动连接客户端,被动模式下,客户端主动连接服务器。

为什么会有被动模式?

因为客户端大多数主机都在防火墙内,防火墙有可能会阻止端口对外发送数据,这样客户端连接ftp服务器,但是外网不能响应客户端,因此就有了被动模式。

Centos 7 vsftp 详解

安装

yum -y install vsftpd

安装完成后,我们关闭防火墙,开启ftp服务

/etc/init.d/vsftpd restart
/etc/init.d/iptables stop
 chkconfig iptables off

通过filezilla 去连接,只需要填写主机名就可以匿名连接到ftp服务

Centos 7 vsftp 详解

配置文件

vsftp的配置文件在 /etc/vsftpd 目录下,

[root@elk-node-1 ~]# cd /etc/vsftpd/
[root@elk-node-1 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
  • ftpusers 黑名单
  • user_list 控制名单(由配置文件控制是白名单还是黑名单)
  • /var/ftp ftp共享目录
  • /var/log/xferlog 日志文件

主配置文件参数

vsftpd的主配置文件是vsftpd.conf

# 是否允许匿名登录FTP服务器,默认设置为YES允许
# 用户可使用用户名ftp或anonymous进行ftp登录,口令为用户的E-mail地址。
# 如不允许匿名访问则设置为NO
anonymous_enable=YES
# 是否允许本地用户(即 linux 系统中的用户帐号)登录FTP服务器,默认设置为YES允许
# 本地用户登录后会进入用户主目录,而匿名用户登录后进入匿名用户的下载目录/var/ftp/pub
# 若只允许匿名用户访问,前面加上#注释掉即可阻止本地用户访问FTP服务器
local_enable=YES
# 是否允许本地用户对FTP服务器文件具有写权限,默认设置为YES允许
write_enable=YES 
# 掩码,本地用户默认掩码为077
# 你可以设置本地用户的文件掩码为缺省022,也可根据个人喜好将其设置为其他值
#local_umask=022
# 是否允许匿名用户上传文件,须将全局的write_enable=YES。默认为YES
#anon_upload_enable=YES
# 是否允许匿名用户创建新文件夹
#anon_mkdir_write_enable=YES 
# 是否激活目录欢迎信息功能
# 当用户用CMD模式首次访问服务器上某个目录时,FTP服务器将显示欢迎信息
# 默认情况下,欢迎信息是通过该目录下的.message文件获得的
# 此文件保存自定义的欢迎信息,由用户自己建立
#dirmessage_enable=YES
# 是否让系统自动维护上传和下载的日志文件
# 默认情况该日志文件为/var/log/vsftpd.log,也可以通过下面的xferlog_file选项对其进行设定
# 默认值为NO
xferlog_enable=YES
# Make sure PORT transfer connections originate from port 20 (ftp-data).
# 是否设定FTP服务器将启用FTP数据端口的连接请求
# ftp-data数据传输,21为连接控制端口
connect_from_port_20=YES
# 设定是否允许改变上传文件的属主,与下面一个设定项配合使用
# 注意,不推荐使用root用户上传文件
#chown_uploads=YES
# 设置想要改变的上传文件的属主,如果需要,则输入一个系统用户名
# 可以把上传的文件都改成root属主。whoever:任何人
#chown_username=whoever
# 设定系统维护记录FTP服务器上传和下载情况的日志文件
# /var/log/vsftpd.log是默认的,也可以另设其它
#xferlog_file=/var/log/vsftpd.log
# 是否以标准xferlog的格式书写传输日志文件
# 默认为/var/log/xferlog,也可以通过xferlog_file选项对其进行设定
# 默认值为NO
#xferlog_std_format=YES
# 以下是附加配置,添加相应的选项将启用相应的设置
# 是否生成两个相似的日志文件
# 默认在/var/log/xferlog和/var/log/vsftpd.log目录下
# 前者是wu_ftpd类型的传输日志,可以利用标准日志 工具 对其进行分析;后者是vsftpd类型的日志
#dual_log_enable
# 是否将原本输出到/var/log/vsftpd.log中的日志,输出到系统日志
#syslog_enable
# 设置数据传输中断间隔时间,此语句表示空闲的用户会话中断时间为600秒
# 即当数据传输结束后,用户连接FTP服务器的时间不应超过600秒。可以根据实际情况对该值进行修改
#idle_session_timeout=600
# 设置数据连接超时时间,该语句表示数据连接超时时间为120秒,可根据实际情况对其个修改
#data_connection_timeout=120
# 运行vsftpd需要的非特权系统用户,缺省是nobody
#nopriv_user=ftpsecure
# 是否识别异步ABOR请求。
# 如果FTP client会下达“async ABOR”这个指令时,这个设定才需要启用
# 而一般此设定并不安全,所以通常将其取消
#async_abor_enable=YES
# 是否以ASCII方式传输数据。默认情况下,服务器会忽略ASCII方式的请求。
# 启用此选项将允许服务器以ASCII方式传输数据
# 不过,这样可能会导致由"SIZE /big/file"方式引起的DoS攻击
#ascii_upload_enable=YES
#ascii_download_enable=YES
# 登录FTP服务器时显示的欢迎信息
# 如有需要,可在更改目录欢迎信息的目录下创建名为.message的文件,并写入欢迎信息保存后
#ftpd_banner=Welcome to blah FTP service.
# 黑名单设置。如果很讨厌某些email address,就可以使用此设定来取消他的登录权限
# 可以将某些特殊的email address抵挡住。
#deny_email_enable=YES
# 当上面的deny_email_enable=YES时,可以利用这个设定项来规定哪些邮件地址不可登录vsftpd服务器
# 此文件需用户自己创建,一行一个email address即可
#banned_email_file=/etc/vsftpd/banned_emails
# 用户登录FTP服务器后是否具有访问自己目录以外的其他文件的权限
# 设置为YES时,用户被锁定在自己的home目录中,vsftpd将在下面chroot_list_file选项值的位置寻找chroot_list文件
# 必须与下面的设置项配合
#chroot_list_enable=YES
# 被列入此文件的用户,在登录后将不能切换到自己目录以外的其他目录
# 从而有利于FTP服务器的安全管理和隐私保护。此文件需自己建立
#chroot_list_file=/etc/vsftpd/chroot_list
# 是否允许递归查询。默认为关闭,以防止远程用户造成过量的I/O
#ls_recurse_enable=YES
# 是否允许监听。
# 如果设置为YES,则vsftpd将以独立模式运行,由vsftpd自己监听和处理IPv4端口的连接请求
listen=YES
# 设定是否支持IPV6。如要同时监听IPv4和IPv6端口,
# 则必须运行两套vsftpd,采用两套配置文件
# 同时确保其中有一个监听选项是被注释掉的
#listen_ipv6=YES
# 设置PAM外挂模块提供的认证服务所使用的配置文件名,即/etc/pam.d/vsftpd文件
# 此文件中file=/etc/vsftpd/ftpusers字段,说明了PAM模块能抵挡的帐号内容来自文件/etc/vsftpd/ftpusers中
#pam_service_name=vsftpd
# 是否允许ftpusers文件中的用户登录FTP服务器,默认为NO
# 若此项设为YES,则user_list文件中的用户允许登录FTP服务器
# 而如果同时设置了userlist_deny=YES,则user_list文件中的用户将不允许登录FTP服务器,甚至连输入密码提示信息有
#userlist_enable=YES/NO
# 设置是否阻扯user_list文件中的用户登录FTP服务器,默认为YES
#userlist_deny=YES/NO
# 是否使用tcp_wrappers作为主机访问控制方式。
# tcp_wrappers可以实现linux系统中网络服务的基于主机地址的访问控制
# 在/etc目录中的hosts.allow和hosts.deny两个文件用于设置tcp_wrappers的访问控制
# 前者设置允许访问记录,后者设置拒绝访问记录。
# 如想限制某些主机对FTP服务器192.168.57.2的匿名访问,编缉/etc/hosts.allow文件,如在下面增加两行命令:
# vsftpd:192.168.57.1:DENY 和vsftpd:192.168.57.9:DENY
# 表明限制IP为192.168.57.1/192.168.57.9主机访问IP为192.168.57.2的FTP服务器
# 此时FTP服务器虽可以PING通,但无法连接
tcp_wrappers=YES

##登录方式

vsftp提供3种远程的登录方式:

  • 匿名登录方式

就是不需要用户名,密码。就能登录到服务器电脑里面

  • 本地用户方式

需要帐户名和密码才能登录。而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户。

  • 虚拟用户方式

同样需要用户名和密码才能登录。但是和上面的区别就是,这个用户名和密码,在你linux系统中是没有的(没有该用户帐号)

建立本地账户连接

1.修改配置文件

[root@elk-node-1 vsftpd]# cat vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

重启ftp服务

[root@elk-node-1 vsftpd]# /etc/init.d/vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]

2.建立本地用户

# useradd -s /sbin/nologin tom
# useradd -s /sbin/nologin awen
[root@elk-node-1 vsftpd]# cd /home/
awen/ tom/  
[root@elk-node-1 vsftpd]# touch /home/{awen,tom}/test.txt

3.连接ftp

安装ftp

yum -y install ftp

连接

[root@elk-node-1 vsftpd]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (127.0.0.1:root): awen
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
ftp> 
ftp> dir
227 Entering Passive Mode (127,0,0,1,135,237).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Mar 18 12:24 test.txt
226 Directory send OK.

也可以使用filezilla连接

Centos 7 vsftp 详解

配置SSL

由于ftp默认的配置是普通ftp模式,数据都是明文传输,特别是密码也会被明文显示,这个我们可以就上面的配置去登陆抓包看

Centos 7 vsftp 详解

可以看到,密码完全明文,假如说被非法分子拦截数据包,后果不堪设想,这样我们就需要配置加密的连接,让FTP变得安全些。

首先,在/etc/vsftpd/目录创建一个ssl目录,然后申请证书,参考 使用验证 DNS 的方式申请 Let’s encrypt 证书 ,证书申请完成后,将证书复制到创建的ssl目录中

cp fullchain.cer v0.ftp.v5linux.com.key /etc/vsftpd/ssl/

在上面的ftp配置文件中追加

allow_anon_ssl=NO #阻止匿名用户使用 SSL 登录
force_local_data_ssl=YES
force_local_logins_ssl=YES
require_ssl_reuse=NO 所有的 SSL 数据链接都需重用已经建立的 SSL 会话
ssl_ciphers=HIGH
pasv_min_port=40000
pasv_max_port=50000
debug_ssl=YES
tcp_wrappers=YES
ssl_enable=YES
ssl_tlsv1=YES #开启tlsv1
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/ssl/fullchain.cer #设置公钥
rsa_private_key_file=/etc/vsftpd/ssl/v0.ftp.v5linux.com.key #设置私钥

该部分配置参考: https://linux.cn/article-8295-1.html

然后重启ftp服务

Centos 7 vsftp 详解 通过wireshark 抓包看下

Centos 7 vsftp 详解

最终结果

Centos 7 vsftp 详解

建立虚拟账户

未完待续。。

FTP常见故障

一般使用filezilla 连接ftp的话,如果有报错,在地址栏下方的状态区会有提示。

1.530 login incorrect

这个说明是账户验证失败

2.500 oops:cannot change directory

这种表述无权限切换目录

3.不支持TLS登陆,这种情况可以使用filezilla 选择文件—站点管理器,新建一个站点,然后填写相关信息后,加密方式选择普通FTP模式。

Centos 7 vsftp 详解

4.报错如下,这种是因为配置文件多了个空格,需要检查下配置文件

# /etc/init.d/vsftpd restart
Shutting down vsftpd:                                      [FAILED]
Starting vsftpd for vsftpd: 500 OOPS: bad bool value in config file for: allow_anon_ssl
                                                           [FAILED]

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Bulletproof Web Design

Bulletproof Web Design

Dan Cederholm / New Riders Press / 28 July, 2005 / $39.99

No matter how visually appealing or packed with content a Web site is, it isn't succeeding if it's not reaching the widest possible audience. Designers who get this guide can be assured their Web site......一起来看看 《Bulletproof Web Design》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具