CentOS 7.0 FTP服务器简单搭建

CentOS 7.0 FTP服务器简单搭建


在下载并安装软件之前,先弄清楚FTP(File Transfer Protocol)的三种登录模式和两种工作模式,针对不同的登录方式进行配置FTP服务器的文件目录。也是为了防止根据步骤安装完成后,发现并不是自己想要的,让自己少走弯路,同时也有感觉今后还是会有再次搭建ftp服务器的可能,做好记录。

三种模式

FTP支持的三种认证模式:

  • 匿名用户模式:顾名思义,就是不需要用户名和密码认证直接登录到FTP服务器。
  • 本地用户模式:通过本地用户和设置密码的方式,控制登录FTP的用户,本地用户登录模式相比匿名用户登录更加安全。
  • 虚拟用户模式:FTP服务的专有用户,只用于访问FTP服务提供的资源,不能访问Linux系统中的其他资源。相比本地用户模式更加安全。

两种工作模式

FTP的两种工作模式:

FTP与其他服务不同,它是同时使用两个端口来进行传输操作,一个位数据端口,另一是个命令端口。通常21端口是命令端口,20端口是数据端口。

  • 主动模式:ftp服务器没有与客户端之间的传输端口,客户端会任意分配端口与服务器连接。
sequenceDiagram
# 主动模式
客户端-ftp服务器: 请求21端口登录
ftp服务器--客户端: 登录成功,初始化连接
客户端-ftp服务器: PORT 1027,发送数据端口
ftp服务器--客户端: FTP服务器20端口\n与1027端口建立连接
客户端-ftp服务器: 1027端口发送数据
  • 被动模式:客户端随机分配可用端口与ftp连接,ftp服务器的命令端口没有改变,数据传输端口由ftp服务器分配。
sequenceDiagram
# 被动模式
客户端-ftp服务器: 请求21端口登录
ftp服务器--客户端: 响应请求,登录成功
客户端-ftp服务器: PASV命令
ftp服务器--客户端: PORT 2048,返回端口,\n告诉客户端监听哪个服端口
客户端-ftp服务器: 发送数据到2048端口

搭建FTP服务器

搭建环境:CentOS 7

搭建工具:YUM

搭建过程

yum安装

$ yum install vsftpd -y

启动服务

$ systemctl start vsftpd
$ systemctl enable vsftpd # 开机重启服务

配置服务

程序安装好后默认使用的是匿名模式,无需密码就能直接访问FTP服务器资源,默认的文件地址为/var/ftp/pub。这里推荐一个支持FTP服务的软件FileZilla,这里直接上链接

本地用户模式
$ useradd iot # 创建用户
# $ userdel iot
$ passwd iot # 用户密码设置
$ mkdir /var/ftp/iot # 创建服务目录
$ chown -R iot:iot /var/ftp/iot/ # 修改目录拥有者为iot

修改vsftpd.conf

$ cd /etc/vsftpd/ 
$ cp vsftpd.conf vsftpd.conf.bak # 拷贝一份,避免修改失误还能再来
$ vim /etc/vsftpd/vsftpd.conf # 编辑文件

修改内容如下

# vsftpd.conf
anonymous_enable=NO # 禁止匿名登录
local_enable=YES # 允许本地用户登录FTP
listen=YES # 监听 IPv4
# listen_ipv6=YES #注释关闭监听IPv4
# 文件的最底层添加
local_root=/var/ftp/iot # 本地用户登录后所在目录
chroot_local_user=YES # 全部用户被限制在主目录
chroot_list_enable=YES # 启用额外用户名单
chroot_list_file=/etc/vsftpd/chroot_list # 指定例外用户列表文件,列表中用户不被锁定在主目录 
allow_writeable_chroot=YES
# 如果仅仅想主动模式,以下配置就无需添加
pasv_enable=YES # 开启被动模式
pasv_address=127.0.0.1 # FTP服务器公网IP地址
pasv_min_port=39000 # 被动模式下,建立数据传输可使用的端口范围最小值
pasv_max_port=41000 # 被动模式下,建立数据传输可使用的端口范围最大值

创建用户列表

$ vim /etc/vsftpd/chroot_list

由于并没有给任何用户权限可以访问系统中的其他目录,所以为空

有一些服务器,例如阿里云服务器,需要配置安全组的端口开发,所以这里也需要多加注意,并且关闭39000 - 41000的防火墙

image-20191222155736409.png

如果添加用户能够访问的其他路径的权限

$ vim /etc/vsftpd/chroot_list 
# chroot_list
iot

image-20191222160037702.png

虚拟用户模式

虚拟用户模式相比本地用户模式更加安全,用户只能访问系统提供的服务资源,进一步增强了FTP服务器的安全性。 虚拟用户的用户认证是通过pam方式去认证的,pam文件里面指定了认证的db文件,db文件又是通过明文用户名和密码文件生成而来。

配置pam文件,注释所有的内容,末尾添加一下内容

$ getconf LONG_BIT # 查看多少位机子 
$vim /etc/pam.d/vsftpd
# 64 位
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
# 32 位
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

生成db文件

$ vim /etc/vsftpd/vuser_passwd.txt
# 单行为用户,双行位密码
iot2
passwd
$ cd /etc/vsftpd
$ db_load -T -t hash -f vuser_passwd.txt vuser_passwd.db

image-20191222162846567.png

如果想添加用户,可以在vuser_passed.txt中添加用户,之后重新生成db文件。

配置vsftpd.conf

$ vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO # 关闭匿名
chroot_local_user=YES # 用户被限制在主目录
allow_writeable_chroot=YES  # 开启用户读写权限

listen=YES
listen_ipv6=NO

guest_enable=YES # 启动虚拟用户功能
user_config_dir=/etc/vsftpd/vuser_conf # 虚拟用户配置文件存放路径

pasv_enable=YES # 开启被动模式
pasv_address=127.0.0.1 # FTP服务器公网IP地址
pasv_min_port=39000 # 被动模式下,建立数据传输可使用的端口范围最小值
pasv_max_port=41000 # 被动模式下,建立数据传输可使用的端口范围最大值

配置虚拟用户的权限和目录

$ mkdir /var/ftp/iot2 # 虚拟用户文件目录
$ mkdir -p /etc/vsftpd/vuser_conf/ # 虚拟用户配置目录
$ vim /etc/vsftpd/vuser_conf/iot2 # 创建用户配置文件


local_root=/var/ftp/iot2 # 配置用户文件目录
write_enable=YES # 设置用户可写入
max_per_ip=10 # 设置同一账号允许10个ip登录

创建本地用户

$ useradd -s /sbin/nologin iot2 # 创建本地用户

不创建用户会有这个报错响应: 500 OOPS: cannot locate user entry:iot2

最后的是开放端口的命令行

$ firewall-cmd --zone=public --add-port=21/tcp --permanent
$ firewall-cmd --reload

ubuntu 的使用的是ufw,自行百度谷歌,这里只说了centos系统

FAQ

阿里云服务器搭建出现的问题
解决:安全组未开放端口,把端口开放就好了

pam_succeed_if(sshd:auth): requirement “uid >= 1000” not met by user “root”
解决:pam的问题,把之前所有的配置都注释掉

发布了0 篇原创文章 · 获赞 0 · 访问量 90

猜你喜欢

转载自blog.csdn.net/qq_34178764/article/details/103657483