uos-ftp部署文档

一、安装

  • 服务端安装
sudo apt install -y vsftpd
  • 客户端安装
sudo apt install -y ftp

二、配置项

配置文件路径:/etc/vsftpd.conf

类别 配置项 描述
匿名用户 anonymous_enable=yes 允许匿名用户访问,需local_enable开启才生效
anon_upload_enable=YES 允许匿名用户上传
anon_mkdir_write_enable=YES 允许匿名用户创建文件夹
anon_other_write_enable=YES 允许匿名用户删除、移动、修改等
anon_umask=077 匿名用户上传、创建文件的默认权限
全局用户配置 local_enable=YES 允许用户登录
write_enable=YES 允许用户上传、修改、移动、删除文件
local_umask=022 用户上传文件的默认权限
访问限制 chroot_local_user=YES 禁止所有用户离开家目录
chroot_list_enable=YES 启用配置文件限制,白名单模式
chroot_list_file=/etc/vsftpd/chroot_list 只允许该文件中用户离开家目录,其余用户都不可离开家目录,一行一个用户名
登录限制 userlist_enable=YES 启用配置文件限制
userlist_deny=NO NO白名单,YES黑名单
userlist_file=/etc/vsftpd_user_list 用户配置文件,一行一个用户名
性能限制 anon_max_rate=0 匿名用户最大下载速度
local_max_rate=0 用户最大下载速度
max_clients=2000 最大并发连接数
max_per_ip 单IP的最大并发连接数

三、实验

1.匿名用户登录

  • 修改配置文件
vim /etc/vsftpd.conf
anonymous_enable=YES
write_enable=YES

# 允许匿名用户上传
anon_upload_enable=YES
anon_mkdir_write_enable=YES

# 允许匿名用户删除、移动文件
anon_other_write_enable=YES
  • 创建公共目录
mkdir /srv/ftp/pub

# 必须要给定权限,否则会不能下载或上传
chown ftp:ftp /srv/ftp/pub
chmod 755 /srv/ftp/pub
  • 客户端测试
ftp 192.168.149.140

uos-ftp部署文档

# 查看
ls 

# 进入公共目录
cd pub

# !ls表示查看操作系统当前位置的文件,ls表示查看ftp当前位置下的文件
!ls

# 上传文件
put aaa

uos-ftp部署文档

2.用户登录

  • 创建用户
# 创建一个用户,要有家目录
useradd -m zhangsan

# 给用户设置密码
passwd zhangsan
  • 登录测试
ftp 192.168.149.140
zhangsan
123456

# 上传文件测试
>ls
>!ls
>put aaa

3.白名单或黑名单限制用户登录

ftp调用了pam模块认证,里面指向了/etc/ftpusers文件

cat /etc/pam.d/vsftpd

直接修改/etc/ftpusers,将需要禁止登录的账号添加进去即可禁止登录。

uos-ftp部署文档


自定义黑白名单用户列表

  • 创建一个用户列表文件
touch /etc/ftp_userlist

里面每行插入一个用户名即可

  • 修改ftp配置

vim /etc/vsftpd.conf插入以下配置

# 启用用户限制登录功能
userlist_enable=YES

# 指定用户列表文件
userlist_file=/etc/ftp_userlist

# 指定模式,如果为NO,则表示在ftp_userlist文件中的用户可以登录,其他用户不允许登录(白名单模式),否则相反。
userlist_deny=NO
  • 重启服务测试
systemctl restart vsftpd

uos-ftp部署文档

4.禁止用户离开家目录

chroot_local_user=YES #禁止所有本地用户离开家目录,需要去除家目录w权限才能生效。

chroot_list_enable=YES #开启后,只会允许文件中的用户切换目录

chroot_list_file=/etc/vsftpd/chroot_list #指定用户文件路径

# 创建3个用户
useradd -m user1
useradd -m user2
useradd -m user3
passwd user1
passwd user2
passwd user3

# 编辑vsftpd.conf
vim /etc/vsftpd.conf

