FTP服务的安装及启用
1、 FTP
FTP ( File TransferProtocol,文件传输协议 ) 是 INTERNET 上仍常用的最老的网络协议之一 , 它为系统提供了通过网络与远程服务器进行传输的简单方法。
在 RED HAT ENTREPRISE LINUX 7中,FTP 服务器包的名称为 VSFTPD
, 它代表 Very Secure File TransferProtocol Damon 服务器名称也叫做 vsftpd默认配置文件让ANONYMOUS 用户只能下载位于 CHROOT 目录中的内容。
/var/ftp/
(默认发布目录) 这意味着远程 FTP 客户端能以用户anonymous 或 ftp 身份连接到服务器 ( 无需密码 ), 并从 ftp服务器上的 /var/ftp/ 目录下载文件 ( 其本地 ftp 用户可以读取这些文件 )
主配置目录: /etc/vsftpd/vsftpd.conf
协议接口: 协议接口: 21/tcp
主动访问时文件传输端口为 20
被动访问时随机开启1024以上随机端口(默认)
2 、安装FTP
在配置好yum仓库后执行以下命令即可安装FTP及FTP浏览器
yum install vsftpd.x86_64 lftp.x86_64 -y #vsftp为ftp服务,lftp为ftp浏览器
ftp服务状态与火墙调整:
systemctl start vsftpd #开启ftp
systemctl enable vsftpd #使ftp开机启动
firewall-cmd --permanent --add-service=ftp #在火墙中允许ftp运行
firewall-cmd --reload #重载火墙
3、 测试
在另一台同网段主机中:
lftp 172.25.254.216
发现可以成功进入发布目录,说明ftp安装成功
FTP基本安全部署
实验之前首先需要将selinux
关闭:更改/etc/sysconfig/selinux
中selinux
的状态为disabled
,之后重启系统
使之生效
step1 设置匿名用户登陆
在ftp配置文件 /etc/vsftpd/vsftpd.conf
中:
默认匿名用户可以登陆,改成NO后重启服务:
systemctl restart vsftpd
再次登陆匿名用户发现不能登陆:
step2 设置本地用户登陆
vim /etc/vsftpd/vsftpd.conf ###修改配置文件
改成NO后重启服务,发现本地用户不能登陆:
step3 设置本地用户可写
vim /etc/vsftpd/vsftpd.conf ###修改配置文件
默认可写:
改成NO重启服务后:
设置匿名用户读写
1 、匿名用户上传
默认设置下,匿名用户上传文件时:
在配置文件中:
将功能打开(同时也要打开write_enable=YES
),重启服务后使用匿名用户上传文件:
因此还需要修改本地文件系统/var/ftp/pub
权限
注意:/var/ftp
目录不能有写权限,否则不能登陆,因此需要修改/var/ftp/pub
权限
chmod 775 /var/ftp/pub/
chgrp ftp /var/ftp/pub/
之后再使用匿名用户上传文件发现可以成功上传
2、 匿名用户下载
默认情况下匿名用户下载:
使用man 5 vsftpd.conf
查看匿名用户下载权限设定:
在配置文件中写入:
保存后重启服务,再次使用匿名用户下载文件:
3 、匿名用户建立目录
默认情况下匿名用户建立目录:
在配置文件中将anon_mkdir_write_enable=YES
功能打开:
重启服务后再次建立目录:
匿名用户其他参数设定
1、 匿名用户上传文件的权限
默认情况下匿名用户上传文件的权限为600:
可以在配置文件中作以下更改来改变上传文件的权限:
之后再次上传文件:
2 、匿名用户指定默认发布目录
可以在配置文件中加:
anon_root=/westos #指定默认发布目录为/westos
测试:
mkdir /westos
touch /westos/file{1..5}
3 、设定匿名用户上传速率
在配置文件中:
本地用户的设定
1 、本地用户能否登陆
local_enable=YES
2、 本地用户是否可写
write_enable=YES
3 、本地用户上传的文件的权限
local_umask=022
4、 本地用户登陆目录设定
本地用户登陆时默认在其家目录/home/user
中,可以在配置文件中加入:
重启服务后的登陆:
5 、限定本地用户在其家目录中
本地用户登陆时默认在其家目录/home/user
中,但是还可以去/目录,可以在配置文件中修改以限定本地用户在其家目录中
之后需要去掉家目录中的写权限:
chmod u-w /home/*
6、 限定某些本地用户在其家目录中(黑名单)
将某些用户限制在其家目录中,需要在配置文件中进行以下设定:
/etc/vsftpd/chroot_list
文件默认不存在,需要建立并编辑文件:
vim /etc/vsftpd/chroot_list #写入需要限制的本地用户
chmod u-w /home/* #删除写权限
使用lee用户打开根目录:
7 、限定某些本地用户可以进入根目录(白名单)
在配置文件中进行以下设定:
测试,此时lee在白名单中:
8、 限制本地用户登陆
vim /etc/vsftpd/ftpusers #用户黑名单
vim /etc/vsftpd/user_list #用户临时黑名单
当用户在/etc/vsftpd/ftpusers
文件中时,用户不能登陆ftp,登陆会提示530错误
当用户出现在/etc/vsftpd/user_lis
t中时,用户也不能登陆ftp,但是当在配置文件/etc/vsftpd/vsftpd.conf
写入:
userlist_deny=NO
/etc/vsftpd/user_lis
t将会变成白名单
虚拟用户的认证设定
1 建立认证文件
vim vuserlist
在文件内写入三那个虚拟用户和密码:
user1
123
user2
123
user3
123
使用以下命令对其进行加密:
db_load -T -t hash -f vuserlist vuserlist.db
2 生成认证策略
vim /etc/pam.d/ftpuser
在文件中写入:
account required pam_userdb.so db=/etc/vsftpd/vuserlist
auth required pam_userdb.so db=/etc/vsftpd/vuserlist
3 编辑配置文件
在/etc/vsftpd/vsftpd.conf
中写入:
pam_service_name=ftpuser
guest_enable=YES
guest_username=ftp
更改后重启服务,测试:
虚拟用户家目录的设定和授权独立
(1)虚拟用户家目录的设定
1 建立虚拟用户家目录及测试文件
mkdir /var/ftpuserdir/user{1..3}/pub -p
touch /var/ftpuserdir/user1/user1file
touch /var/ftpuserdir/user2/user2file
touch /var/ftpuserdir/user3/user3file
2 更改配置文件
vim /etc/vsftpd/vsftpd.conf
写入:
local_root=/var/ftpuserdir/$USER
user_sub_token=$USER
3 测试
(2)虚拟用户家授权独立
1 更改文件与目录权限
chgrp ftp /var/ftpuserdir/ -R
chmod 775 /var/ftpuserdir/user{1..3}/pub
2 独立配置文件
vim /etc/vsftpd/vsftpd.conf
写入:
user_config_dir=/etc/vsftpd/user_config #指定用户独立配置目录
建立独立配置目录与文件:
mkdir /etc/vsftpd/user_config #用户独立配置目录
vim /etc/vsftpd/user_config/user2 #user2的独立配置文件,此文件优先级高
在独立配置文件中写入:
anon_upload_enable=YES #允许上传文件,若需要其他权限可以加其他参数
重启服务:
systemctl restart vsftpd.service
3 、测试