欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux系统中的ftp服务(服务器部署、安全部署)

程序员文章站 2022-03-10 09:04:36
...

一、FTP概念

FTP(文件传输协议)是INTERNET上仍常用的最老的网络协议之一,他为系统提供了通过网络与远程服务器进行传输的简单方法。

ftp协议提供的软件:
在企业7里: vsftpd

二、FTP服务部署

服务端部署(server:172.25.254.173):
1.关闭selinux

vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 disabled

getenforce
Enforcing(仍然显示需要重启,才能生效)

reboot

注意:因为这个修改是内核级的,所以我们需要重启虚拟机
Linux系统中的ftp服务(服务器部署、安全部署)
Linux系统中的ftp服务(服务器部署、安全部署)
Linux系统中的ftp服务(服务器部署、安全部署)
2.安装vsftpd和lftp

如果在纯净的环境下进行操作需要执行:

cd /etc/yum.repos.d/
rm -rf *      (看到的都删掉)
vim westos.repo    配置yum安装
yum clean all

因为这里用到的主机之前进行过配置,所以不再重复配置,直接安装所需软件
Linux系统中的ftp服务(服务器部署、安全部署)
yum install vsftpd lftp -y
Linux系统中的ftp服务(服务器部署、安全部署)
Linux系统中的ftp服务(服务器部署、安全部署)
systemctl start vsftpd          ##开启服务
Linux系统中的ftp服务(服务器部署、安全部署)
3.设置火墙服务
方法一:
firewall-config                      ##设置火墙服务

Configuration标签下选择Permanent----public下勾选ftp----Options下选择reload

Linux系统中的ftp服务(服务器部署、安全部署)
Linux系统中的ftp服务(服务器部署、安全部署)
firewall-cmd --list-all        ##查看火墙状态
Linux系统中的ftp服务(服务器部署、安全部署)
方法二:
firewall-cmd --permanent --add-service=ftp      ##在火墙服务里添加ftp
firewall-cmd --reload           ##重新加载服务
cd /var/ftp/
ls
touch westos
注意:/var/ftp/ 里面有什么,lftp访问的时候ls会发现
Linux系统中的ftp服务(服务器部署、安全部署)

客户端部署172.25.254.73:
1.安装lftp
2.测试:
172.25.254.73主机里进行测试:

lftp 172.25.254.173
ls(可以列出则成功)

Linux系统中的ftp服务(服务器部署、安全部署)

三、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

Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)
2.本地用户设定
local_enable=YES | NO         ##本地用户是否可以登录
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)
write_enable=YES | NO         ##ftp是否对登录的用户可以写入
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)
3.匿名用户上传
默认情况下,匿名用户不可以上传
Linux系统中的ftp服务(服务器部署、安全部署)
匿名用户上传设置:

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

Linux系统中的ftp服务(服务器部署、安全部署)
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
cd pub/---->put /etc/passwd
Linux系统中的ftp服务(服务器部署、安全部署)
4.匿名用户家目录修改
anon_root=/directory
新建一个目录,写几个文件
Linux系统中的ftp服务(服务器部署、安全部署)
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)
5.匿名用户上传文件默认权限修改
anon_umask=022
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)

6.匿名用户建立目录
anon_mkdir_write_enable=YES | NO
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)

7.匿名用户下载
anon_world_readable_only=YES | NO设定参数值为NO表示匿名用户可以下载
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)

8.匿名用户删除
anon_other_write_enable=YES | NO
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)

9.匿名用户使用的用户身份修改
Linux系统中的ftp服务(服务器部署、安全部署)
chown_uploads=YES
chown_username=student(必须是服务端有的用户)
chown_upload_mode=0644
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
默认的用户是ftp(gid是14),ls查看之前上传的文件是ftp建立的
修改后,上传一个文件,ls查看是student建的1001
Linux系统中的ftp服务(服务器部署、安全部署)

10.最大上传速率
Linux系统中的ftp服务(服务器部署、安全部署)
anon_max_rate=102400
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)
11.最大链接数
max_clients=1
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)

12.本地用户家目录修改
local_root=/directory
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)
13.本地用户上传文件权限
local_umask=xxx
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)
14.限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
Linux系统中的ftp服务(服务器部署、安全部署)
chmod u-w /home/*

测试:
Linux系统中的ftp服务(服务器部署、安全部署)

15.用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
Linux系统中的ftp服务(服务器部署、安全部署)
touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list(在里面添加的用户不能进入/目录)
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)
Linux系统中的ftp服务(服务器部署、安全部署)
16.用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
Linux系统中的ftp服务(服务器部署、安全部署)
touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list(在里面添加的用户能进入/目录)
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)
Linux系统中的ftp服务(服务器部署、安全部署)
17.限制本地用户登录
vim /etc/vsftpd/ftpusers         ##用户永久黑名单
Linux系统中的ftp服务(服务器部署、安全部署)
测试:
Linux系统中的ftp服务(服务器部署、安全部署)
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
Linux系统中的ftp服务(服务器部署、安全部署)

五、ftp虚拟用户的设定

建立虚拟用户的原因: 因为系统用户登陆ftp服务,同时也可以登陆系统,这样很不安全,所以我们要建立ftp虚拟用户,使这些用户只能登陆ftp

创建步骤:
systemctl start vsftpd
systemctl status firewalld
firewall-cmd --list-all
Linux系统中的ftp服务(服务器部署、安全部署)
Linux系统中的ftp服务(服务器部署、安全部署)
1.创建虚拟用户帐号身份

vim /etc/vsftpd/fileauto    ##文件名称任意
westos1
123
westos2
123
westos3
123

Linux系统中的ftp服务(服务器部署、安全部署)
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*