linux下的ftp服务

时间:2024-03-21 15:48:16

一、ftp服务的定义

1.ftp服务/(文件传输协议)是internet上常用的网络协议之一,它为系统提供了通过网络与远程服务器进行传输的简单方法。

2.ftp服务包的名称为vsftpd

3.默认配置文件让anonymous用户只能下载位于chroot目录中的内容

4./var/ftp默认发布目录意味着远程ftp客户端能以用户anonymous或ftp身份连接到服务器(不需要密码),并从ftp服务器上的/var/ftp/下载文件(本地用户可以读取这些文件)

二、ftp的安装及启动

这里的实验需要用两机子,一台作为服务端,一台作为客户端

服务端:安装vsftpd服务和lftp服务

客户端:安装lftp服务

1.给服务端用yum源的方式下载安装ftp服务

linux下的ftp服务

2.ftp的启用:开启服务并设置为开机自启动

修改防火墙配置文件,允许ftp服务通过防火墙,方便他人访问
systemctl start vsftpdftp                                           ##开启ftp服务
systemctl enable vsftpd                                           ##开机自启
firewall-cmd --permanent --add-service=ftp          ##使ftp服务通过防火墙
firewall-cmd --reload                                                 ##防火墙重新加载配置文件

linux下的ftp服务

3.查看内核文件selinux是否为关闭状态

linux下的ftp服务

ftp://172.25.254.133

linux下的ftp服务

三、ftp的基本信息

访问数据端口:21

linux下的ftp服务
数据传输端口:>1024随机端口

默认发布目录: /var/ftp,用客户端去访问
访问方式:
     lftp 172.25.254.142                               ##匿名登录     ---> /var/ftp

linux下的ftp服务
     lftp 172.25.254.142 -u student                 ##用户登录     ---> /home/student

linux下的ftp服务

配置文件/etc/vsftpd/vsftpd.conf

查看ftp服务的配置文件

linux下的ftp服务

四、ftp的安全部署

1、anonymous_enable=YES|NO                     ##匿名用户是否可以登录

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

llinux下的ftp服务

linux下的ftp服务

2、local_enable=YES|NO                                 ##本地用户是否可以登录

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

3、write_enable=YES|NO                                 ##本地用户是否可写

linux下的ftp服务

linux下的ftp服务
4、匿名用户上传文件
chmod 775 /var/ftp/pub                  ##修改权限为775
chgrp ftp /var/ftp/pub                     ##修改组为ftp

vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES            ##上传文件

systemctl restart vsftpd

修改完配置文件后重启ftp服务

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

5、匿名用户可下载(设定参数值为no表示匿名用户可以下载)
anon_world_readable_only=NO

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

6、匿名用户建立目录
anon_mkdir_write_enable=YES

linux下的ftp服务

linux下的ftp服务

7、匿名用户是否可以删除和重命名
anon_other_write_enable=YES

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

8、匿名用户家目录修改
anon_root=/diroctry

在这里我用户家目录修改为westos,即为本应在客户端用lftp命令进去看到的是/var/ftp里面的内容,修改之后看到的是westos里面的内容:

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

9、匿名用户上传文件默认权限修改
anon_umask=xxx

10、匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student

这里我上传文件passwd,他的所有人变成1000(1000为student的id)

匿名用户使用studentde身份进行的操作

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

11、最大上传速率
anon_max_rate=102400(字节)

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

12、最大链接

当超过链接数时需要等待,当有人退出链接,下一个继续链接。

当打开3个shell时,因设置的最大链接数为2,所以其中前两个可以链接上。
max_clients=2

linux下的ftp服务

linux下的ftp服务

13、本地用户家目录修改
local_root=/directory

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

14、本地用户上传文件权限
local_umask=xxx

15、限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*

当没有限制本地用户时,可以看到根目录下的东西:

linux下的ftp服务

限制了本地用户时,去登陆时,发现用户被锁在了家目录下,查看不了根目录下的文件了

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

文件/etc/vsftpd/chroot_list本身不存在,所以需要我们去建立这个文件。

linux下的ftp服务

linux下的ftp服务

这里我将student设为黑名单

linux下的ftp服务

linux下的ftp服务

登陆本地用户,发现student用户被锁在家目录中了,访问不了根下的目录

linux下的ftp服务

用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

linux下的ftp服务

将student用户加入到白名单之后发现又可以访问到根下的其他目录了

linux下的ftp服务

16、限制本地用户登陆

vim /etc/vsftpd/ftpusers                       ##用户永久黑名单

这里我将student写入黑名单,用student登陆失败    

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

vim /etc/vsftpd/user_list                       ##用户临时黑名单

我将student用户从永久黑名单删除,写入临时黑名单,发现登陆被拒绝

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

用户白名单设定

(若在名单中的用户同时也出现在永久黑名单中,则该用户也不能登陆

vim /etc/vsftpd/vsftpd.conf

userlist_deny=NO

linux下的ftp服务

linux下的ftp服务

vim /etc/vsftpd/user_list                        ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp

linux下的ftp服务

linux下的ftp服务

linux下的ftp服务

17、ftp虚拟用户的设定

1)创建虚拟帐号身份(在里面写入要用的用户和密码)

vim  /etc/vsftpd/westosfile                      ##文件名称任意(编辑的文件里面不能有空格

user1

123

user2

123

user3

123

linux下的ftp服务

linux下的ftp服务

db_load  -T  -t  hash  -f  /etc/vsftpd/westosfile  /etc/vsftpd/westosfile.db   ##hash加密

vim /etc/pam.d/westos                                      ##文件名称任意
account    required    pam_userdb.so    db=/etc/vsftpd/westosfile
auth          required    pam_userdb.so    db=/etc/vsftpd/westosfile

linux下的ftp服务

linux下的ftp服务

account(用户)required(表示强制)pam_userdb.so(表示认证程序)db=/etc/vsftpd/westosfile(表示用户所在文件)

auth(表示密码)

vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos
guest_enable=YES

linux下的ftp服务

linux下的ftp服务

2)虚拟帐号身份指定
guest_username=ftpuser(身份指为student,默认进去是student的家目录/home/student里面的内容)

linux下的ftp服务

linux下的ftp服务

若将虚拟用户身份指为ftp,则访问的是ftp里面的内容

linux下的ftp服务

linux下的ftp服务

3)虚拟帐号家目录独立设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER
user_sub_token=$USER

linux下的ftp服务

linux下的ftp服务

建立独立的家目录

mkdir /ftphome/user1/user1dir -p
mkdir /ftphome/user2/user2dir -p

linux下的ftp服务

登陆时发现每个用户都有自己独立的家目录

linux下的ftp服务

4)虚拟帐号配置独立

给虚拟用户中的各个用户配置权限

chgrp ftp /ftphome -R                

chmod 775 /ftphome/user1/user1file

chmod 775 /ftphome/user2/user2file

chmod 775 /ftphome/user3/user3file

linux下的ftp服务

修改配置文件
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf

mkdir -p /etc/vsftpd/userconf

linux下的ftp服务

linux下的ftp服务

vim /etc/vsftpd/userconf/user1(编辑创建的这个文件)

在文件里面写入对哪个用户赋予的功能

在此文件中设定配置文件中的所有参数,此文件的优先级高

linux下的ftp服务

这里我选择的是user1用户,给予该用户上传,删除,建立文件的功能

linux下的ftp服务

登陆如下:

linux下的ftp服务

五、ftp的常见报错

530报错表示认证失败

550报错表示程序本身不允许你这样做

553报错表示服务器上的文件系统不允许你写

500报错表示权限过大