FTP服務(wù)器搭建

FTP服務(wù)器

一、FTP工作模式

1、主動(dòng)模式

  • 客戶(hù)端連接到服務(wù)器的21端口
  • 當(dāng)客戶(hù)端請(qǐng)求數(shù)據(jù)時(shí),客戶(hù)端連接到服務(wù)器的20端口
主動(dòng)模式.png

2、被動(dòng)模式

  • 客戶(hù)端連接到服務(wù)器的21端口
  • 當(dāng)客戶(hù)端請(qǐng)求數(shù)據(jù)時(shí),服務(wù)器隨機(jī)開(kāi)啟一個(gè)端口
  • 客戶(hù)端連接到服務(wù)端的隨機(jī)端口,獲取數(shù)據(jù)
被動(dòng)模式.png

綜上所述,公司使用FTP服務(wù)器,若采用主動(dòng)模式,因?yàn)榭蛻?hù)端位于防火墻后面,防火墻策略一般不允許入站,也就說(shuō)20端口連接不上客戶(hù)端,這樣FTP服務(wù)器將無(wú)法正常工作;所以采取被動(dòng)模式。(注:特殊情況,防火墻可以配置識(shí)別FTP協(xié)議,允許其入站,這樣的情況下使用主動(dòng)模式也是可以的。)

二、安裝vsftpd

1、安裝

apt install vsftpd
systemctl start vsftpd
systemctl enable vsftpd

2、vsftpd核心文件與目錄列表說(shuō)明

/etc/logrotate.d/vsftpd -- 日志輪轉(zhuǎn)備份配置文件

/etc/pam.d/vsftpd -- 基于PAM的vsftpd驗(yàn)證配置文件

/etc/vsftpd -- vsftpd軟件主目錄

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

/etc/vsftpd/ftpusers -- 默認(rèn)的vsftpd黑名單

/etc/vsftpd/user_list -- 可以通過(guò)主配置文件設(shè)置該文件為黑名單或白名單

/var/ftp -- 默認(rèn)vsftpd共享目錄

三、配置文件(配置虛擬用戶(hù))

1、主配置文件設(shè)置

##################  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

四、配置虛擬用戶(hù)

1、創(chuàng)建虛擬用戶(hù)數(shù)據(jù)庫(kù)

? 創(chuàng)建明文密碼文件vlogin,明文文件奇數(shù)行為用戶(hù),偶數(shù)行為密碼;然后使用db_load工具將vlogin文件轉(zhuǎn)化為數(shù)據(jù)庫(kù)文件。

#安裝db_load工具
apt install libdb_utils
#將vlogin文件轉(zhuǎn)化為數(shù)據(jù)庫(kù)文件
db_load -T -t hash -f /etc/vsftpd/vlogin /etc/vsftpd/vlogin.db
#修改文件權(quán)限以增強(qiáng)數(shù)據(jù)安全性
chmod 600 /etc/vsftpd/{vlogin,vlogin.db}

2、創(chuàng)建pam文件,用于虛擬賬戶(hù)驗(yàn)證

? PAM文件中的db選項(xiàng)用于指定并驗(yàn)證賬戶(hù)和密碼的數(shù)據(jù)庫(kù)文件,數(shù)據(jù)庫(kù)文件無(wú)需添加.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、設(shè)置虛擬用戶(hù)目錄

? 所有的虛擬用戶(hù)最終都映射到一個(gè)真實(shí)的系統(tǒng)賬戶(hù),需添加一個(gè)系統(tǒng)賬戶(hù)

adduser -s /sbin/nologin vsftp

4、設(shè)置每個(gè)虛擬用戶(hù)的獨(dú)立共享路徑

#主配置文件添加
user_config_dir=/etc/vsftpd/vsftpd_user_conf
user_sub_token=$USER
allow_writeable_chroot=YES
#創(chuàng)建一個(gè)基于賬戶(hù)的配置目錄,在該目錄下可創(chuàng)建若干個(gè)與賬戶(hù)名稱(chēng)同名的文件,并在此文件為此賬戶(hù)設(shè)置獨(dú)立的配置選項(xiàng)
mkdir /etc/vsftpd/vsftpd_user_conf
#單獨(dú)設(shè)置tomcat001賬戶(hù)的共享路徑
[root@ubuntu ~]#cat /etc/vsftpd/vsftpd_user_conf/tomcat001
local_user=/home/vsftp/$USER

5、重啟服務(wù)

systemctl restart vsftpd

至此,F(xiàn)TP服務(wù)器基于多用戶(hù)的操作已完成,用戶(hù)可創(chuàng)建和刪除目錄,創(chuàng)建和刪除文件。

附件1:user.sh

通過(guò)腳本的方式,創(chuàng)建和刪除虛擬用戶(hù)

  1. 創(chuàng)建用戶(hù)
./user.sh -c tomcat-001
  1. 刪除用戶(hù)
./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 "用戶(hù)名:$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個(gè)vsftpd的問(wèn)題
vsftpd的配置詳細(xì)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容