Linux系统中的ftp服务(服务器部署、安全部署)
一、FTP概念
FTP(文件传输协议)是INTERNET上仍常用的最老的网络协议之一,他为系统提供了通过网络与远程服务器进行传输的简单方法。
ftp协议提供的软件:
在企业7里: vsftpd
二、FTP服务部署
服务端部署(server:172.25.254.173):
1.关闭selinux
vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 disabled
getenforce
Enforcing(仍然显示需要重启,才能生效)
reboot
注意:因为这个修改是内核级的,所以我们需要重启虚拟机
2.安装vsftpd和lftp
如果在纯净的环境下进行操作需要执行:
cd /etc/yum.repos.d/
rm -rf * (看到的都删掉)
vim westos.repo 配置yum安装
yum clean all
因为这里用到的主机之前进行过配置,所以不再重复配置,直接安装所需软件yum install vsftpd lftp -y
systemctl start vsftpd
##开启服务
3.设置火墙服务
方法一:firewall-config
##设置火墙服务
Configuration标签下选择Permanent----public下勾选ftp----Options下选择reload
firewall-cmd --list-all
##查看火墙状态
方法二:firewall-cmd --permanent --add-service=ftp
##在火墙服务里添加ftpfirewall-cmd --reload
##重新加载服务
cd /var/ftp/
ls
touch westos
注意:/var/ftp/ 里面有什么,lftp访问的时候ls会发现
客户端部署172.25.254.73:
1.安装lftp
2.测试:
172.25.254.73主机里进行测试:
lftp 172.25.254.173
ls(可以列出则成功)
三、ftp服务的基本信息
1.软件安装包:vsftpd
2.默认的发布目录:/var/ftp
3.协议接口:21/tcp
4.服务配置文件:/etc/vsftpd/vsftpd.conf
注意:配置文件编辑后要重启服务
5.报错id的分析:
500 ##文件系统权限过大
530 ##用户认证失败
550 ##服务本身功能未开放
553 ##本地文件系统权限过小
四、FTP安全部署
安全部署的实现,通过编辑配置文件来进行设定
1.匿名用户设定
anonymous_enable=YES | NO
##匿名用户是否可以登录(YES表示可登陆)
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO ##匿名用户不可以登陆
systemctl restart vsftpd
测试:
2.本地用户设定local_enable=YES | NO
##本地用户是否可以登录
测试:write_enable=YES | NO
##ftp是否对登录的用户可以写入
测试:
3.匿名用户上传
默认情况下,匿名用户不可以上传
匿名用户上传设置:
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anonymous_enable=YES
anon_upload_enable=YES
systemctl restart vsftpd
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
测试:
cd pub/---->put /etc/passwd
4.匿名用户家目录修改anon_root=/directory
新建一个目录,写几个文件
测试:
5.匿名用户上传文件默认权限修改anon_umask=022
测试:
6.匿名用户建立目录anon_mkdir_write_enable=YES | NO
测试:
7.匿名用户下载anon_world_readable_only=YES | NO
设定参数值为NO表示匿名用户可以下载
测试:
8.匿名用户删除anon_other_write_enable=YES | NO
测试:
9.匿名用户使用的用户身份修改chown_uploads=YES
chown_username=student
(必须是服务端有的用户)chown_upload_mode=0644
测试:
默认的用户是ftp(gid是14),ls查看之前上传的文件是ftp建立的
修改后,上传一个文件,ls查看是student建的1001
10.最大上传速率anon_max_rate=102400
测试:
11.最大链接数max_clients=1
测试:
12.本地用户家目录修改local_root=/directory
测试:
13.本地用户上传文件权限local_umask=xxx
测试:
14.限制本地用户浏览/目录
所有用户被锁定到自己的家目录中chroot_local_user=YES
chmod u-w /home/*
测试:
15.用户黑名单建立chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
(在里面添加的用户不能进入/目录)
测试:
16.用户白名单建立chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
(在里面添加的用户能进入/目录)
测试:
17.限制本地用户登录vim /etc/vsftpd/ftpusers
##用户永久黑名单
测试:vim/etc/vsftpd/user_list
##用户临时黑名单
18.用户白名单设定
修改/etc/vsftpd/vsftpd.conf——>userlist deny=NO时
/etc/vsftpd/user_list 就变成用户白名单(只有存在这个文件里的用户才可以登录)userlist_deny=NO
/etc/vsftpd/user_list
##双重否定表示肯定;参数设定,此文件变成用户白名单,只有在名单中的用户可以登录ftp
五、ftp虚拟用户的设定
建立虚拟用户的原因: 因为系统用户登陆ftp服务,同时也可以登陆系统,这样很不安全,所以我们要建立ftp虚拟用户,使这些用户只能登陆ftp
创建步骤:systemctl start vsftpd
systemctl status firewalld
firewall-cmd --list-all
1.创建虚拟用户帐号身份
vim /etc/vsftpd/fileauto ##文件名称任意
westos1
123
westos2
123
westos3
123
2.加密文件:因为文件是明文的,很不安全,所以我们要对其加密db_load -T -t hash -f /etc/vsftpd/fileauto /etc/vsftpd/fileauto.db
(所创建的fileauto默认不会被读,因此需要进行hash加密)
3.编辑策略文件(验证密码与用户是否一致的文件) 文件名称任意
vim /etc/pam.d/westospam
account required pam_userdb.so db=/etc/vsftpd/fileauto
auto required pam_userdb.so db=/etc/vsftpd/fileauto
(所写内容是指,如果登录的用户required用pam_userdb.so插件对应/etc/vsftpd/fileauto这个文件里进行检测,通过让登录,不通过不让登录,此处fileauto后会自动补齐db,所以不需要手动添加)
4.编辑配置文件
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westospam ##(确定虚拟用户登录认证策略)让vsftpd与所见的pam.d下所建目录产生关联
guest_enable=YES ##开启虚拟用户可以登录
systemctl restart vsftpd
测试:
5.虚拟帐号身份指定guest_username=ftpuser
##指定虚拟用户登录身份(指定的用户是登录的主机上应该存在的,若是不存在的,应新建,另外得去除w权限)chmod u-w /home/ftpuser
6.虚拟帐号家目录独立设定mkdir /var/ftpuserdir/westos{1..3} -p
vim /etc/vsftpd/vsftpd.conf
local_root=/var/ftpuserdir/$USER ##登录用户访问的家目录
user_sub_token=$USER ##让系统识别$USER($USER系统默认是不识别的)使$USER在shell里面生效,在.conf文件里面生效
mkdir /var/ftpuserdir/westos{1..3}/pub
mkdir /var/ftpuserdir/westos1/westos1file
mkdir /var/ftpuserdir/westos2/westos2file
mkdir /var/ftpuserdir/westos3/westos3file
7.虚拟帐号配置独立
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/user_config
mkdir -p /etc/vsftpd/user_config
vim /etc/vsftpd/user_config/ftpwestos1
annoy_reload
ls -l /var/ftpuserdir/westos*
上一篇: java多线程Synchronized实现可见性原理解析
下一篇: Nginx配置https的实现
推荐阅读
-
SpringBoot项目在IDEA中打jar包及部署在linux服务器上
-
记一次通过jenkins部署到linux上的tomcat服务器(模拟svn钩子程序)
-
Linux中FTP服务器的搭建步骤
-
springboot打包部署到linux服务器的方法
-
springboot打包部署到linux服务器的方法
-
spring Boot打包部署到远程服务器的tomcat中
-
maven利用tomcat插件部署远程Linux服务器的步骤详解
-
Linux下将Python的Django项目部署到Apache服务器
-
vue项目部署到Apache服务器中遇到的问题解决
-
详解Linux系统中安装配置Samba服务器的步骤