说明

Pure-FTPd是一款开源的FTP服务器软件,配置简单,安全高效,下面我们在CentOS 8.x/Rocky Linux 8.x系统下部署Pure-FTPd

一、配置防火墙,开启FTP服务器需要的端口

CentOS 7默认使用的是firewall作为防火墙,这里改为iptables防火墙。

1、关闭firewall:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

2、安装iptables防火墙

yum install iptables-services #安装

vi /etc/sysconfig/iptables #编辑防火墙配置文件

# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT

-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 30000:50000 -j ACCEPT

-A INPUT -j REJECT –reject-with icmp-host-prohibited

-A FORWARD -j REJECT –reject-with icmp-host-prohibited

COMMIT

:wq #保存退出

systemctl restart iptables.service #最后重启防火墙使配置生效

systemctl enable iptables.service #设置防火墙开机启动

说明:21端口是ftp服务端口;30000到50000是ftp被动模式需要的端口,可自定义一段大于1024的tcp端口。

二、关闭SELINUX

vi /etc/selinux/config

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq #保存退出

执行 setenforce 0 使配置立即生效

三、安装pure-ftpd

1、安装编译工具包

yum install make gcc* gcc-c++ openssl openssl-devel bzip2 wget tar

2、下载pure-ftpd

cd /x/install/
wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.51.tar.gz

3、安装pure-ftpd

mkdir -p /x/app/pureftpd  #创建安装目录
cd /x/install/
tar zxvf pure-ftpd-1.0.51.tar.gz
cd pure-ftpd-1.0.51
./configure –prefix=/x/app/pureftpd –with-language=simplified-chinese –with-everything CFLAGS=-O2 –with-puredb –with-quotas –with-cookie –with-virtualhosts –with-diraliases –with-sysquotas –with-ratios –with-altlog –with-paranoidmsg –with-shadow –with-welcomemsg –with-throttling –with-uploadscript –with-language=english –with-ftpwho –with-tls
make
make install

执行vi /etc/profile命令 把pure-ftpd服务加入系统环境变量:在最后添加下面这一行

export PATH=$PATH:/x/app/pureftpd/bin

:wq #保存退出

执行 source /etc/profile 使配置立刻生效

编辑 vi /usr/lib/systemd/system/pure-ftpd.service 设置pureftpd开机启动

[Unit]
Description=Pure-FTPd FTP server
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/x/app/pureftpd/sbin/pure-ftpd   /x/app/pureftpd/etc/pure-ftpd.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target

:wq #保存退出

systemctl enable pure-ftpd  #添加开机启动

systemctl start pure-ftpd.service  #启动

systemctl stop pure-ftpd.service  #停止

systemctl restart pure-ftpd.service  #重启

4、配置pure-ftpd

4.1新建系统用户和组www,用户登录终端设为/sbin/nologin(即不能登录系统)

groupadd www
useradd -s /sbin/nologin -g www www

此系统用户作为ftp虚拟用户的宿主用户

4.2创建FTP服务器虚拟用户访问目录

mkdir -p /x/data/pureftpd  #ftp虚拟用户主目录
mkdir -p /x/data/pureftpd/ftpuser01  #ftp虚拟用户ftpuser01的目录
mkdir -p /x/data/pureftpd/ftpuser02  #ftp虚拟用户ftpuser02的目录
chown  www.www  /x/data/pureftpd  -R  #设置ftp虚拟用户目录权限为宿主用户www所有

4.3创建虚拟用户

/x/app/pureftpd/bin/pure-pw   useradd   ftpuser01  -u  www  -d   /x/data/pureftpd/ftpuser01

提示输入ftp虚拟用户密码:

Password:123456

Enter it again:123456

同样可以添加第二个用户

/x/app/pureftpd/bin/pure-pw   useradd   ftpuser02  -u  www  -d   /x/data/pureftpd/ftpuser02

-u选项将ftp虚拟用户和宿主用户www关联,虚拟用户登录后,会以宿主用户权限进行上传下载操作

-d选项后面是ftp虚拟用户的目录,每个ftp虚拟用户只能访问自己的目录

