内容简介: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服务器,但是外网不能响应客户端,因此就有了被动模式。
安装
yum -y install vsftpd
安装完成后,我们关闭防火墙,开启ftp服务
/etc/init.d/vsftpd restart /etc/init.d/iptables stop chkconfig iptables off
通过filezilla 去连接,只需要填写主机名就可以匿名连接到ftp服务
配置文件
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连接
配置SSL
由于ftp默认的配置是普通ftp模式,数据都是明文传输,特别是密码也会被明文显示,这个我们可以就上面的配置去登陆抓包看
可以看到,密码完全明文,假如说被非法分子拦截数据包,后果不堪设想,这样我们就需要配置加密的连接,让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服务
通过wireshark 抓包看下
最终结果
建立虚拟账户
未完待续。。
FTP常见故障
一般使用filezilla 连接ftp的话,如果有报错,在地址栏下方的状态区会有提示。
1.530 login incorrect
这个说明是账户验证失败
2.500 oops:cannot change directory
这种表述无权限切换目录
3.不支持TLS登陆,这种情况可以使用filezilla 选择文件—站点管理器,新建一个站点,然后填写相关信息后,加密方式选择普通FTP模式。
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]
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Flutter 完整开发实战详解(十六、详解自定义布局实战)
- 数据结构 1 线性表详解 链表、 栈 、 队列 结合JAVA 详解
- 详解Openstack环境准备
- Java泛型详解
- iOS RunLoop 详解
- Raft协议详解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Viral Loop
Adam L. Penenberg / Tantor Media / 2009-10-27 / USD 34.99
From Google to Facebook, a respected journalist delves into how a "viral loop" can make an online business a success.一起来看看 《Viral Loop》 这本书的介绍吧!