最近公司有個客戶,對VSFTP的模塊集成有所不滿。要求更換爲PROFTP。因此對該服務器做了簡單的瞭解和部署搭建。坑太多,簡單記錄下:
部署:
獲取proftp源碼包:ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5b.tar.gz
獲取模塊包(客戶需要使用MD5模塊):http://www.castaglia.org/proftpd/modules/proftpd-mod-md5-0.3.5.tar.gz
【編譯安裝】:
1、解壓縮包,並將第三方庫文件導入,用於加載。
#tar zxvf proftpd-mod-md5-0.3.5.tar.gz proftpd-1.3.5b.tar.gz
#cp mod_md5/mod_md5.c proftpd-1.3.5b/modules/
2、配置。<切記:安裝成功後,使用proftpd -vv的命令,查看你所安裝的模塊是否有加載的模塊,如果沒有的話,全部卸載,刪除解壓包,重新來一遍>。
#./configure --with-modules=mod_md5:mod_tls
3、編譯及安裝。
#make && makeinstall
4、爲了方便使用,將使用/etc/init.d/執行,如下:
#cp proftpd-1.3.5b/contrib/dist/rpm/proftpd.init.d /etc/init.d/proftpd
並檢查如下:
1、/etc/sysconfig/proftpd文件是否存在,如果不存在,手動創建,並寫入內容:
#echo'PROFTPD_OPTIONS="-DANONYMOUS_FTP"' > /etc/sysconfig/proftpd
2、/etc/init.d/proftpd配置文件第46行與第53行,皆修改爲執行文件所在位置(/usr/local/sbin/proftpd)。
5、更改默認配置文件:
修改:Group nobody
添加:DefaultAddress X.X.X.X
至此,編譯安裝結束。
【基礎信息】
所需文件位置:
默認源代碼安裝的配置文件爲:/usr/local/etc/proftpd.conf
默認的可執行程序爲:/usr/local/sbin/proftpd
所需相關命令:
重啓:/etc/init.d/proftpd restart
debug:/usr/local/sbin/proftpd -d9n
所需日誌:<需配置文件自定義>
SystemLog:
1.1.6pl1之後的版本,默認加載的mod_log.c模塊實現的,記錄的是有關FTP服務器錯誤及重啓的日誌。
LogFormat設置日誌格式,具體的每個字段解釋如下:
“%a客戶ID,%A匿名用戶名,%b發送請求的字節數,%d目錄名(相對路徑),%D目錄名(絕對路徑),%F上傳或下載的文件名(相對路徑),%f上傳或下載的文件名(絕對路徑),%h客戶的域名,%L本服務器IP,%m客戶發送的命令,%p本服務器端口,%P訪問進程ID,%r客戶發送的整條命令,%t本地時間,%T傳送就所用的時間(秒),%u客戶登錄的用戶名。”
TransferLog:
/var/log/xferlog這個日誌是用戶上傳,下載,刪除動作的日誌,也是查詢客戶投訴問題的日誌。
示例“Wed Jun 08 02:41:10 2016 0 61.48.32.202 9801 /home/jing/jingtest/2.txt a _ d r jing ftp 0 * c”
具體字段解釋如下:
“{Wed Jun 08 02:41:10 2016 時間},{0 傳輸持續時間},{61.48.32.202 遠程FTP客戶端地址},{9801 文件大小},{/home/jing/jingtest/2.txt 文件名},{a 傳輸類型,b是二進制文件,a是ascii傳輸},{_ 特殊行爲標記,C被壓縮的文件,U未被壓縮的文件,Ttar文件,_沒有特殊行爲},{d 方向,i上傳,o下載,d刪除},{r 用戶類型,r系統用戶,a匿名用戶},{jing 用戶名},{ftp 被調用的FTP服務器軟件名字},{0 認證方式,0表示沒有},{* 認證用戶ID,*表示沒有},{c 完成狀態,c表示完成,i表示沒有完成}。”
【配置信息】:
配置文件結構:
#全局設置
設置項目1 參數1
設置項目2 參數2
#某個目錄的設置
<Directory 路徑名>
...
...
</Directory>
#關於匿名登陸的設置
<Anonymous 匿名登陸的目錄>
...
...
<Limit 限制動作>
...
...
</Limit>
</Anonymous>
【具體配置】
#【基本配置】
#配置服務器名
ServerName "ProFTPD Default Installation"
#設置爲默認服務器
DefaultServer on
#設置默認的服務器監聽地址
DefaultAddress XXX.XXX.XXX.XXX
#設置服務器接收請求的端口
Port 21
#設置關閉IPv6支持
UseIPv6 off
#設置用戶上傳文件的權限掩碼,777-022
Umask 022
#設置服務器進程運行使用的用戶名
User nobody
#設置服務器進程運行使用的組
Group nobody
#設置用戶被chroot鎖定到各自的Home目錄
DefaultRoot ~
#設置屏蔽服務器版本信息
ServerIdent off
#設置允許寫入覆蓋
AllowOverwrite on
#設置下載時,允許斷點續傳。
AllowRetrieveRestart on
#設置上傳時,允許斷點續傳。
AllowStoreRestart on
#設置最大線程數
MaxInstances 30
#設置最大嘗試連接次數
MaxLoginAttempts 3
#設置無數據傳輸超時時間
TimeoutNoTransfer 300
#設置禁止DNS反查
UseReverseDNS off
IdentLookups off
#設置日誌格式
#LogFormat default "%h %l %u %t \"%r\" %s %b"
#AllowLogSymlinks on
LogFormat default "%a %A %h %l %u %t \"%r\" %s %b %c %d %D %f %F %L %m %T"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
#設置日誌
#WtmpLog off
#ServerLog /var/log/proftp-login.log
TransferLog /var/log/xferlog
SystemLog /var/log/proftp.log
ExtendedLog /var/log/proftpd/access.log ALL default
#設置服務器運行模式,獨立服務standalone,被監管inetd。這裏註釋是因爲開啓後日志有報錯。
#ServerType standalone
#設置被動模式使用的端口範圍。這裏暫時不需要,註釋
#PassivePorts 60000 65535
#設置允許root用戶登錄,默認禁止。
#RootLogin on
#虛擬用戶沒有shell,需要打開這個設定
#RquireValidShell off
#設置用戶傳輸速率
#TransferRate STOR|RETR (Kbytes/s) USER使用者
#設置每個賬號最多允許來源IP
#MaxHostsPerUser 1
#設置每個賬戶每個客戶端最多可同時登陸1次(避免多線程)
#MaxClientsPerUser 1
#設置同一個客戶端最多一個賬號可以登陸
#MaxClientsPerHost 1
#設置單用戶線程數
#MaxClientsPerHost 2
#設置最大用戶數
#MaxClients 20
#設置身份認證超時時間
#TimeoutLogin 30
#設置連接的超時時間
#TimeoutStalled 30s
#設置客戶端IDLE時間,默認600s
#TimeoutIdle 600
#設置歡迎信息,如果關閉是off。
#DisplayLogin welcome.msg
#設置切換文件夾時,顯示的歡迎信息。
#DisplayChdir .message
#設置虛擬用戶認證信息,用mod_auth_file.c驗證登錄用戶名密碼
#AuthOrder mod_auth_file.c #只允許虛擬用戶登錄
#AuthUserFile /xxx/ftp.users #存放用戶名和密碼的文件
#AuthGroupFile /xxx/ftp.group
#【mod_md5配置】
#我使用這個功能,主要是爲了實現,lftp的quote SITE MD5 $FILENAME命令。
#首先用-vv的方式檢查是否加載了這個模塊,如有加載成功,配置文件如下所示:
<Limit SITE_MD5>
AllowUser jing
DenyAll
</Limit>
<IfModule mod_md5.c>
MD5Engine on
</IfModule>
#【openssl認證配置】
#這個功能是爲了實現,自定義證書認證。
#同樣用-vv方式檢查是否加載了模塊,如果加載成功,會產生/home/jingjing.wang/proftpd-1.3.5b/modules/mod_tls.c這個軟連接。
#該功能需要本機部署openssl,具體部署方法,見下方【部署openssl】。
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/proftp-tls.log
TLSProtocol TLSv1
TLSRequired on
TLSRSACertificateFile /usr/local/etc/proftpd.crt
TLSRSACertificateKeyFile /usr/local/etc/proftpd.key
TLSVerifyClient off
TLSOptions NoSessionReuseRequired
</IfModule>
<Limit LOGIN>
AllowUser jing
DenyAll
</Limit>
#【配置完成】
【部署openssl】
1、獲取軟件包
#wget http://www.openssl.org/source/openssl-1.0.2.tar.gz
2、解壓
#tar -xzvf openssl-1.0.2.tar.gz
3、編譯安裝
#cd openssl-1.0.2
#./config
#make && make install
4、生成祕鑰文件
#cd /usr/local/etc/
#/usr/bin/openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout proftpd.key -out proftpd.crt
【異常】:
1、530 Login incorrect.Login failed.Remote system type is UNIX.Using binary mode to transfer files.
這個錯誤有很多問題,常見的:
1、用戶設置爲/sbin/nologin。<先設置允許登錄,sed'/USERNAME/s/nologin/bash/g' /etc/passwd,(記得加-i)再一步步調試。>
2、家目錄權限不是777。<先設置爲777,chmod 777 ~再一步步調試。>
3、Limit控制權限。<先設置爲All,最高權限,再一步步調試。>
4、auth驗證問題。<先註釋掉所有的auth,再一步步調試。也可以參照http://www.qianweikang.com/cheng-gong-jie-jue-proftpd-deng-lu-ti-shi-530-login-incorrect.htm>
2、421 Service not available, remote server has closed connection。Login failed.No control connection for command: Success
這個錯誤,我是誤打誤撞解決的,部分用戶出現421,調用DEBUG調試,看到配置文件中調用MD5模塊的配置有報錯(<IfModule mod_md5.c>),註釋後就好了。
by20160608,又出現一次,我把用戶名修改成/sbin/nologin後,再次出現 421,經過試驗,發現還是這個模塊,這個模塊中的AllowUser和MD5Path需要把允許的用戶名寫上纔可以。
3、日誌報錯:error: /var/log/proftpd is a world-writable directory、unable to open SystemLog '/var/log/proftpd/proftp.log': /var/log/proftpd/proftp.log is a world-writable directory
這個錯誤是由於日誌文件的權限問題,解決辦法:
chmod 755 /var/log/proftpd
chmod 640 /var/log/proftpd/*
【歡迎詞設置】
關於歡迎文件的設置包含如下參數:
%T 目前的時間
%F 所在硬盤剩下的容量
%C 目前所在的目錄
%R Client 端的主機名稱
%L Server 端的主機名稱
%U 使用者帳戶名稱
%M 最大允許連接人數
%N 目前的服務器連接人數
%E FTP服務器管理員的 email
%i 本次上傳的文件數量
%o 本次下載的文件數量
%t 本次上傳+下載的文件數量
知道這些參數,可以寫出歡迎語文件,例如:
歡迎您%U, 這是你的測試FTP服務器;
目前時間是:%T;
本服務器最多允許%M個用戶連接數;
目前服務器上已有%N個用戶連接數;
目前你所在的目錄是%C;
目錄所在的硬盤還剩下%F字節。
PROFTPD簡單介紹
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
bat記錄遠程桌面連接登錄信息
jason1982
2019-02-24 12:57:09
Exchange Server 2010 POP3&IMAP設置詳解
lingping
2019-02-23 14:05:54
虛擬化技術--服務器虛擬化
dawei818
2019-02-23 14:05:39
windows 2008 全新仲裁模式
qyh282110204
2019-02-23 14:05:36
軟路由建立PPPOE服務器
ct19871125
2019-02-23 14:04:24
MySQL性能優化的21個最佳實踐
fdb2b
2019-02-23 14:01:03
centos下簡單實現日誌切割,並上傳至日誌服務器。
隨風上升
2019-02-23 13:59:02
iscsi存儲
samplelife
2019-02-23 13:57:35
Nagios 3.2 監控部署(一)
samplelife
2019-02-23 13:57:35
如何將 .nk2 文件導入至 Outlook 2010
lingping
2019-02-23 14:05:54
yum源配置
Knight4NUI
2019-02-23 14:02:46