说明:
Pure-FTPd是一款开源的FTP服务器软件,配置简单,安全高效,下面我们在CentOS 8.x/Rocky Linux 8.x系统下部署Pure-FTPd
一、配置防火墙,开启FTP服务器需要的端口
CentOS 8.x/Rocky Linux 8.x默认使用的是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 /usr/local/src/
wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.49.tar.gz
3、安装pure-ftpd
mkdir -p /usr/local/pureftpd #创建安装目录
cd /usr/local/src/
tar zxvf pure-ftpd-1.0.49.tar.gz
cd pure-ftpd-1.0.49
./configure –prefix=/usr/local/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:/usr/local/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=/usr/local/pureftpd/sbin/pure-ftpd /usr/local/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 /data/web #ftp虚拟用户主目录
mkdir -p /data/web/ftpuser01 #ftp虚拟用户ftpuser01的目录
mkdir -p /data/web/ftpuser02 #ftp虚拟用户ftpuser02的目录
chown www.www /data/web -R #设置ftp虚拟用户目录权限为宿主用户www所有
4.3创建虚拟用户
/usr/local/pureftpd/bin/pure-pw useradd ftpuser01 -u www -d /data/web/ftpuser01
提示输入ftp虚拟用户密码:
Password:123456
Enter it again:123456
同样可以添加第二个用户
/usr/local/pureftpd/bin/pure-pw useradd ftpuser02 -u www -d /data/web/ftpuser02
-u选项将ftp虚拟用户和宿主用户www关联,虚拟用户登录后,会以宿主用户权限进行上传下载操作
-d选项后面是ftp虚拟用户的目录,每个ftp虚拟用户只能访问自己的目录
/usr/local/pureftpd/bin/pure-pw mkdb #生成虚拟用户数据文件
#虚拟用户数据存放文件
/usr/local/pureftpd/etc/pureftpd.passwd #虚拟用户文件
/usr/local/pureftpd/etc/pureftpd.pdb #虚拟用户数据文件
4.4修改pure-ftpd配置文件
mkdir -p /usr/local/pureftpd/var/run/ #创建进程文件存放目录
mkdir -p /usr/local/pureftpd/var/log/ #创建日志文件存放目录
vi /usr/local/pureftpd/etc/welcome #添加Pure-FTPd登录欢迎信息文件,内容可以自定义
Welcome to Pure-FTPd
:wq! #保存退出
cp /usr/local/pureftpd/etc/pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf-bak #备份配置文件
vi /usr/local/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 /usr/local/pureftpd/etc/pureftpd.pdb #虚拟用户数据文件
PIDFile /usr/local/pureftpd/var/run/pure-ftpd.pid #进程文件
AltLog clf:/usr/local/pureftpd/var/log/pureftpd.log #日志文件
FortunesFile /usr/local/pureftpd/etc/welcome #Pure-FTPd登录欢迎信息
#TLS 2 #支持加密传输
#CertFile /usr/local/pureftpd/ssl/pure-ftpd.pem #加密证书路径
:wq! #保存退出
systemctl restart pure-ftpd.service #重启
5、使用ftp客户端进行连接
在Windows下使用ftp客户端软件(FileZilla、FlashFXP)连接ftp服务器
扩展阅读:
1、pure-ftpd虚拟用户相关操作
/usr/local/pureftpd/bin/pure-pw passwd ftpuser01 #修改密码
/usr/local/pureftpd/bin/pure-pw useradd ftpuser01 -u www -d /home/web/ftpuser01 #添加用户
/usr/local/pureftpd/bin/pure-pw userdel ftpuser01 #删除用户
/usr/local/pureftpd/bin/pure-pw usermod ftpuser01 -d /home/web/ftpuser01 #修改用户目录
/usr/local/pureftpd/bin/pure-pw show ftpuser01 #查看用户详细信息
/usr/local/pureftpd/bin/pure-pw list #查看所有用户
/usr/local/pureftpd/bin/pure-pw mkdb #对ftp虚拟用户进行修改等操作后要重新生成数据文件,重启pure-ftpd服务才能生效
2、Pure-FTPd服务器启用加密传输
mkdir /usr/local/pureftpd/ssl #创建加密证书存放目录
openssl req -x509 -nodes -days 7200 -newkey rsa:2048 -keyout /usr/local/pureftpd/ssl/pure-ftpd.pem -out /usr/local/pureftpd/ssl/pure-ftpd.pem #创建证书,注册信息可以自定义填写,我们是自己使用,不需要证书颁发机构认证
chmod 600 /usr/local/pureftpd/ssl/pure-ftpd.pem #设置证书文件权限
在Pure-FTPd配置文件/usr/local/pureftpd/etc/pure-ftpd.conf中设置启用证书
TLS 2 #支持加密传输
CertFile /usr/local/pureftpd/ssl/pure-ftpd.pem #加密证书路径
#TLS和CertFile这两个选项必须同时启用,TLS值为1,不启用ssl加密,值为2启用ssl加密
systemctl restart pure-ftpd.service #重启
使用ftp客户端连接