Vsftpd服务的部署及优化

1. ftp安装及启用

ftp:file transfer proto------互联阿中最老牌的文件传输协议

[root@localhost ~]# getenforce
Disabled
[root@localhost ~]# vim /etc/selinux/config ##如果不是Disabled,编辑文件
SELINUX=disabled
[root@localhost ~]# reboot

[root@localhost yum.repos.d]# dnf install vsftpd -y
[root@localhost yum.repos.d]# systemctl enable --now vsftpd
[root@localhost yum.repos.d]# systemctl status firewalld 
[root@localhost yum.repos.d]# ss -antlupe | grep ftp  
tcp     LISTEN   0        32                     *:21                  *:*       users:(("vsftpd",pid=9756,fd=3)) ino:52315 sk:2 v6only:0 <->        
##ftp分为主动模式和被动模式。
##主动模式:数据访问端口是21,数据传输端口是20
##被动模式:数据访问端口是21,数据传输端口是随机开启一个大于1024的端口
## 被动访问模式更加安全,数据传输端口不固定,ftp默认用到的是被动模式。

[root@localhost yum.repos.d]# rpm -qc vsftpd
/etc/vsftpd/vsftpd.conf
[root@localhost yum.repos.d]# vim /etc/vsftpd/vsftpd.conf 
12 anonymous_enable=YES			##启动匿名用户的访问功能
[root@localhost yum.repos.d]# systemctl restart vsftpd
[root@localhost yum.repos.d]# lftp 172.25.254.112
lftp 172.25.254.112:~> ls
drwxr-xr-x    2 0        0               6 Feb 17  2020 pub
[root@localhost yum.repos.d]# ls -ld /var/ftp
[root@localhost yum.repos.d]# cd /var/ftp
[root@localhost ftp]# touch /var/ftp/westosfile

##允许真机访问                 
[root@localhost ftp]# firewall-cmd --permanent  --add-service=ftp ## 如果火墙开启状态
success
[root@localhost ftp]# firewall-cmd --reload 
success
[root@localhost ftp]# firewall-cmd --list-all
[root@localhost yum.repos.d]# lftp 172.25.254.112  
lftp 172.25.254.112:~> ls
drwxr-xr-x    2 0        0               6 Feb 17  2020 pub
-rw-r--r--    1 0        0               0 Jun 27 09:08 westosfile

2. vsftpd基本信息

  • 服务名称: vsftpd.service
  • 配置目录: /etc/vsftpd
  • 主配置文件: /etc/vsftpd/vsftpd.conf
  • 默认发布目录: /var/ftp
  • 报错信息:
    550 ##程序本身拒绝
    553 ##文件系统权限限制
    500 ##权限过大
    530 ##认证失败

3. 匿名用户访问控制

[root@13 ftp]# man 5 vsftpd.conf ##查看帮助
[root@13 ftp]# journalctl -xe    ##查看日志错误

## 上传控制
[root@13 ftp]# chgrp ftp /var/ftp/pub
[root@13 ftp]# chmod 775 /var/ftp/pub
[root@13 ftp]# ll -d /var/ftp/pub   
[root@13 ftp]# vim /etc/vsftpd/vsftpd.conf
 29 anon_upload_enable=YES                 ##上传控制
[root@13 ftp]# systemctl restart vsftpd

##测试
[root@13 ftp]# lftp 192.168.0.66
lftp 192.168.0.66:~> ls
lftp 192.168.0.66:/> cd pub
lftp 192.168.0.66:/pub> put /etc/passwd
lftp 192.168.0.66:/pub> ls
-rw-------    1 14       50           2798 Nov 17 14:45 passwd
lftp 192.168.0.66:/pub> quit
[root@13 ftp]# id ftp
uid=14(ftp) gid=50(ftp) groups=50(ftp)
 ##删除重命令控制
30 anon_other_write_enable=YES           
lftp 192.168.0.66:/pub> rm group
rm ok, `group' removed
lftp 192.168.0.66:/pub> mv passwd hello
rename successful

##目录建立控制
35 anon_mkdir_write_enable=YES            
lftp 192.168.0.66:/pub> mkdir test
mkdir ok, `test' created

##下载控制
31 anon_world_readable_only=NO                                
 lftp 192.168.0.66:/pub> get hello
2798 bytes transferred
目录是用 mirror westos/ 下载

 ##匿名用户上传文件的用户身份设定
