FTP服务器的概念:
ftp(文件传输协议)是internet上常用的最老的网络协议之一,为系统提供了网络与远程服务器进行传输的简单方法。
FTP服务器包的名称为vsftpd,意思是very secure file transferprotocol damon
即非常安全的文件传输
默认配置文件让匿名用户只能下在位于chroot目录中的内容。/var/ftp/意味着远程ftp客户端能以匿名用户或者FTP用户山分直接连到服务器,不用密码,并且从ftp服务器上的/var/ftp/目录小哦呵在文件。本地用户可以读取。
步骤如下:
前提:
先修改selinux为disabled
用getenforce查看selinux,若为disabled
若为enforcing则将其改为disabled,
进入/etc/sysconfig/selinux进行修改即可
修改完进行reboot
关于selinux下一篇博客子在进行讲述,这里先不必赘述,只需进行修改即可。
1、ftp(文本传输协议)安装以及启动
在已经配置好yum源的主机上进行安装
yum install -y vsftpd
systemctl start vsftpd 开启ftp服务
systemctl enable vsftpd 设置开机自启
yum install lftp -y 即安装vsftpd客户端服务的程序,lftp
添加ftp服务:
方法一:命令设置y
firewall-cmd --permanent --add-service=ftp加入防火墙白名单
firewall-cmd --reload 开机加载
firewall-cmd --list-all
方法二:
图形展示防火墙
firewall-config
先选择配置configuration里的permanent永久,然后选择public里的ftp服务,最后reload firewalld
2、测试:
测试vsftpd协议的安装:浏览器访问: ftp://安装服务主机的IP
或者远程访问,->即就是在终端输入:lftp 安装客户端主机的IP
3、ftp基本信息
访问数据端口:21主动模式 客户端主动访问服务端叫主动
被动是服务端把东西推送到客户端
数据传输端口:>1024的随机端口
默认发布目录: /var/ftp 普通用户登录上去默认在自己家目录
访问方式
lftp 172.25.254.100 匿名登录 --> /var/ftp
lftp 172.25.254.100 -u student student用户登录 --> /home/student
配置文件:
/etc/vsftpd/vsftpd.conf
二、ftp的安全部署
500报错:权限过大
530报错:认证失败
550报错:服务本身不允许
553报错:密码错误用户认证失败
anonymous_enable=YES | NO 匿名用户是否可以登录
下图为不能登录
local_enable=YES | NO 本地用户是否可以登录
write_enable=YES | NO 用户是否可写
可写的意思即是否可以上传文件
/var/ftp/pub目录只对超级用户可写
匿名用户可写
先直接上传,报错,再改目录权限为775,查看上传用户
chmod 775 /var/ftp/pub 给该目录权限
chgrp ftp /var/ftp/pub 把FTP的组改成pub的组,修改完权限后即可进行上传
vim /etc/vsftpd/vsftpd.conf 进入该文件中配置
anon_upload_enable=YES 匿名用户上传
write_enable=YES 也要允许用户可写
3.匿名用户可下载
anon_world_readable_only=NO
用get下载,mget下载多个文件,mirror下载目录
4.匿名用户建立目录
anon_mkdir_write_enable=YES
5.匿名用户是否可以删除和重命名
anon_other_write_enable=YES
6.匿名用户家录修改
anon_root=/new_home
新建一个目录,new_home,创建文件file,若测试登陆端后可以之季节看到创建的文件,则家目录修改成功。
7.匿名用户上传文件默认权限修改
anon_umask=xxx 改成022
777-022=755,文件的权限改成了755
8.匿名用户使用的用户身份修改file:
student用户的id就是1000,然后在该用户的/root/Desktop下建立了文件2,
进入vim /etc/vsftpd/vsftpd.conf文件中配置:: chown_username=student
9.最大上传速率
anon_max_rate=102400 单位:字节 100k
截取一个文件:dd if=/dev/zero of=/mnt/bigfile bs=1M count=1500
上传测试如图:
修改过后的传输速率如下:anon_max_rate=102400 单位:字节 100k
维持在100k左右的传输速率
10、最大链接个数
max_clients=1 表示最多有一个可以连接
如果重新打开一个shell,则登不上:
本地用户登陆限制: local_enable=YES|NO 本地用户登录限制
1、本地用户家目录修改
local_root=/hello
本地用户登录,默认进去用户家目录,修改后
2、本地用户上传文件权限
local_umask=xxx
当local_umask=002时,如下
3、限制本地用户浏览根目录
即所有用户被锁定到自己的家目录中 (修改之前不仅可以在自己家目录,还可以看其他)
chroot_local_user=YES 此参数要求去掉自己对家目录的写权限。
chmod u-w /home/* 去掉所有用户对家目录的写权限
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list该文件没有,得自己编写 ,文件里直接添加用户名称即可
NO说明没有将所有本地用户锁在自己的家目录,本地用户都可以自由访问根目录
所以/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_enable=YES
用户白名单设定
userlist_deny=NO NO默认白名单YES默认黑名单
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登录ftp
(创建虚拟帐号身份)
vim /etc/vsftpd/westosfile ##文件名称任意
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
auth required pam_userdb.so db=/etc/vsftpd/westosfile
#account表示帐号名称,auth表示密码,先后顺序不分
#required是通过了用户名认证才能进入下一步认证,然后使用pam_userdb.so这个插件来验证
#db=/etc/vsftpd/westosfile文件后不要写.db,系统会自动加
#
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos
guest_enable=YES 激活游客登陆
然后进行登陆即可
虚拟帐号身份指定
guest_username=westos ##默认使用虚拟用户时,登录后在pub目录,要想改变,修改此参数,修改后登录到westos家目录
chmod u-w /home/ftpuser
虚拟帐号家目录独立设定,非开设定家目录
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER shell是命令解释器,人机交互的接口
user_sub_token=$USER ##$USER是shell里的用法,要让配置文件里支持,必须加这个参数 $USER表示当前用户
mkdir /ftphome/user1/user1dir -p 建立家目录 -p第归建立
mkdir /ftphome/user2/user2dir -p
虚拟帐号配置独立
chgrp ftp /ftphome -R
ll /ftphome/user*
chmod 775 /ftphome/user1/user1dir
chmod 775 /ftphome/user2/user2dir
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/user1
在此文件中设定配置文件中的所有参数,此文件的优先级高
例如:anon_upload_enable=YES
这样user1可以上传,user2不行