FTP服务器搭建

FTP服务器

一、FTP工作模式

1、主动模式

  • 客户端连接到服务器的21端口
  • 当客户端请求数据时,客户端连接到服务器的20端口
FTP服务器搭建_第1张图片
主动模式.png

2、被动模式

  • 客户端连接到服务器的21端口
  • 当客户端请求数据时,服务器随机开启一个端口
  • 客户端连接到服务端的随机端口,获取数据
FTP服务器搭建_第2张图片
被动模式.png

综上所述,公司使用FTP服务器,若采用主动模式,因为客户端位于防火墙后面,防火墙策略一般不允许入站,也就说20端口连接不上客户端,这样FTP服务器将无法正常工作;所以采取被动模式。(注:特殊情况,防火墙可以配置识别FTP协议,允许其入站,这样的情况下使用主动模式也是可以的。)

二、安装vsftpd

1、安装

apt install vsftpd
systemctl start vsftpd
systemctl enable vsftpd

2、vsftpd核心文件与目录列表说明

/etc/logrotate.d/vsftpd -- 日志轮转备份配置文件

/etc/pam.d/vsftpd -- 基于PAM的vsftpd验证配置文件

/etc/vsftpd -- vsftpd软件主目录

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

/etc/vsftpd/ftpusers -- 默认的vsftpd黑名单

/etc/vsftpd/user_list -- 可以通过主配置文件设置该文件为黑名单或白名单

/var/ftp -- 默认vsftpd共享目录

三、配置文件(配置虚拟用户)

1、主配置文件设置

##################  Global Setting ############
listen=no                                  
listen_ipv6=YES
write_enable=YES
local_umask=022
anon_umask=022
max_login_fails=5
xferlog_enable=YES
xferlog_std_format=YES
chroot_local_user=YES
pam_service_name=vsftpd.pam
userlist_enable=YES
tcp_wrappers=YES
connect_from_port_20=YES
pasv_enable=YES
pasv_max_port=24600
pasv_min_port=24500
ftpd_banner=Welcome to FTP Server
#### User Setting ########################
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=vsftp
#### Permission ####################
anonymous_enable=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
####  Guest Setting  ############
user_config_dir=/etc/vsftpd/vsftpd_user_conf
user_sub_token=$USER
allow_writeable_chroot=YES

四、配置虚拟用户

1、创建虚拟用户数据库

​ 创建明文密码文件vlogin,明文文件奇数行为用户,偶数行为密码;然后使用db_load工具将vlogin文件转化为数据库文件。

#安装db_load工具
apt install libdb_utils
#将vlogin文件转化为数据库文件
db_load -T -t hash -f /etc/vsftpd/vlogin /etc/vsftpd/vlogin.db
#修改文件权限以增强数据安全性
chmod 600 /etc/vsftpd/{vlogin,vlogin.db}

2、创建pam文件,用于虚拟账户验证

​ PAM文件中的db选项用于指定并验证账户和密码的数据库文件,数据库文件无需添加.db后缀。

[root@ubuntu ~]#cat /etc/pam.d/vsftpd.pam
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vlogin
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vlogin

3、设置虚拟用户目录

​ 所有的虚拟用户最终都映射到一个真实的系统账户,需添加一个系统账户

adduser -s /sbin/nologin vsftp

4、设置每个虚拟用户的独立共享路径

#主配置文件添加
user_config_dir=/etc/vsftpd/vsftpd_user_conf
user_sub_token=$USER
allow_writeable_chroot=YES
#创建一个基于账户的配置目录,在该目录下可创建若干个与账户名称同名的文件,并在此文件为此账户设置独立的配置选项
mkdir /etc/vsftpd/vsftpd_user_conf
#单独设置tomcat001账户的共享路径
[root@ubuntu ~]#cat /etc/vsftpd/vsftpd_user_conf/tomcat001
local_user=/home/vsftp/$USER

5、重启服务

systemctl restart vsftpd

至此,FTP服务器基于多用户的操作已完成,用户可创建和删除目录,创建和删除文件。

附件1:user.sh

通过脚本的方式,创建和删除虚拟用户

  1. 创建用户
./user.sh -c tomcat-001
  1. 删除用户
./user.sh -d tomcat-001

#!/bin/bash
#set -x
PASSWD=/etc/vsftpd/vlogin
HOME=/home/vsftp
CONFIG=/etc/vsftpd/vsftpd_user_conf
function create(){
    #create user and passwd
    cat ${PASSWD} |grep -w $1 && echo "User is already exists!" && exit 1
    passwd=$(openssl rand -base64 8)
    echo  "$1" >> ${PASSWD}
    echo  "${passwd}" >> ${PASSWD}
    db_load -T -t hash -f ${PASSWD} ${PASSWD}.db
    #create home diretory
    mkdir ${HOME}/$1
    chown -R vsftp:vsftp ${HOME}/$1
    #create config file
    echo "local_root=${HOME}/$1" > ${CONFIG}/$1
    echo -e "用户名:$1 \n密码:${passwd}"
}
function delete(){
    cat ${PASSWD} |grep -w $1 || echo "User does not exist!" && exit 1
    sed -i '/^'$1'$/,+1d' ${PASSWD}
    rm -f ${PASSWD}.db
    db_load -T -t hash -f ${PASSWD} ${PASSWD}.db
    rm -rf ${HOME}/$1
    rm -f ${CONFIG}/$1
    echo "$1 is delete!"
}
case $1 in 
    -c)
        create $2
    ;;
    -d)
       delete $2
    ;;
    *)
       echo "Usage:$0 [-c [username]] | [-d [username]]"
    ;;
esac

10个vsftpd的问题
vsftpd的配置详细

你可能感兴趣的:(FTP服务器搭建)