FTP:File transfer protocol (文件传输协议)是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
用于文件的上传和下载;
21:控制层面,用于账户密码验证,权限的验证;
20:数据层面,用于文件的上传和下载;
客户端访问FTP资源时,可以在没有服务器的账户及密码的下,使用匿名(anonymous)身份获取公共资源,但权限较小。
实体用户(real user)是指FTP服务器的本地账户,使用/etc/passwd中的用户名为认证方式。
区别于实施账户,FTP支持建立专有的用户,将账号及密码保存在数据库中,采用非系统账户访问服务器资源,相对于FTP的实体用户而言,虚拟用户只能访问FTP共享资源,增强了系统安全性,并且,客户端使用虚拟用户登录,需要提交账号及密码,管理员可以根据这些账号进行策略设置,增加了对用户和下载的可管理性,考虑到FTP服务器的安全性以及管理因素,选择虚拟用户登录,是一个非常可靠的方案.
vim /etc/vsftpd.conf
vim /srv/ftp/
anonymous_enable=YES 是否启用匿名用户
local_enable=YES
write_enable=YES 允许写入(无论是匿名用户还是本地用户要实现上传就需要快开启它)
local_umask=022 默认本地用户上传文件权限755
dirmessage_enable=YES 显示每个目录下的文件信息
xferlog_enable=YES 日志启用
connect_from_port_20=YES 主动请求的数据端口
chown_uploads=YES 所有匿名用户上传的文件所属用户将会被改成chown_username
chown_username=whoever 匿名上传的所属用户名是whoever
xferlog_file=/var/log/xferlog 启用的日志文件
xferlog_std_format=YES
idle_session_timeout=600 空闲连接超时
data_connection_timeout=120 数据连接超时
nopriv_user=ftpsecure 当服务器运行于最底层时使用的用户名
chroot_list_enable=YES chroot_local_user=YES 所有文件列出用户, 可以切换到其他目录
chroot_list_file=/etc/vsftpd/chroot_list 用于指定用户列表文件,该文件用于控制哪些用户可以切换到FTP站点根目录的上级目录
listen=NO 服务将自己监听处理listen_ipv6=YES
pam_service_name=vsftpd 设置PAM认证模块使用名称预设为vsftpd
userlist_enable=YES
tcp_wrappers=YES 服务端和客户端访问控制策略(服务器级别的一种防火墙)
1)在光驱中插入Kylin-Desktop-V10_U1-HWE+GA-Release-Build02-20210824-GFB-x86_64.iso的系统光盘(若是虚拟机则连接相应的ISO文件)。
或者执行 ifconfig ens33 up
vsftpd的配置文件在/etc/vsftpd目录下,修改 vsftp.conf 文件:(建议复制一个备份文件在同一目录下,以防直接修改错误,而无法恢复。)
查看以下授权是否开启并修改:
anonymous_enable=YES #启用匿名访问
no_anon_password=YES #不需要匿名密码登录
local_enable=NO #启用本地用户访问(NO)
anon_umask=022 #设置匿名用户上传的文件权限
anon_upload_enable=YES #启用匿名用户上传
anon_world_readable_only=NO #匿名用户只读
anon_mkdir_write_enable=YES #启用匿名用户创建文件夹权限
anon_other_write_enable=YES #启用匿名用户其它操作的权限
uft8_filesystem=YES
1)在/srv/ftp/下新建 download文件和upload文件,并chmod授权777
2)在/home/下为用户授权
1)执行Windows+R,输入cmd,登录ftp 192.168.8.124
1)将Windows桌面上的uksc.db文件拖拽上传到upload文件中
进入upload文件中查看,也可在火狐浏览器中查看
3)在download文件中创建123.txt、test1.txt等文件
4)将从download文件中的red.txt下载(拖拽)到Windows桌面
5)在Windows文件资源管理器dowanload和upload目录中新建文件夹和重命名
6)删除123.txt文件和test文件夹
7)匿名用户在其它目录下只能下载,无法将123.txt上传和删除test.txt,查看常见问题及解决办法
1)在虚拟机中检查用户和指定的文件目录是否授权
2)打开Windows文件资源管理,登录ftp 192.168.8.124测试
1)useradd -d “/home/admin” -m -s “/usr/sbin/nologin” admin
passwd admin #设置密码
su admin #测试是否能登录本地系统
2)在/home目录下,执行chmod 755 admin增加权限
3)检查/etc/shells下是否添加/usr/sbin/nologin,如果没有,执行vim /etc/shells进行添加。
mkdir -p /srv/ftp/public #创建上传文件夹
chmod o+w /srv/ftp/public #赋予其它用户写的权限
在/srv/ftp/public中创建123.txt文件,并填写些东西。
anonymous_enable=NO #禁止匿名用户登录
local_enable=YES #允许本地用户登录
local_root=/srv/ftp/public
#设置本地用户的根目录为/srv/ftp/public
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
systemctl restart vsftpd
1)执行Windows+r,输入cmd,登录ftp 192.168.8.125虚拟机地址,对账号根目录进行限制,不能进入根目录以外的任何目录,使用admin用户 下载、上传、删除测试。
2)在Windows资源管理器访问地址ftp://192.168.8.125
3)将桌面的ukui-search*.deb包上传(拖拽)到/srv/ftp/public目录文件中
1)我们在/etc/vsftpd.conf配置文件中开放了本地用户登录,需要创建一个/etc/vsftpd.user_list文件
2)再次登录测试
1)检查/etc/passwd和/etc/shells
2)发现/etc/shells/没有添加/usr/sbin/nologin
使用虚拟用户比使用用本地用户和匿名用户的安全性更高,即使被破解了用户名和密码也不会影响本地系统,如果使用本地和匿名用户,也就相当于破解了本地的用户名和密码。
1)建立虚拟用户的用户名、密码列表的文本文件
vim /etc/vusers.list
用db_load转换工具,将文本文件(上一步所建立的文件)转化为数据库文件
Index of /ubuntu/pool/main/d/db5.3
3)执行db_load -T -t hash -f vusers.list vusers.db
4)修改虚拟用户列表文件及数据库文件访问权限。
chmod 600 /etc/vsftpd/vusers.*
(3)建立支持虚拟用户的PAM认证文件
vim /etc/pam.d/vusers.vu
注意:/etc/pam.d/vusers.vu中,空格用Tab键。
vim /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES #使用虚拟用户一定要启用本地用户
chroot_local_user=YES #将所有本地用户限制在家目录中(需添加)
guest_enable=YES #启用用户映射功能,允许虚拟用户登录(需添加)
pam_service_name=vusers.vu #指定对虚拟用户进行PAM认证的文件名vuser.vu
user_config_dir=/etc/vconfig #指定虚拟用户的配置文件的位置(需添加)
allow_writeable_chroot=YES
vuser1
vim /etc/vconfig/vuser1
guest_username=svuser1 #设置vuser1对应的本地用户为svuser1
local_root=/srv/ftp/noshare #用户登录后所在的目录
anon_world_readable_only=NO #允许浏览和下载
anon_max_rate=500000 #限定传输速率为500KB/s
vuser2
vim /etc/vconfig/vuser2
guest_username=svuser2
local_root=/srv/ftp/share
anon_world_readable_only=NO
write_enable=YES //允许写入
anon_upload_enable=YES //允许上传
anon_mkdir_write_enable=YES //允许创建文件夹
anon_max_rate=1000000 //限定传输速度为1000KB/s
打开Windows文件资源管理器登录ftp://192.168.8.125
1)将文件123.txt下载(拖拽)到桌面
2)将文件uksc.db上传(拖拽)到桌面、新建文件夹、删除测试
将个人日日程APP.zip包上传到目录下
2)将666.txt下载(拖拽)到桌面
anonymous_enable=NO
local_enable=YES //使用虚拟用户一定要启用本地用户
chroot_local_user=YES //将所有本地用户限制在家目录中(需添加)
guest_enable=YES //启用用户映射功能,允许虚拟用户登录(需添vim /etc/vsftpd/vconfig/vtext2
guest_username=vtext2
local_root=/var/ftp/noshare
anonymous_enable=NO #禁止本地登录
write_enable=YES #允许写入
local_umask=022
anon_upload_enable=NO #允许上传
anon_mkdir_write_enable=NO #允许创建文件夹
idle_session_timeout=600
data_connection_timeout=120
anon_world_readable_only=NO #允许浏览和下载
max_clients=10 #客户端允许最大访问量
max_per_ip=5
local_max_rate=1048576 #本地用户最大传输速度
anon_max_rate=1000000 #限定传输速度为1000KB/s
1)在/etc/下,删除vusers.db文件,重新将文本文件转化为数据库文件
2)再次登录Windows终端测试
1)想要使用db_load转换工具,需要先下载安装db*包
浏览器登录:Index of /ubuntu/pool/main/d/db5.3
)将下载好的db包进行安装
3)再次执行命令测试