/x/app/pureftpd/bin/pure-pw mkdb #生成虚拟用户数据文件

虚拟用户数据存放文件

/x/app/pureftpd/etc/pureftpd.passwd    #虚拟用户文件

/x/app/pureftpd/etc/pureftpd.pdb         #虚拟用户数据文件

4.4修改pure-ftpd配置文件

mkdir -p /x/app/pureftpd/var/run/  #创建进程文件存放目录

mkdir -p /x/app/pureftpd/var/log/  #创建日志文件存放目录

vi   /x/app/pureftpd/etc/welcome  #添加Pure-FTPd登录欢迎信息文件,内容可以自定义

Welcome to Pure-FTPd

:wq #保存退出

cp /x/app/pureftpd/etc/pure-ftpd.conf     /x/app/pureftpd/etc/pure-ftpd.conf-bak   #备份配置文件

vi   /x/app/pureftpd/etc/pure-ftpd.conf  #编辑配置文件
Bind    0.0.0.0,21   #设置ftp端口,默认为21,0.0.0.0表示本机所有ip地址

PassivePortRange   30000   50000   #设置PureFTP被动端口

AnonymousCantUpload    yes    #禁止匿名用户上传文件( no表示允许上传)

NoAnonymous   yes    #禁止匿名连接,仅允许认证用户连接

UnixAuthentication  no    #禁止系统用户认证

Daemonize               yes       #允许后台运行

PureDB                    /x/app/pureftpd/etc/pureftpd.pdb   #虚拟用户数据文件

PIDFile                   /x/app/pureftpd/var/run/pure-ftpd.pid     #进程文件

AltLog                   clf:/x/app/pureftpd/var/log/pureftpd.log   #日志文件

FortunesFile         /x/app/pureftpd/etc/welcome  #Pure-FTPd登录欢迎信息

#TLS                       2    #支持加密传输

#CertFile              /x/app/pureftpd/ssl/pure-ftpd.pem    #加密证书路径

:wq #保存退出

systemctl restart pure-ftpd.service  #重启

5、使用ftp客户端进行连接

在Windows下使用ftp客户端软件(FileZilla、FlashFXP)连接ftp服务器

扩展阅读:

1、pure-ftpd虚拟用户相关操作

/x/app/pureftpd/bin/pure-pw passwd ftpuser01 #修改密码

/x/app/pureftpd/bin/pure-pw useradd ftpuser01 -u www -d /x/data/pureftpd/ftpuser01 #添加用户

/x/app/pureftpd/bin/pure-pw userdel ftpuser01 #删除用户

/x/app/pureftpd/bin/pure-pw usermod ftpuser01 -d /x/data/pureftpd/ftpuser01 #修改用户目录

/x/app/pureftpd/bin/pure-pw show ftpuser01 #查看用户详细信息

/x/app/pureftpd/bin/pure-pw list #查看所有用户

/x/app/pureftpd/bin/pure-pw mkdb #对ftp虚拟用户进行修改等操作后要重新生成数据文件,重启pure-ftpd服务才能生效

2、Pure-FTPd服务器启用加密传输

mkdir /x/app/pureftpd/ssl #创建加密证书存放目录

openssl req -x509 -nodes -days 7200 -newkey rsa:2048 -keyout /x/app/pureftpd/ssl/pure-ftpd.pem -out /x/app/pureftpd/ssl/pure-ftpd.pem     #创建证书,注册信息可以自定义填写,我们是自己使用,不需要证书颁发机构认证

chmod 600 /x/app/pureftpd/ssl/pure-ftpd.pem  #设置证书文件权限

在Pure-FTPd配置文件/x/app/pureftpd/etc/pure-ftpd.conf中设置启用证书

TLS                       2    #支持加密传输

CertFile                /x/app/pureftpd/ssl/pure-ftpd.pem    #加密证书路径

TLS和CertFile这两个选项必须同时启用,TLS值为1,不启用ssl加密,值为2启用ssl加密

systemctl restart pure-ftpd.service     #重启

最后使用ftp客户端连接

最后修改:2022 年 10 月 31 日
如果觉得我的文章对你有用,请随意赞赏