部署 FTP 服务器
FTP ( 文件传输协议 ) 是 INTERNET 上仍常用的最老的网络协议之一 , 它为系统提供了通过网络与远程服务器进行传输的简单方法在 RED HAT ENTREPRISE LINUX 6 中。 FTP 服务器包的名称为 VSFTPD , 它代表 Very Secure File TransferProtocolDamon 服务器名称也叫做 vsftpd默认配置文件让 ANONYMOUS 用户只能下载位于 CHROOT 目录中的内容。 /var/ftp/ 这意味着远程 FTP 客户端能以用户anonymous 或 ftp 身份连接到服务器 ( 无需密码 ), 并从 ftp服务器上的 /var/ftp/ 目录下载文件 ( 其本地 ftp 用户可以读取这些文件 )
部署网络服务的四个步骤
安装服务软件
启动服务
启用服务
测试服务
超文本传输协议
vsftpd #ftpd服务
lftp #相当于浏览器
1.ftp启用(yum源已经配置好)
yum install -y vsftpd
systemctl start vsftpd
systemctl enable vsftpd
关闭火墙/让防火墙允许ftp服务
允许ftp:
firewall-cmd --list-all ##列出所有防火墙有关支持的
firewall-cmd --permanent --add-service=ftp ##在防火墙允许的服务中添加ftp服务
firewall-cmd --reload ##重启firewall-cmd
firewall-cmd --list-all
示例:
列出防火墙的所相关的所有内容;
允许对ftp服务关闭防火墙功能;
重启后防火墙对ftp服务关闭
ftp是内核加强型防火墙需要把selinux改称disabled,之后重启虚拟机
重启后显示disabled
2.ftp基本信息
访问数据端口:21
数据传输端口:>1024的随即端口
21主动模式(服务端主动推送) 20被动模式
[root@client ~]# netstat -antulpe | grep vsftpd
tcp6 0 0 :::21 :::* LISTEN 0 99108 2225/vsftpd
默认发布目录:/var/ftp
访问方式:
lftp 172.25.254.100 #匿名用户登陆 默认/var/ftp/pub/发目录
lftp 172.25.254.100 -u xxx#用户登陆 /home里
lftp 172.25.254.103 -u student
配置文件:vim /etc/vsftpd/vsftpd.conf
[root@client student]# rpm -qc vsftpd ##查找配置文件所在位置
3.ftp的安全部署
500报错:权限过大
530报错:认证失败
550报错:服务本身不允许
553报错:文件系统权限过小
anonymous #匿名用户
local #本地用户
##用户登陆
anonymous_enable=NO ##禁止匿名用户登陆
测试:匿名用户不能登陆,本地用户可以
#匿名用户上传
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
vim /etc/vsftpd/vs
anon_upload_enable=YES
示例:
(本地用户可以直接上传,匿名用户不可以)
由于write_enable=YES本地用户可以直接上传
当write_enable=NO时:
##匿名用户下载
anon_world_readable_only=NO
#匿名用户删除和重命名
anon_other_write_enable=YES
#匿名用户家目录更改
anon_root=/westos
#匿名用户umask值修改
anon_umask=022
#匿名用户使用的身份修改
chown_uploads=YES
chown_username=student
#匿名用户建立目录
anon_mkdir_write_enable=YES
#匿名用户最大上传限速
anon_max_rate=102400 单位:字节
dd if=/dev/zero of=/mnt/bigfile bs=1M count=2000
限制上传速度100K/S
#最大链接个数
max_clients=5 #只能有5个人链接ftp
#本地用户家目录修改
local_root=/westos
#本地用户上传文件权限(在)
local_umask=077
#本地用户家目录锁定
chroot_local_user=YES
#限制本地用户浏览根目录
chroot_local_user=YES #此参数要求去掉自己对自己家目录的写权限
chmod u-w /home/* #都去掉
访问根目录黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
示例:student在黑名单 访问不了根目录,westos 可以访问。
访问根目录白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
示例:student在白名单,可以访问根目录,westos不可以。
#限制本地用户登陆
vim /etc/vsftpd/ftpusers #永久黑名单
vim /etc/vsftpd/user_list #临时黑名单 no白名单 yes黑名单
示例:vim /etc/vsftpd/ftpusers #永久黑名单
#用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list #此参数设定,此文件变成用户白名单,名单中出现的用户可以登陆ftp
示例:
vim /etc/vsftpd/user_list #westos设置为用户
因为westos在临时黑名单中所以无法访问。
[root@client westos]# vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO
/etc/vsftpd/user_list
[root@client westos]# systemctl restart vsftpd.service #黑名单变白名单
4.ftp虚拟用户的设定
#新建虚拟用户
vim /etc/vsftpd/westos #文件名任意
user1 #用户名
123 #密码
user2
123
db_load -T -t hash -f /etc/vsftpd/westos /etc/vsftpd/westos.db #改铭文密码
cat westos.db #查看密码
rpm -qc pam.x86-64 #查看pam安装了没,没安装yum install pam.x86-64
vim /etc/pam.d/westos #文件名任意
account#帐号 required pam_userdb.so db=/etc/vsftpd/westos
auth#密码 required pam_userdb.so db=/etc/vsftpd/westos
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos
guest_enable=YES
#虚拟用户身份指定
虚拟用户本来登陆进来是/var/ftp/pub/
guest_username=westos #指定用户身份以westos登陆
#虚拟用户家目录的独立设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER
user_sub_token=$USER ##解释$USER的作用: $user 当前用户身份
mkdir -p /ftphome/user1/user1dir
mkdir -p /ftphome/user2/user2dir
##虚拟用户独立配置
chgrp ftp /ftphome -R
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
给虚拟用户独立配置上传功能