美文网首页程序员想法简友广场
FTP详细的搭建和配置文档

FTP详细的搭建和配置文档

作者: 微笑沉默 | 来源:发表于2021-01-09 20:09 被阅读0次
目录:
1. 简介
2. 原理
  2.1 主动模式  
  2.2 被动模式
3. 安装配置
  3.1 安装部署 
  3.2 服务配置  
  3.3 用户配置  
    3.3.1 配置登录用户  
4. 安全  
4.1 防火墙  
4.2 pam配置  
5. 问题处理  
  5.1 530 Login incorrect  
  5.2 530 Permission denied  

1. 简介

什么是FTP服务器呢,FTP全程为file transfer protocol,提供网络文件存储和下载等功能。是一个C/S架构。官网http://mina.apache.org/ftpserver-project/documentation.html

2. 原理

FTP默认采用TCP协议,占用两个端口,分别是20和21,20号端口是用来传输数据的为数据通道,21号端口是用来传输指令的为控制通道。

2.1 主动模式

主动模式表示FTP客户端连接到FTP服务器21号端口,发送用户名和密码,客户端随机开放一个端口,发送port命令到FTP的server端,发送的内存主要是工作模式为主动模式,并且已经开放了端口,FTP server端会通过20号端口和客户端的端口进行数据交互。

image

2.2 被动模式

被动模式是FTP客户端连接到21号端口,发送给server端用户名和密码,并且发送一个PASV的命令给FTP服务器,告诉服务端是采用被动连接模式,那么服务端在本地随机开放一个端口,然后将端口告诉客户端,客户端再连接服务器开放的端口进行数据传输。

image

3. 安装配置

3.1 安装部署

FTP的安装包名称为vsftpd,官方镜像源就可以安装


yum install vsftpd

通过rpm进行安装的,文件位置如下,删除了部分文档类文件路径输出


[root@zhserver ~]$ rpm -ql vsftpd-3.0.2-28.el7.x86_64

/etc/logrotate.d/vsftpd

/etc/pam.d/vsftpd

/etc/vsftpd

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

/etc/vsftpd/vsftpd.conf

/etc/vsftpd/vsftpd_conf_migrate.sh

/usr/lib/systemd/system-generators/vsftpd-generator

/usr/lib/systemd/system/vsftpd.service

/usr/lib/systemd/system/vsftpd.target

/usr/lib/systemd/system/vsftpd@.service

/usr/sbin/vsftpd

/var/ftp

/var/ftp/pub

3.2 服务配置

查看vsftpd.conf配置


[root@zhserver vsftpd]$ cat /etc/vsftpd/vsftpd.conf | egrep -v "^#"

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

具体配置的含义

配置文件 含义
anonymous_enable YES/NO 表示匿名用户,默认为YES,为了安全我们是不允许配置匿名用户登录的
local_enable YES/NO vsftpd服务器所在的系统用户可以登录vsftpd
write_enable YES/NO 允许使用所有的FTP write命令
local_umask 0XX 匿名用户新增加文件的umask值,默认为022
anon_upload_enable YES/NO 匿名用户上传文件,为了安全我们设置为NO
anon_mkdir_write_enable YES/NO 匿名用户创建文件夹,为了安全设置为NO
dirmessage_enable YES/NO 远程用户在登录目录的时候,显示的信息
xferlog_enable YES/NO 在上传和下载的时候,是否产生日志,默认为YES
connect_from_port_20 YES/NO 数据通道使用的端口,默认为20
xferlog_std_format YES/NO 记录日志使用标准的格式
chown_uploads YES/NO 匿名用户可以上传文件
chown_username=whoever - 除了root
idle_session_timeout 数字 不操作的超时时间,默认为600,为60s,登录后,一分钟不操作则60s后断开连接
data_connection_timeout 数字 数据传输的超时时间,默认为120s,默认是注释的,没有超时时间
ftpd_banner 字符串 登录ftp后的显示信息,比如:welcome
userlist_enable YES/NO 允许userlist_file中文件的用户登录FTP服务器
tcp_wrappers YES/NO 支持访问控制,主要使用/etc/hosts.allow,/etc/hosts.deny
chroot_local_user YES/NO 所有的 本地用户需要执行chroot,避免单一用户可以随意浏览目录
chroot_list_enable YES/NO 设置哪些用户需要执行chroot,用户文件在/etc/vsftpd/chroot_list,如果不存在需要创建
chroot_list_file 目录路径 chroot配置的路径
userlist_deny YES/NO 控制userlist文件是白名单还是黑名单,默认设置为YES,默认为黑名单

