FTP 文件传输协议
作用
用来传输文件的
FTP协议采用的是TCP作为传输协议,
21号端口用来传输FTP控制命令的,
20号端口用来传输文件数据的
FTP传输模式:
主动模式:
FTP服务端接收下载控制命令后,会主动从tcp/20号端口发送数据传输给客户端
被动模式:
FTP服务端接收下载控制命令后,会开启一个空闲端口被动等待客户端数据传输连接
FTP控制命令:
pwd ls get put quit
配置:
允许匿名用户访问FTP服务器 anonymous_enable=YES anno_root=
允许服务端本地用户访问FTP服务器 local_enable=YES local_root=
user_list文件作为黑名单 userlist_enable=YES userlist_deny=YES
user_list文件作为白名单 userlist_enable=YES userlist_deny=NO
listen_port=2121 #设置监控端口
max_clients=100 #最大连接数
max_per_ip=5 #每个IP的最大连接数
实验
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0
[root@localhost ~]#
//关闭防火墙和核心防护
安装软件vsftpd
[root@localhost ~]# yum install -y vsftpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 vsftpd.x86_64.0.3.0.2-29.el7_9 将被 安装
--> 解决依赖关系完成
依赖关系解决
==========================================================================================================================================================
Package 架构 版本 源 大小
==========================================================================================================================================================
正在安装:
vsftpd x86_64 3.0.2-29.el7_9 local 173 k
事务概要
==========================================================================================================================================================
安装 1 软件包
总下载量:173 k
安装大小:353 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : vsftpd-3.0.2-29.el7_9.x86_64 1/1
验证中 : vsftpd-3.0.2-29.el7_9.x86_64 1/1
已安装:
vsftpd.x86_64 0:3.0.2-29.el7_9
完毕!
[root@localhost ~]#
[root@localhost ~]# cd /mnt/Packages
[root@localhost Packages]# rpm -qpc vsftpd-3.0.2-29.el7_9.x86_64.rpm //查看rpm安装包内包含的配置文件列表
警告:vsftpd-3.0.2-29.el7_9.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
[root@localhost Packages]#
[root@localhost Packages]# cd /etc/vsftpd/
[root@localhost vsftpd]# ls
ftpusers vsftpd.conf.bak
user_list vsftpd_conf_migrate.sh
vsftpd.conf
[root@localhost vsftpd]#
备份
[root@localhost ~]#
[root@localhost ~]# cd /etc/vsftpd
[root@localhost vsftpd]# cp vsftpd.conf vsftpd.conf.bak
[root@localhost vsftpd]#
配置文件
[root@localhost vsftpd]#
[root@localhost vsftpd]# vim vsftpd.conf
[root@localhost vsftpd]# systemctl start vsftpd
[root@localhost vsftpd]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@localhost vsftpd]#
[root@localhost vsftpd]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 730/rpcbind
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1580/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1180/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1181/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1560/master
tcp 0 0 127.0.0.1:6013 0.0.0.0:* LISTEN 68349/sshd: root@pt
tcp6 0 0 :::111 :::* LISTEN 730/rpcbind
tcp6 0 0 :::21 :::* LISTEN 69322/vsftpd
tcp6 0 0 :::22 :::* LISTEN 1180/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1181/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1560/master
tcp6 0 0 ::1:6013 :::* LISTEN 68349/sshd: root@pt
[root@localhost vsftpd]#
验证
打开一台win10
下载文件
指定下载位置
上传文件
ftp> put youzi.txt
设置匿名用户
[root@localhost ftp]# cd /etc/vsftpd
[root@localhost vsftpd]# vim vsftpd.conf
[root@localhost vsftpd]# useradd cywl
[root@localhost vsftpd]# echo 123456 |passwd --stdin cywl
更改用户 cywl 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost vsftpd]#
[root@localhost vsftpd]# useradd lty
[root@localhost vsftpd]# echo 123456 |passwd --stdin lty
更改用户 lty 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost vsftpd]#
[root@localhost vsftpd]# systemctl restart vsftpd //重启
[root@localhost vsftpd]#
匿名用户登录失败
非匿名用户登录成功
C:\Users\Lin\Desktop>ftp 20.0.0.20
连接到 20.0.0.20。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(20.0.0.20:(none)): cywl
331 Please specify the password.
密码:
230 Login successful.
ftp> pwd //查询当前位置
257 "/home/cywl"
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> put youzi.txt //上传文件
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 发送 11 字节,用时 0.00秒 11000.00千字节/秒。
ftp>
图形化界面登录
白名单黑名单
[root@localhost vsftpd]# vim vsftpd.conf
[root@localhost vsftpd]#
[root@localhost vsftpd]# vim user_list
[root@localhost vsftpd]#
白名单
[root@localhost vsftpd]# vim vsftpd.conf
[root@localhost vsftpd]#
[root@localhost vsftpd]# vim user_list
[root@localhost vsftpd]#
[root@localhost vsftpd]# systemctl restart vsftpd
[root@localhost vsftpd]#
名单内可以登录
名单外不可以登录
黑名单
[root@localhost vsftpd]# vim vsftpd.conf
[root@localhost vsftpd]#
[root@localhost vsftpd]# systemctl restart vsftpd
[root@localhost vsftpd]#
名单内不可以登录
名单内可以登录