ftp(文件传输协议)是INTERNET上仍常用的最老的网络协议之一,它为系统提供了通过网络与远程服务器进行传输的简单方法,ftp服务器包的名称为vsftpd,默认配置文件让anonymous用户只能下载位于chroot目录中的内容。/var/ftp/这意味着远程ftp客户端能以用户anonymous或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)
ftp和vsftpd
ftp(文件传输协议)它是属于网络传输协议的应用层;
vdftpf:安全性是它最大的特点;vsftpf是一个unix类操作系统上运行的服务器的名称,是一个完全免费的、开放的源代码的ftp服务器软件。
ftp的定义
ftp://ip ##文件传输协议
ftp协议提供的软件
在rhel7中:vsftpd
ftp服务的基本信息
软件安装包:vsftpd
默认发布目录:/var/ftp ##匿名用户登陆上去的家目录,本地的普通用户登陆是真机上的家目录;
协议接口:21/tcp
服务配置文件:/etc/vsftpd/vsftpd.conf
访问数据端口:21
数据传输端口:>1024的随即端口
部署ftp服务之前注意:
关闭内核级加强级防火墙selinux
关闭selinux内核防火墙
[root@localhost ~]# getenforce ##查看selinux的状态
Enforcing ##强制开启
应该关闭selinux:
临时关闭:
setenforce 0|1 开启|警告
永久关闭:
将selinux改为disabled
进入配置文件:vim /etc/sysconfig/selinux
SELINUX=disabled ##开启自动关闭内核级防火墙
reboot ##重新启动
再次查看:
[root@localhost ~]# getenforce
disabled
** **
**** *****
***** ******
部署ftp服务
yum search ftp
yum install vsftpd.x86_64 -y
systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd
lftp与vsftpd不是一个东西,它们是两个程序; **
浏览器访问: ftp://172.25.254.60(主机ip) **
或者远程访问 lftp 172.25.254.60 **
1.安装lftp
yum install lftp -y
测试
lftp 172.25.254.60
正常链接,成功;
查看防火墙的状态:systemctl status firewalld.service
若防火墙被锁住,解锁:systemctl unmask firewalld.service
打开防火墙:systemctl start firewalld.service
查看防火墙的状态:systemctl status firewalld.service
(1)图形化中加入ftp服务
打开图形化界面加入服务
firewall-config
操作:
左侧public ————》加入ftp————》configuration:Permanent————》options:reload firewalld
(2)非图形化界面加入ftp服务:
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
firewall-cmd --list-al
##查看ftp是否添加到防火墙服务当中;
测试:
[root@local]lftp 172.25.254.10
lftp 172.25.254.9:~> ls
drwxr-xr-x 2 0 0 6 Jun 23 2016 pub
netstat -antulpe | grep vsftpd
21 主动模式: 连接端口为21,数据传输端口,随即开一个;
客户端主动访问服务端叫主动
被动是服务端把东西推送到客户端
(1)访问方式
lftp 172.25.254.60 ##匿名登录 --> /var/ftp 直接登陆不需要密码;
lftp 172.25.254.60 -u student ##student用户登录 --> /home/student 需要输入密码才能登陆;
(2)/etc/vsftpd/vsftpd.conf
配置文件中的原内容:
5、进入配置文件:
vim /etc/vsftpd/vsftpd.conf
(1)用户
##匿名用户
anonymous_enable=YES | NO
##匿名用户是否可以登录
##本地用户
local_enable=YES | NO
##本地用户是否可以登录
write_enable=YES | NO
##ftp是否对登陆用户是否可写
(2)匿名登录时,家目录是/var/ftp/
(3)本地用户登录时,家目录是真机用户(本机用户)lee的家目录;如:
[root@localhost vsftpd]# touch /home/lee/file{1..2} ##1、本机用户lee在家目录/home/lee/下建立文件file{1..2}
[root@localhost vsftpd]# ll /home/lee/ ##2、本机用户lee查看家目录/home/lee/下是否存在文件file{1..2}
total 0
-rw-r--r--. 1 root root 0 Jul 31 21:54 file1
-rw-r--r--. 1 root root 0 Jul 31 21:54 file2
[root@localhost vsftpd]# lftp 172.25.254.210 -u lee ##3、以本机用户lee的身份登陆
Password: ##4、本地用户登录需要本地用户密码
lftp [email protected]:~> ls ##5、可见文件file{1..2},因此本地用户登录默认在本地用户的家目录下
-rw-r--r-- 1 0 0 0 Jul 31 13:54 file1
-rw-r--r-- 1 0 0 0 Jul 31 13:54 file2
lftp [email protected]:~> rm file1 ##5、允许登陆用户可删除
rm ok, `file1' removed
lftp [email protected]:~> ls
-rw-r--r-- 1 0 0 0 Jul 31 13:54 file2
lftp [email protected]:~> mkdir test
mkdir ok, `test' created
lftp [email protected]:~> exit
[root@localhost vsftpd]# ll /home/lee/
total 0
-rw-r--r--. 1 root root 0 Jul 31 21:54 file2
drwxr-xr-x. 2 lee lee 6 Jul 31 21:57 test
pub目录只对超级用户可写
(4)本地用户上传文件默认权限修改
local_umask=xxx 改成022
如果原文件的初始化权限是777,那么执行命令umask 022以后,该文件的权限会变成755 **相当于777-022=755 *
(5)##匿名用户上传
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES ##配置文件的29行;
直接上传文件:put /etc/group
出现报错553,文件权限过小
[root@localhost vsftpd]# lftp 172.25.254.210
lftp 172.25.254.210:~> ls
drwxr-xr-x 2 0 0 6 Jun 23 2016 pub
lftp 172.25.254.210:/> cd pub
lftp 172.25.254.210:/pub> put /etc/group
put: Access failed: 553 Could not create file. (group)
lftp 172.25.254.210:/pub>
chmod 777 /var/ftp/pub
chgrp root /var/ftp/pub ##文件权限为777的话,root组文件不安全,因为这样任何人都可以root用户的身份对文件随意进行修改;
为了保证文件更加安全,首先查看上传的文件的用户组,然后再查一下目录/var/ftp/pub的权限,将其目录的用户组改成相同的,可以提高安全性,防止所有人以root的身份操作;
修改为
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub ##将组设置成ftp更加安全;
修改后还是报错553;
原因:1、getenforce没有关闭(Enforcing)
修改:setenforce 0|1 设置成警告|强制模式;
2、匿名用户不能直接在家目录(/var/ftp)下直接上传文件;
3、文件权限不够,将目录权限改为775,所有组改为ftp
(6)##匿名用户可下载
anon_world_readable_only=YES|NO
(7)##匿名用户建立目录
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
若为NO的话,会报550的错;
(9)#匿名用户家录修改
anon_root=/westos
anon_umask=xxx 改成022
(11)#匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student(root用户不建议,因root像大boss一样,无人能控制,但该用户必须是本地用户)
(12)#最大上传速率
anon_max_rate=102400 单位:字节 100k
dd if=/dev/zero of=/mnt/bigfile bs=1M count=1500
上传测试
(20)#最大链接个数
max_clients=2
(21)#本地用户家目录修改
local_root=/westos
(22)#本地用户上传文件权限
local_umask=xxx
(23)#限制本地用户浏览根目录
所有用户被锁定到自己的加目录中(修改之前不仅可以在自己家目录,还可以看其他)
chroot_local_user=YES ##此参数要求去掉自己对加目录的写权限,man看以下这个参数
chmod u-w /home/*
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#限制本地用户登录
vim /etc/vsftpd/ftpusers ##永久用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登录ftp
#ftp虚拟用户的设定
(创建虚拟帐号身份)
vim /etc/vsftpd/westosfile ##文件名称任意 ##3号
ftpuser1
123
ftpuser2
123
ftpuser3
123
#上面的密码是明文的,不安全,要进行加密,T表示transfer,t表示转换方式为hash
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db
#查看vsftpd.conf,认证的时候是使用pam认证
#yum search pam —> pam.x86_64
#rpm -qc pam.x86_64 查看有那些配置文件
#cd /etc/pam.d,目录里有个vsftpd文件
#认证的时候就是在这个文件里做用户名和密码的比对
#系统里有pam这个进程的,ps aux | grep pam
vim /etc/pam.d/westos ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/westosfile ##2号
auth required pam_userdb.so db=/etc/vsftpd/westosfile
ftp的安全部署 **
500报错:文件系统权限过大 **
530报错:用户认证失败 **
550报错:服务本身功能未开放 **
553报错:本地文件系统权限过小 **