一、ftp的定义:ftp: // ##文件传输协议
二、ftp协议提供的软件
在rhel7中:vsftpd
三、部署ftp服务
1.编辑selinux配置文件,将selinux的状态改为disabled,重启服务
查看,修改成功
2.配置yum源
[root@server_sshd ~]# cd /etc/yum.repos.d ##切换到 yum.repos.d路径下
[root@server_sshd yum.repos.d]# vim rhel_dvd.repo ##编辑
[root@server_sshd yum.repos.d]# yum clean all ##清空
[root@server_sshd yum.repos.d]# yum install vsftpd lftp -y ##安装
[root@server_sshd yum.repos.d]# systemctl start vsftpd
5.查看火墙状态并添加ftp服务
[root@server_sshd yum.repos.d]# firewall-config
[root@server_sshd ftp]# firewall-cmd --list-all
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ftp ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
[kiosk@foundation29 ~]$ lftp 172.25.254.229
lftp 172.25.254.229:~> ls
drwxr-xr-x 2 0 0 6 Mar 07 2014 pub
lftp 172.25.254.229:/> quit
[root@server_sshd ftp]# touch westos
真机查看
[kiosk@foundation29 ~]$ lftp 172.25.254.229
lftp 172.25.254.229:~> ls
drwxr-xr-x 2 0 0 6 Mar 07 2014 pub
-rw-r--r-- 1 0 0 0 Jan 2303:25westos
软件安装包 | vsftpd |
---|---|
默认发布目录 | /var/ftp |
协议接口 | 21/tcp |
服务配置文件 | /etc/vsftpd/vsftpd.conf |
报错id解析500 | 文件系统权限过大 |
530 | 用户认证失败 |
550 | 服务本身功能未开放 |
553 | 本地文件系统权限过小 |
四、ftp的安全部署
1.anonymous_enable=YES|NO ##匿名用户是否可以登陆
例:匿名用户可以登陆
编辑配置文件,一定要重启服务
[root@server_sshd ftp]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
[root@server_sshd ftp]# systemctl restart vsftpd
[kiosk@foundation29 ~]$ lftp 172.25.254.229
lftp 172.25.254.229:~> ls
drwxr-xr-x 2 0 0 6 Mar 07 2014 pub
-rw-r--r-- 1 0 0 0 Jan 2303:25westos
[root@server_sshd ftp]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
[root@server_sshd ftp]# systemctl restart vsftpd
[kiosk@foundation29 ~]$ lftp 172.25.254.229
lftp 172.25.254.229:~> ls
Interrupt
(1)local_enable=YES|NO ##本地用户是否可以登陆
(2)write_enable=YES|NO ##ftp是否对登陆用户可写
例:本地用户可以登陆
编辑配置文件:
[root@server_sshd ftp]# vim /etc/vsftpd/vsftpd.conf
local_enable=YES
[root@server_sshd ftp]# systemctl restart vsftpd
[kiosk@foundation29 ~]$ lftp 172.25.254.229 -u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> quit
[root@server_sshd ftp]# vim /etc/vsftpd/vsftpd.conf
local_enable=NO
[root@server_sshd ftp]# systemctl restart vsftpd
例:ftp对登陆用户不可写
编辑配置文件:
测试:
3.匿名用户上传
(1)编辑配置文件:
[root@server_sshd ftp]# vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
[root@server_sshd ftp]# systemctl restart vsftpd
(2)测试:报553错误,权限过小
(3)修改匿名用户目录的所有组并给所有组添加可写的权限
(4)测试:上传成功
4.匿名用户家目录修改
anon_root=/direcotry
<1>编辑配置文件:
<2>建立目录/westos,在目录里建立三个文件
<3>测试:家目录变为新建目录中的内容
5.匿名用户上传文件默认权限修改
anon_umask=xxx
编辑配置文件:
测试:
注释掉设置,重启服务
测试:权限变为原来的
6.匿名用户建立目录
anon_mkdir_write_enable=YES
编辑配置文件:
测试:建立test成功
7.匿名用户下载
anon_world_readable_only=YES|NO 参数NO表示匿名用户可以下载
(1)匿名用户可以下载
编辑配置文件:
测试:下载成功
(2)匿名用户不可以下载
编辑配置文件:
测试:报550错误
8.匿名用户删除
anon_other_write_enable=YES|NO ( YES表可删除)
(1)匿名用户可以删除
编辑配置文件:
测试:删除 adjtime
(2)匿名用户不可以删除
编辑配置文件:
测试:没有删除
9.匿名用户使用的用户身份修改
编辑配置文件:
测试:
10.最大上传速率
anon_max_rate=102400
<1>截取文件,用于测试上传速率
<2>不限速情况上传速率很大
<3>编辑配置文件,将最大速率改为102400
<4>测试:上传速率很慢
11.最大链接数
max_clients=1 表示最多有一个可以连接
<1>编辑配置文件,设置只有一个可以连接
<2>测试:
在重新打开一个shell,进行连接,连接失败
12.本地用户家目录修改
anon_root=/direcotry
编辑配置文件:
测试:
13.本地用户上传文件权限
local_umask=077
编辑配置文件:
测试:
14.限制本地用户浏览目录
(1)所有用户被锁定到自己的家目录中
1.默认情况下本地用户可以浏览根目录
编辑配置文件:
[root@server_sshd student]# vim /etc/vsftpd/vsftpd.conf
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
[root@server_sshd student]# touch /etc/vsftpd/chroot_list
[root@server_sshd student]# vim /etc/vsftpd/chroot_list
student
student用户不可以浏览根目录
(3)用户白名单建立
1.编辑配置文件
[root@server_sshd student]# vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
[root@server_sshd student]# vim /etc/vsftpd/chroot_list
student
测试: student用户可以浏览根目录
westos用户不可以浏览根目录
15.限制本地用户登陆
(1)设置永久黑名单为student
[root@server_sshd vsftpd]# vim ftpusers ##用户永久黑名单
测试:student用户认证失败
westos用户登录成功
(2))设置临时黑名单为westos
[root@server_sshd vsftpd]# vim user_list ##用户临时黑名单
westos
测试:westos用户认证失败
(3)用户白名单设定
1.编辑配置文件
[root@server_sshd vsftpd]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
注意:修改userlist_deny=NO时,user_list就变成用户白名单(只有在名单中出现的用户才可以登录)
2.设置白名单为westos
[root@server_sshd vsftpd]# systemctl restart vsftpd
[root@server_sshd vsftpd]# vim user_list
测试:westos用户登录成功
student用户登录失败
五、虚拟用户的设定
(1)建立虚拟用户
建立方式:
1.创建虚拟账号身份
[root@server_sshd ~]# cd /etc/vsftpd/
[root@server_sshd vsftpd]# vim userfile
[root@server_sshd vsftpd]# cat userfile
westos1 ##虚拟用户
123 ##密码
westos2 ##虚拟用户
123 ##密码
westos3 ##虚拟用户
123 ##密码
2.加密文件
3.查看文件类型,hash加密
4. vim /etc/pam.d/ftpauth (验证密码与用户是否一致的文件)
注意:required表示用户名认证必须正确,否则直接pass
db=/etc/vsftpd/userfile,后边不能加.db,
如果写成db=/etc/vsftpd/userfile.db,则会将文件识别成userfile.db.db
5…编辑配置文件,一定要重启服务
测试:虚拟用户创建成功可以登录
(2)虚拟账号家目录独立设定
1.编辑配置文件,任意用户访问都是自己的家目录
2.建立家目录,家目录中分别添加文件
测试:
(3)虚拟账号配置独立
1.编辑配置文件
2.建立/etc/vsftpd/user_config目录,编辑虚拟用户westos1的配置文件,在配置文件中写入可上传功能
3.修改/var/ftpuserdir/westos*/pub目录的权限和所有组的权限