vsftpd+pam_mysql 虛擬用戶配置

公司項目需求:

我們公司是化妝品電子商務公司

1.搭建一臺ftp服務器用於上傳包裹快遞面單圖片,實現基本的上傳下載功能

2.vsftpd通過虛擬用戶登錄,可以外網訪問

3.限制虛擬用戶登錄ip

4.虛擬用戶相關配置文件可以界面操作添加、修改等,而且要及時更新


下面主要是1、2兩步實現步驟及注意事項

3、4兩步在另一篇博客裏有詳細的說明及代碼(vsftpd+pam_mysql+shell)


安裝pam_mysql  (請一定要安裝,下面安裝vsftpd錯誤3給出瞭解釋)這裏沒有給出mysql的安裝

cd pam_mysql-0.7RC1

./configure --with-mysql=/home/mysql/app/mysql5/

make && make install

安裝報錯:

1.PAM unable to dlopen(/lib/security/pam_mysql.so): libmysqlclient.so.18: cannot open shared object file: Permission denied

cp mysql_dir/lib/libmysqlclient.so.18 /usr/lib64/   這裏一定要注意,創建軟連不行,必須複製,該文件權限必須爲mysql執行用戶權限。否則登錄不了,而且不會報什麼錯


安裝vsftpd

注:

centos 32位直接yum安裝即可

centos64位需要編譯安裝,如果yum安裝會報錯:libgcc_s.so.1 must be installed for pthread_cancel to work


tar zxvf vsftpd.3-2

vim defs.h    

修改下面的行 ,解決上面的問題(libgcc_s.so)

#define VSFTP_AS_LIMIT   100UL * 1024 * 1024

#define VSFTP_AS_LIMIT   400UL * 1024 * 1024   


vim builddefs.h     

修改下面的行,在配置vsftpd時需要使用的模式tcpwrappers,如果沒有配置,會報錯:

500 OOPS: tcp_wrappers is set to YES but no tcp wrapper support compiled in

#unfin VSF_BUILD_TCPWRAPPERS   

#define VSF_BUILD_TCPWRAPPERS


more INSTALL   查看安裝事項,這些一般情況下都已經好了,這裏只是提一下

make && make install


安裝過程中出現的一些錯誤:

1.tcpwrap.c:16:20: 錯誤:tcpd.h:沒有那個文件或目錄

yum install -y tcp_wrappers tcp_wrappers-devel

2./usr/bin/ld: cannot find -lcap 

yum -y install libcap libcap-devel  (LCAP 是一種實現鏈路動態匯聚的協議  主動模式、被動模式

3.530 Login incorrect vsftpd+pam_mysql配置一切正常但是就是無法登錄,開始一直不知到

   哪裏出了問題,後來仔細檢查了一下vsftpd的依賴關係,才知道pam_mysql依賴關係沒有(ldd /usr/local/sbin/vsftpd)

  安裝vsftpd之前,安裝pam_mysql


配置vsftpd

cp vsftpd.conf /etc/   配置文件一定要放在/etc下

cp RedHat/vsftpd.pam /etc/pam.d/vsftpd


下面是正在使用的線上ftp服務配置模板(參數的意思就不列出了)

vim vsftpd.conf

anonymous_enable=YES
no_anon_password=YES
ftp_username=ftp
anon_root=/var/ftp
anon_upload_enable=NO
anon_world_readable_only=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_max_rate=0
#chown_uploads=YES/NO
#chown_username=username
#anon_umask=077
#deny_email_enable=YES/NO
#banned_email_file=/etc/vsftpd/banner_emails
#[local]
#login name:local user, login passwd:local passwd, ftp dir:local path, exclude user in:/etc/vsftpd.ftpusers
isolate_network=NO
local_enable=YES
local_root=/home/virtual
local_umask=077
file_open_mode=0755
local_max_rate=0
#chroot_list_enable=YES,chroot_local_user=YES:vsftpd.chroot_list is allow
#chroot_list_enable=YES,chroot_local_user=NO:vsftpd.chroot_list is deny
#chroot_list_enable=NO,chroot_local_user=YES:all deny
#chroot_list_enable=NO,chroot_local_user=NO:all allow
chroot_list_enable=NO
#chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=NO
allow_writeable_chroot=YES
#[welcome message]
#message type:file or string
#dirmessage_enable=YES
#message_file=.message
#banner_file=/etc/vsftpd/banner
ftpd_banner=Welcome to test's FTP server
#[other]
text_userdb_names=NO
ls_recurse_enable=NO
hide_ids=NO
download_enable=YES
#[globle]
#all config is about this globle config
write_enable=NO
#[transfer mode]
#p_w_picpath or exec file:BINARY,CGI file or HTML file:ASCII
#ascii_upload_enable=NO
#ascii_download_enable=NO
#[access control]
#type:host control(hosts.allow) ,user control  ftpusers level is gt vsftpd.user_list
tcp_wrappers=YES
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=YES
#[timeout]
accept_timeout=60
connect_timeout=60
data_connection_timeout=120
idle_session_timeout=300
#[logfile]
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
log_ftp_protocol=YES
#[ftp work type and work port]
#work type:PORT FTP and PASV FTP
listen_port=22
#connect_from_port_20=YES
#ftp_data_port=20
#pasv_addr_resolve=
#pasv_address=
#pasv_promiscuous=
pasv_enable=YES
pasv_max_port=53001
pasv_min_port=52999
#[connect]
listen=YES
max_clients=100
max_per_ip=10
use_localtime=YES
#listen_address=IP
#setproctitle_enable=NO
#[pam user]       
guest_enable=YES
pam_service_name=vsftpd
guest_username=virtual
virtual_use_local_privs=NO
user_config_dir=/etc/vsftpd/userconf

注:

1.refusing to run with writable root inside chroot()

allow_writeable_chroot=YES  加上這一句


創建虛擬宿主用戶:virtual  dir:/home/virtual/

創建虛擬用戶test

用戶配置文件:/etc/vsftpd/vuser_conf/test

關於用戶配置文件,有很多參數都是可以設置的,這些功能可以在加強

local_root=/home/virtual/test
write_enable=YES
anon_upload_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
cmds_allowed=PASV,TYPE,LIST,CWD,PWD,SIZE,CDUP,TYPE,MKD,MDTM,NLST,PASS,QUIT,USER,REIN,RETR,STOR,RNTO,APPE,RNFR,DELE,RMD

注:

1.226 Transfer done (but failed to open directory)

test 用戶目錄權限設置必須爲7XX  第一個必須是7 (所有權限)   chmod 700 test


配置pam_mysql

vim /etc/pam.d/vsftpd   

補齊相關參數即可,pam_msyql 安裝包也有相關說明文件

auth required /lib/security/pam_mysql.so user= passwd= host= db= table= usercolumn= passwdcolumn= crypt=0
account required /lib/security/pam_mysql.so user= passwd= host= db= table= usercolumn= passwdcolumn= crypt=0


關於外網訪問:

外網訪問ftp時,有一點非常要注意,通過被動模式訪問,外網映射的數據傳輸端口必須是連續的,否則客戶端無法建立鏈接,我在鏈接時碰到過下面的錯誤:

Using host address  instead of the one suggested by the server: 


vsftpd +ssl 加密傳輸

目前尚未配置,因爲當時覺得申請證書特別麻煩

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章