ftp服务的部署
1.部署ftp服务 (在server里)
实验:
getenforce #查看selinux的状态
vim /etc/sysconfig/selinux #编辑文件,将状态更改为disabled
###########
SELINUX=disabled
reboot #必须要重启
getenforce #查看状态是否更改成功
##如果出现报错,说明yum源出现问题,此时需要重新配置server的yum源
yum install vsftpd -y #安装ftp服务
systemctl start vsftpd #开启ftp服务
systemctl enable vsftpd #开机自动开启ftp服务
*******************
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service'
##报错,可以想到可能为火墙不允许
netstat -antlupe | grep vsftpd #查看端口是否开启
************
tcp6 0 0 :::21 :::* LISTEN 0 38048 1805/vsftpd
##开着的,所以肯定是火墙不允许
firewall-cmd --list-all #查看火墙允许的启用的服务
注意:此时火墙必须开启,才能查看到
****************
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ssh ##只允许ssh,未启用ftp
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
firewall-cmd --permanent --add-service=ftp #火墙启用ftp服务
firewall-cmd --reload #重新加载
firewall-cmd --list-all #检测火墙启用ftp服务是否添加成功
***************
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ftp ssh ##启用ftp成功
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
cd /var/ftp/ #默认ftp的文件都在/var内
ls
touch westosfile
ls
测试:
lftp 172.25.254.230 #(可以连接)
ls #可查看到刚建立的文件
quit #退出(断开连接)
(1)匿名用户家目录修改
实验:
mkdir /ftpdir/westosdir -p
vim /etc/vsftpd/vsftpd.conf
##########
添加 anon_root=/ftpdir #/ftpdir为 /目录名称
systemctl restart vsftpd #重启ftp服务
测试:
修改之前
lftp 172.25.254.230
ls
************
drwxr-xr-x 2 0 0 6 Mar 07 2014 pub
-rw-r--r-- 1 0 0 0 May 07 14:42 westosfile
修改之后
lftp 172.25.254.230
ls
**************
drwxr-xr-x 2 0 0 6 May 07 14:55 westosdir
(2)匿名用户是否可以登陆
实验:
vim /etc/vsftpd/vsftpd.conf
##########
将 anonymous_enable=YES 改为 NO #匿名用户不能登陆
systemctl restart vsftpd
测试:
lftp 172.25.254.230 #匿名用户
ls #无法连接
*******
`ls' at 0 [Sending commands...]
Interrupt
(3)本地用户是否可以登陆
实验:
vim /etc/vsftpd/vsftpd.conf
##########
将 local_enable=YES 改为 NO #本地用户不能登陆
systemctl restart vsftpd
id westos #查看是否有westos用户
useradd westos #若没有,则新建
passwd westos #设置用户新密码
测试:
修改前
lftp 172.25.254.230 -u westos
ls
quit
lftp 172.25.254.230 -u westos #本地用户
#注意:必须有这个用户,没有则需自己新建westos用户并设定新密码
ls #无法连接
***********
ls: Login failed: 530 This FTP server is anonymous only.
quit
(4)匿名用户和本地用户是否可写
实验:
vim /etc/vsftpd/vsftpd.conf
##########
anonymous_enable=YES #将NO改回YES
local_enable=YES #将NO改回YES
将 write_enable=YES 改为NO
systemctl restart vsftpd
测试:
lftp 172.25.254.230
ls
put /etc/passwd #无法上传 但可以新建文件
***********
put: Access failed: 550 Permission denied. (passwd)
(5)匿名用户建立目录
实验:
vim /etc/vsftpd/vsftpd.conf
################
write_enable=YES #将NO改回YES
33 anon_mkdir_write_enable=YES #取消注释
systemctl restart vsftpd
测试:
lftp 172.25.254.230
cd /pub
mkdir westos
ls
(6)匿名用户上传
实验:
vim /etc/vsftpd/vsftpd.conf
##############
write_enable=YES #将NO改回YES
29 anon_upload_enable=YES #取消注释
systemctl restart vsftpd #重启
chgrp ftp /var/ftp/pub #更改文件所有组
chmod 775 /var/ftp/pub #更改权限
测试:
lftp 172.25.254.230
ls
cd /pub
put /etc/group #上传
************
995 bytes transferred #上传成功
ls
************
-rw------- 1 14 50 995 May 05 08:41 group
(7)匿名用户下载
实验:
vim /etc/vsftpd/vsftpd.conf
################
写入 anon_world_readable_only=NO #匿名用户不能下载
systemctl restart vsftpd
测试:
lftp 172.25.254.230
cd /pub
get etc/passwd #无法下载
***********
get: Access failed: 550 Failed to open file. (etc/passwd)
ls
quit
(8)匿名用户删除
实验:
vim /etc/vsftpd/vsftpd.conf
################
写入 anon_other_write_enable=YES #匿名用可以删除文件
systemctl restart vsftpd
测试:
修改前
修改后
lftp 172.25.254.230
cd /pub
ls
rm -r westos
ls
(9)限速
实验:
dd if=/dev/zero of=/mnt/bigfile bs=1M count=2000 #截取
vim /etc/vsftpd/vsftpd.conf
###############
写入 anon_max_rate=102400 #限制上传速度
##默认情况下,所有用户的上传速度较快,这样很不安全,所以限制上传速度
systemctl restart vsftpd
测试:
lftp 172.25.254.230
cd /pub
ls
put /mnt/bigfile #上传文件(可查看到上传速度)
(10)匿名用户权限的更改
实验:
vim /etc/vsftpd/vsftpd.conf
###############
#anon_max_rate=102400 #注释或者删除限速
写入 anon_umask=022 #更改匿名用户的权限
systemctl restart vsftpd
测试:
lftp 172.25.254.230
cd /pub
ls
rm -r bigfile #删除原先上传的文件
ls
put /mnt/bigfile #重新上传
ls #权限更改为644
(11)本地用户的权限的更改
实验:
vim /etc/vsftpd/vsftpd.conf
###############
将 local_umask=022 改为 077 #修改本地用户的权限
systemctl restart vsftpd
测试:
lftp 172.25.254.230
cd /pub
ls
rm -r bigfile #删除原先上传的文件
ls
put /mnt/bigfile #重新上传
ls
-rw-r--r-- 1 14 50 2006974464 May 06 02:22 bigfile #权限变为644
(12)限制本地用户浏览/目录(将本地用户锁定到自己的家目录中)
实验:
chmod u-w /home/*
vim /etc/vsftpd/vsftpd.conf
###############
103 chroot_local_user=YES #取消注释,YES表示本地用户不能访问/目录
systemctl restart vsftpd
测试:
修改前
修改后
lftp 172.25.254.230 -u student
cd /
ls #不能访问/目录
黑名单(不能访问/目录)
实验:
vim /etc/vsftpd/vsftpd.conf
###############
103 chroot_local_user=NO #本地用户能访问
104 chroot_list_enable=YES #取消注释
106 chroot_list_file=/etc/vsftpd/chroot_list #取消注释
systemctl restart vsftpd
vim /etc/vsftpd/chroot_list
##############
student
测试:
lftp 172.25.254.230 -u student
cd /
ls (不能访问)
lftp 172.25.254.230 -u westos
cd /
ls (能访问)
白名单
实验:
vim /etc/vsftpd/vsftpd.conf
###############
103 chroot_local_user=YES #本地用户不能访问
104 chroot_list_enable=YES #取消注释
106 chroot_list_file=/etc/vsftpd/chroot_list #取消注释
systemctl restart vsftpd
vim /etc/vsftpd/chroot_list
##############
student
测试:
lftp 172.25.254.230 -u student
cd /
ls (能访问)
lftp 172.25.254.230 -u westos
cd /
ls (不能访问)
(13)用户的黑名单(不能登陆)
ftpusers #永久性的黑名单
user_list #临时性的黑名单
##默认情况下user_list 是黑名单,但在特定的情况下它可以变为白名单
(1)ftpusers #永久性的
实验:
cd /etc/vsftpd
ls
************
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
vim ftpusers
##############
student
测试
lftp 172.25.254.230 -u student
ls
*********
ls: Login failed: 530 Login incorrect.
quit
vim ftpusers
##############
删除student
lftp 172.25.254.230 -u student
ls
*********
-rw-r--r-- 1 0 0 8 May 06 03:21 ftpusers
drwxr-xr-x 2 0 0 6 May 06 02:44 pub
(2)user_list #临时性的
实验1:
vim user_list
##############
student
测试:
lftp 172.25.254.230 -u student
ls
*********
ls: Login failed: 530 Login incorrect.
quit
实验2:
vim /etc/vsftpd/vsftpd.conf #编辑主配置文件
################
129 userlist_enable=YES
130 写入 userlist_deny=NO #所有用户都不能登陆
systemctl restart vsftpd
vim user_list ##此时黑名单变为白名单
#############
student
测试:
lftp 172.25.254.230 -u student
ls
************
-rw-r--r-- 1 0 0 8 May 06 03:21 ftpusers
drwxr-xr-x 2 0 0 6 May 06 02:44 pub
(14)ftp虚拟用户的设定
实验之前需要做的操作:
vim /etc/vsftpd/vsftpd.conf
#############
130 userlist_deny=NO #将其注释或者删除
systemctl restart vsftpd
vim user_list
#########
删除刚添加的用户名
vim ftpusers
#########
删除刚添加的用户名
实验:
ls
**********
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
vim /etc/vsftpd/westosfile #设定虚拟用户及其密码
###############
ftpuser1 #用户
123 #密码
ftpuser2
123
ftpuser3
123
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db #哈希加密
vim /etc/pam.d/westos
##############
account required pam_userdb.so db=/etc/vsftpd/westosfile
#帐号 服务插件
auth required pam_userdb.so db=/etc/vsftpd/westosfile
#密码
useradd ftpuser #建立用户
vim /etc/vsftpd/vsftpd.conf
##############
128 pam_service_name=westos
129 guest_enable=YES
写入 130 guest_username=ftpuser
systemctl restart vsftpd
chmod u-w /home/ftpuser #给权限
测试:
lftp 172.25.254.230 -u ftpuser1
ls #(可以登陆)
(15)虚拟帐号家目录独立设定
实验:
mkdir /vftpdir #注意在home(~)下直接建立目录/vftpdir
cd /vftpdir
mkdir ftpuser{1..3}
touch ftpuser1/user1file #在目录ftpuser{1..3}中分别建立文件user1file,userfile2,userfile3
touch ftpuser2/user2file
touch ftpuser3/user3file
vim /etc/vsftpd/vsftpd.conf
#################
local_root=/vftpdir/$USER
user_sub_token=$USER
systemctl restart vsftpd
测试:
lftp 172.25.254.230 -u ftpuser1
Password:
lftp [email protected]:~> ls
-rw-r--r-- 1 0 0 0 May 06 07:48 user1file
注意:虚拟用户的参数更改依赖于匿名用户
实验:
mkdir ftpuser{1..3}/pub
vim /etc/vsftpd/vsftpd.conf
################
#non_upload_enable=YES #注释此行 (上传)
systemctl restart vsftpd
测试:
修改前
lftp 172.25.254.230 -u ftpuser1
cd /pub
put /etc/passwd #上传成功
修改后lftp 172.25.254.230 -u ftpuser1
cd /pub
put /etc/passwd #上传失败
******************
put: Access failed: 550 Permission denied. (passwd)