chroot_local_user=YES 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list

# 重启服务
systemctl restart vsftpd.service

# 编辑用户文件
echo "user1" >> /etc/vsftpd/chroot_list
echo "user2" >> /etc/vsftpd/chroot_list

测试

  • user1

uos-ftp部署文档

  • user2

uos-ftp部署文档

  • user3

uos-ftp部署文档

5.虚拟用户

ftp用户登录使用的是ftp服务器的本地账号,当ftp账号密码泄露,会对服务器造成很大的风险。所以一般我们不给用户这种账号,而是使用一个虚拟账号。这样当这个虚拟账号密码泄露后,不会影响系统安全。

虚拟用户实际上是一个不存在于的操作系统的用户,ftp-server在进行认真的时候需要调用pam模块进行认证。因为虚拟用户不是系统用户,虚拟用户登录ftp需要一个身份权限,所以需要将虚拟用户映射到一个系统用户。

  • 创建一个系统用户用于映射虚拟用户
mkdir /srv/ftp/vuser
useradd -d /srv/ftp/vuser vuser
chown vuser.vuser /srv/ftp/vuser
  • 创建虚拟用户家目录
# 创建目录
mkdir /srv/ftp/vuser/user{1..3}

# 目录一定要给映射的用户属组权限
chown vuser.vuser /srv/ftp/vuser/user*
  • 创建pam认证用户数据库
# 创建一个FTP配置文件夹,便于管理
mkdir -p /etc/vsftpd

# 创建用户账号密码文件,一行账号,一行密码
vim /etc/vsftpd/vuser.txt

user1
123456
user2
123456
user3
123456

# 创建本地数据库,用于pam认证
apt search db | grep -E "^db" 
apt install -y db5.3-util
cd /etc/vsftpd
db5.3_load  -T  -t hash -f vuser.txt vuser.db

# 修改vsftpd pam模块配置文件
vim /etc/pam.d/vsftpd

# 注意,实际/etc/vsftpd/vuser文件名叫vuser.db
auth sufficient pam_userdb.so db=/etc/vsftpd/vuser
account sufficient pam_userdb.so db=/etc/vsftpd/vuser

sufficient:表示只要标记sufficient此项配置的模块一旦验证成功,立即返回成功。
required:表示此项配置的模块必须要验证成功,验证成功后还要验证其他的required,只有当所有的required验证成功才会返回成功。

  • 修改vsftpd配置文件
# 添加以下配置
vim /etc/vsftpd.conf

# 启用虚拟用户
guest_enable=YES
# 虚拟用户映射的系统用户
guest_username=vuser
# 指定虚拟用户配置文件目录
user_config_dir=/etc/vsftpd/vuser_conf
  • 给虚拟用户添加配置

虚拟用户的上传、删除等权限和匿名用户的配置项一样。

vim /etc/vsftpd/vuser_conf/user1
local_root=/srv/ftp/vuser/user1
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

vim /etc/vsftpd/vuser_conf/user2
local_root=/srv/ftp/vuser/user2
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

vim /etc/vsftpd/vuser_conf/user3
local_root=/srv/ftp/vuser/user3
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
  • 重启服务测试
systemctl restart vsftpd

uos-ftp部署文档

测试发现有500报错,这是因为vsftpd是非常安全的ftp,我们只需要把家目录的w权限去掉即可。

chmod a-w /srv/ftp/vuser
chmod a-w /srv/ftp/vuser/user*

uos-ftp部署文档

发现可以登录了,但是不能创建文件,因为我们把/srv/ftp/vuser/user1目录的w权限给去了,所以所有用户不能在此目录下创建、删除文件。解决办法很简单,我们在服务器上创建一个上传目录即可。

mkdir /srv/ftp/vuser/user1/upload 
chown vuser.vuser /srv/ftp/vuser/user1/upload 

uos-ftp部署文档

上一篇:xampp 支持php版本,支持php5.2的最后一版xampp——xampp-1.7.1


下一篇:5.配置设备密码