50 chown_uploads=YES
51 #chown_username=whoever
52 chown_username=westos      
lftp 192.168.0.66:/pub> put /etc/passwd
2798 bytes transferred
lftp 192.168.0.66:/pub> ls
-rw-------    1 14       50           2798 Nov 17 14:45 hello
-rw-------    1 1000     50           2798 Nov 17 15:26 passwd
[root@13 ftp]# id westos
uid=1000(westos) gid=1000(westos) groups=1000(westos)
 ## 匿名用户上传文件权限设定
 32 anon_umask=022      ##添加行       
lftp 192.168.0.66:/pub> put /etc/inittab
490 bytes transferred                       
lftp 192.168.0.66:/pub> ls
-rw-r--r--    1 14       50            490 Nov 17 15:29 inittab

##匿名用户上传文件的用户身份设定和umask同时开启,022不起作用,因为不是匿名上传,而是指定用户身份的。
 50 chown_uploads=YES                                
 51 #chown_username=whoever                                 
 52 chown_username=westos
lftp 192.168.0.66:/pub> put /etc/group
1026 bytes transferred
lftp 192.168.0.66:/pub> ls
-rw-------    1 0        50           1026 Nov 17 15:32 group
-rw-r--r--    1 14       50            490 Nov 17 15:29 inittab
 
##匿名用户上传文件的用户身份设定和umask同时开启,设置上传文件权限
 53 chown_upload_mode=0644       ##添加行  
lftp 192.168.0.66:/pub> put /etc/shadow
1435 bytes transferred
lftp 192.168.0.66:/pub> ls
-rw-r--r--    1 1000     50           1435 Nov 17 15:35 shadow
##家目录控制
[root@13 ~]# mkdir /westos_ftp
[root@13 ~]# touch /westos_ftp/westosfiletest
 33 anon_root=/westos_ftp               ##添加行        
[root@13 ~]# lftp 192.168.0.66
lftp 192.168.0.66:~> ls
-rw-r--r--    1 0        0               0 Nov 17 16:22 westosfiletest

##登陆数量控制    
34 max_clients=2    ##添加行  
                     
##上传速率控制
 35 anon_max_rate=102400               ##添加行  
lftp 192.168.0.66:/pub> put /proc/kcore

4. 本地用户的访问

[linux@13 ~]# useradd lee
[linux@13 ~]# useradd linux
[root@13 ftp]# echo westos | passwd --stdin lee
[root@13 ftp]# echo westos | passwd --stdin linux
[root@13 ftp]# su - linux
[linux@13 ~]$ touch linuxfile
[root@13 ftp]# su - lee
[lee@13 ~]$ touch leefile
[root@13 ftp]# ls -ld /home/*


[root@13 ftp]# lftp 192.168.0.66 -u lee  #每个用户登陆默认都在自己的家目录内
Password: 
lftp lee@192.168.0.66:~> ls                      
-rw-r--r--    1 0        0               0 Nov 17 16:20 westosfiletest
[root@13 ftp]# vim /etc/vsftpd//vsftpd.conf 
 16 local_enable=YES   ##登陆控制
 17 local_root=/westos_ftp   ##指定用户家目录
[root@13 ftp]# systemctl restart vsftpd

[root@13 ftp]# lftp 192.168.0.66 -u lee  
Password: 
lftp lee@192.168.0.66:~> ls                      
-rw-r--r--    1 0        0               0 Nov 17 16:22 westosfiletest

 24 local_umask=077   ##上传文件权限控制
 20 write_enable=YES   ##写权限控制  本地用户可上传

[root@13 ftp]# lftp 192.168.0.66 -u lee  
Password: 
lftp lee@192.168.0.66:~> cd / 
[root@13 ftp]# chmod u-w /home/*  
109 chroot_local_user=YES     ####锁定用户到自己的家目录中,不让浏览其他目录
110 chroot_list_enable=YES      ##默认情况下不允许切换到根目录
111 # (default follows)
112 chroot_list_file=/etc/vsftpd/chroot_list
[root@13 ftp]# vim /etc/vsftpd/chroot_list
westos    ##锁定用户到自己的家目录中的白名单
[root@13 ftp]# lftp 192.168.0.66 -u westos  ##可以切换到根目录