3.3 用户配置

  • FTP默认的数据路径/var/ftp/pub,在浏览器中输入ftp://ipaddress后,可以看到根目录,具体如下
image
3.3.1 配置登录用户

相关的配置文件有user_listftpuser,路径在/etc/vsftpd/,采用指定用户登录的配置,需要将匿名用户的配置去掉,修改/etc/vsftpd/vsftpd.conf中的anonymous_enableNO

  • user_list: 如果userlist_enable=YES,则这个文件生效,但是这个文件既可以作为白名单,也可以作为黑名单,这个控制的参数是userlist_deny=NO,默认值是YES,如果是YES,则这个文件作为黑名单,里面用户是禁止登陆的。可以将用户填写到这个文件中,则可以登录ftp。

  • ftpuser: 填写到里面的用户受pam规则控制,具体的pam规则见/etc/pam.d/vsftpd

  • chroot_list:采用chroot限制的用户。

添加用户
  • 添加用户zhangsan,家目录为/var/ftp/pub/zhangsan,不能登录shell,加入ftp组内,同样权限,创建一个lisi

useradd -d /var/ftp/pub/zhangsan -s /sbin/nologin -g ftp zhangsan

passwd zhangsan

useradd -d /var/ftp/pub/lisi -s /sbin/nologin -g ftp lisi

passwd lisi

# 设置密码

image

登录尝试

image
用户隔离

一般FTP服务作为一个通用的应用,如果多个部门使用的事情,需要将不同的部门访问的路径隔离开来,不同用户登录需要限制到对应的文件目录,不能访问其他部门的文件目录,这个可以通过chroot机制进行控制,主要配置

  • /etc/vsftpd/vsftpd.conf

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

chroot_local_user:是否将所有的用户都限制在主目录中,这个操作影响比较大

chroot_list_enable:这个参数配合chroot_list_file使用,在chroot_list_file对应的文件中的用户才会限制在主目录中

  • 将用户名称添加chroot_list文件里面

$ cat /etc/vsftpd/chroot_list

zhangsan

lisi

4. 安全

4.1 防火墙

主动模式下,开放21和20号端口,配置完成后,重启iptables,systemctl restart iptables


-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT

4.2 pam配置

ftp在配置文件vsftp.conf中有一个pam_service_name=vsftpd,内容如下


[root@zhserver data]# cat /etc/pam.d/vsftpd 

#%PAM-1.0

session    optional     pam_keyinit.so    force revoke

auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

auth       required    pam_shells.so

auth       include    password-auth

account    include    password-auth

session    required     pam_loginuid.so

session    include    password-auth

5. 问题处理

5.1 530 Login incorrect

  • 问题:现象如下图,遇到这个问题,开始以为是密码正确,后来修改了密码还是存在问题,

  • 解决:后来经过排查,是pam的问题,将/etc/pam.d/vsftpd里面的 auth required pam_shells.so这一行注释掉。

image

5.2 530 Permission denied

  • 问题:ftp登录的时候,输入用户名之后,直接报错

  • 解决:检查配置,是否使用了user_list,然后/etc/vsftpd/vsftpd.conf中userlist_deny是否为NO

image

相关文章

网友评论

    本文标题:FTP详细的搭建和配置文档

    本文链接:https://www.haomeiwen.com/subject/qwzcaktx.html