chroot_local_user=NO   ##默认情况下允许访问根目录,都可以切换到根目录
[root@13 ftp]# vim /etc/vsftpd/chroot_list    ##锁定用户到自己的家目录中的黑名单
westos                                        ##不能访问根目录
[root@localhost home]# cd /etc/vsftpd/
[root@localhost vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh    ##ftpusers永久黑名单   user_list临时黑名单
[root@localhost vsftpd]# vim user_list
westos 
[root@13 vsftpd]# vim ftpusers
westos
[root@13 vsftpd]# lftp 192.168.0.66 -u westos ##不能登陆

[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf
136 userlist_deny=NO	#添加行 设定/etc/vsftpd/user_list位白名单 不在名单中的用户不能登陆ftp
[root@localhost vsftpd]# systemctl restart vsftpd
[root@13 vsftpd]# vim /etc/vsftpd/user_list 
westos   ##可以登陆  永久黑名单优先级最高

5. 虚拟用户访问

5.1建立虚拟用户过程
[root@localhost vsftpd]# vim authfile	#建立认证文件模板
user1
123
user2
123
user3
123
[root@localhost vsftpd]# db_load -T -t hash -f authfile authfile.db	##加密认证文件     -T 转换 -t type -f 指定转换文件
[root@localhost vsftpd]# file authfile.db
authfile.db: , created: Thu Jan  1 00:34:08 1970
[root@localhost vsftpd]# cat authfile.db 
��/���s���,эh^123user2
[root@server1 vsftpd]# 

[root@localhost vsftpd]# vim /etc/pam.d/ftp-auth
account		required	pam_userdb.so		db=/etc/vsftpd/authfile	
auth		required	pam_userdb.so		db=/etc/vsftpd/authfile

[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf
134 pam_service_name=ftp-auth		##指定认证策略文件
135 guest_enable=YES			##指定虚拟用户功能开启
136 guest_username=ftp			##指定虚拟用户在ftp服务器上的用户身份

[root@localhost ~]# lftp 192.168.0.1 -u user1
Password: 
lftp user1@192.168.0.1:~> ls                    
-rw-r--r--    1 0        0            1208 Jun 27 10:04 passwd
drwxrwxr-x    3 0        50             32 Jun 27 10:04 pub
-rw-r--r--    1 0        0               0 Jun 27 09:08 westosfile
            
5.2虚拟用户家目录的独立设定
[root@localhost ~]# mkdir -p /var/ftphome/user{1..3}
[root@localhost ~]# touch /var/ftphome/user1/user1file
[root@localhost ~]# touch /var/ftphome/user2/user2file
[root@localhost ~]# touch /var/ftphome/user3/user3file
[root@13 vsftpd]# mkdir -p /var/ftphome/user{1..3}/westos

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
139 local_root=/var/ftphome/$USER
140 user_sub_token=$USER
[root@localhost ~]# systemctl restart vsftpd

[root@localhost ~]# lftp 192.168.0.1 -u user1
Password: 
lftp user1@192.168.0.1:~> ls                    
-rw-r--r--    1 0        0               0 Jun 28 02:57 user1file
drwxrwxr-x    2 0        50              6 Jun 28 02:57 westos

5.3用户配置独立
[root@localhost user1]# chmod 775 /var/ftphome/user{1..3}/westos
[root@localhost user1]# chgrp ftp /var/ftphome/user{1..3}/westos
[root@localhost ~]# mkdir /etc/vsftpd/confdir
[root@localhost ~]# touch /etc/vsftpd/confdir/user1

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
30 # anon_upload_enable=YES
#anon_other_write_enable=YES
#anon_world_readable_only=NO
#anon_umask=022
#max_clients=2
141 user_config_dir=/etc/vsftpd/confdir

[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# vim /etc/vsftpd/confdir/user1
anon_upload_enable=YES       ##设定完成后只有user1用户可以上传文件
[root@localhost ~]# lftp 192.168.0.1 -u user1
Password: 
lftp user1@192.168.0.1:~> ls                    
-rw-r--r--    1 0        0               0 Jun 28 02:57 user1file
drwxrwxr-x    2 0        50              6 Jun 28 02:57 westos
lftp user1@192.168.0.1:/> cd westos/
lftp user1@192.168.0.1:/westos> put /etc/passwd
1249 bytes transferred
lftp user1@192.168.0.1:/westos> exit
[root@localhost ~]# lftp 192.168.0.1 -u user2
Password: 
lftp user2@192.168.0.1:~> ls                    
-rw-r--r--    1 0        0               0 Jun 28 02:57 user2file
drwxrwxr-x    2 0        50              6 Jun 28 02:57 westos
lftp user2@192.168.0.1:/> cd westos/
lftp user2@192.168.0.1:/westos> put /etc/passwd
put: /etc/passwd: Access failed: 550 Permission denied. (passwd)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值