標籤:des style blog http color 使用 os io
目錄: 一、什麼是Proftpd? 二、Proftpd的官方網站在哪裡? 三、在哪裡下載? 四、如何安裝? 1)系統使用者的配置+許可權控制 2)虛擬使用者的配置+許可權控制 一、什麼是Proftpd? ProFTPd是一套可配置性強的開放原始碼的FTP伺服器軟體,名稱最後的d字是因為在Linux中是用daemon來稱呼。ProFTPd與Apache的配置方式類似,因此十分容易配置和管理。 項目開始時,Unix或類Unix平台上 FTP Server十分有限,最常使用的恐怕就是wu-ftpd了。雖然wu-ftpd有著極佳的效能同時也是一套很好的軟體,然而它卻欠缺了許多Win32平台上FTP Server的一些特色,同時wu-ftpd過去也有不少的安全性漏洞陸續被發現。ProFTPD的原創者本身就曾經花非常多的時間尋找wu-ftpd 的漏洞加以改進並且增加許多功能。然而十分不幸的是,他很快地發現顯然wu-ftpd需要全部重新的改寫才能補足欠缺的設定能力以及缺乏的一些功能。 除了wu-ftpd的,也有一些其他的FTP伺服器可被設計成重量輕,安全而犧牲的可配置性。例如,Troll FTP是一個很好的FTP程式,比wu-ftpd更為安全而且資源佔用更少。不幸的是,它是非常適合於基本的FTP服務,但不適合需要更複雜功能的FTP網站. ProFTPD不是由其它FTP Server的原始碼修改而產生的,相反的,它是完全獨立而完整、重新改寫的FTP Server。許多著名的,訪問量大的網站使用ProFTPD的。ProFTPD有兩種運行方式,獨立伺服器與超級伺服器的子伺服器。無論從安全性和穩定性,還是可配置性來說都是非常好的選擇。
二、Proftpd的官方網站在哪裡? http://www.proftpd.org/
三、在哪裡下載? http://www.proftpd.org/md5_pgp.html
四、如何安裝? 標題中介紹了我的系統是ubuntu12.04,所以就直接使用apt-get的方式安裝了,安裝過程中會彈出個視窗讓你選擇運行模式,這裡我們選擇的是“standalone”
[email protected]:~# apt-get install proftpd
安裝後,proftpd會自動啟動,可以查看下進程是否存在"ps -aux|grep ftp"或用"netstat -tulpn | grep :21"查看下ftp的預設21連接埠是否有內容
[email protected]:~# ps -aux|grep ftpWarning: bad ps syntax, perhaps a bogus ‘-‘? See http://procps.sf.net/faq.htmlproftpd 18912 0.0 0.0 93376 2204 ? Ss 11:10 0:00 proftpd: (accepting connections) root 18942 0.0 0.0 8112 940 pts/1 S+ 12:06 0:00 grep --color=auto ftp[email protected]:~# netstat -tulpn | grep :21tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 18912/proftpd: (acc[email protected]:~#
proftpd基本配置說明:
關閉IPv6支援 UseIPv6 off # 禁用反向網域名稱解析 UseReverseDNS off #支援的編碼格式UseEncoding UTF-8 GBK# 不顯示伺服器相關資訊, 如proftpd版本 ServerIdent off #尋找客戶的遠端使用者名,關掉節省連線時間IdentLookups off#設定管理員名 ServerName "idoall.org FTP server" #設定伺服器運行模式,獨立服務,或者被監管 ServerType standalone #關閉歡迎資訊顯示 DeferWelcome on #如果顯示歡迎資訊,則指定顯示的檔案 DisplayLogin /usr/share/proftpd/etc/ftplogin.msg#指定切換檔案夾時,顯示的歡迎資訊DisplayChdir.message#FTP安全擴充MultilineRFC2228 on #設定為預設伺服器 DefaultServer on #不顯示連結檔案的目標檔案DefaultRoot ShowSymlinks off#允許root使用者登入,預設是不允許的,安全起見不推薦此選項。 RootLogin off #登陸後允許IDLE的時間TimeoutNoTransfer 600 #連線逾時的時間 TimeoutStalled 600 #用戶端idle時間設定,預設就是600秒 TimeoutIdle 600 #顯示時顯示詳細資料ListOptions "-l" #阻止帶.的命令DenyFilter \*.*/ # 限制lionftp使用者上傳的速率限制在150Kbytes/s TransferRate STOR 150 user lionftp # 限制lionftp使用者下載的速率限制在100Kbytes/s TransferRate RETR 100 user lionftp #連接埠號碼 Port 21 # 顯示以MB為單位 QuotaDisplayUnits Mb #設定被動模式使用的連接埠範圍 PassivePorts 60000 65535 #FTP SERVER最大串連數 MaxInstances 30 #設定伺服器處理序運行使用的使用者 User proftpd #設定伺服器處理序運行使用的組 Group nogroup #設定使用者上傳檔案的許可權掩碼 Umask 022 022 #設定使用者被chroot鎖定到的各自的Home目錄 DefaultRoot /usr/local/nginx/html # 允許覆蓋檔案 AllowOverwrite on #屏蔽伺服器版本資訊 ServerIdent off #上傳時,允許斷點續傳 AllowStoreRestart on #下載時,允許斷點續傳 AllowRetrieveRestart on #每個帳戶最多允許來源ip為1個 MaxHostsPerUser 10 #每個帳戶在每個用戶端最多可以同時登陸1次,可以防止多線程軟體下載對伺服器的破壞 MaxClientsPerUser 10 #同一個用戶端只能最多1個帳號可以登陸 MaxClientsPerHost 10 #是否要把ftp記錄在日誌中,如果不想可以設定成off屏蔽掉log日誌。 WtmpLog on #設定日誌 TransferLog /var/log/proftpd/xferlog SystemLog /var/log/proftpd/proftpd.log
Limit許可權說明:
CMD : Change Working Directory 改變目錄MKD : MaKe Directory 建立目錄的許可權RNFR : ReName FRom 更改目錄名的許可權DELE : DELEte 刪除檔案的許可權RMD : ReMove Directory 刪除目錄的許可權RETR : RETRieve 從服務端下載到用戶端的許可權STOR : STORe 從用戶端上傳到服務端的許可權READ :可讀的許可權,不包括列目錄的許可權,相當於 RETR , STAT 等WRITE :寫檔案或者目錄的許可權,包括 MKD 和 RMDDIRS :是否允許列目錄,相當於 LIST , NLST 等許可權,還是比較實用的ALL :所有許可權LOGIN :是否允許登陸的許可權#limit 中對使用者和群組的控制AllowUser 針對某個使用者允許的 LimitDenyUser 針對某個使用者禁止的 LimitAllowGroup 針對某個使用者組允許的 LimitDenyGroup 針對某個使用者組禁止的 LimitAllowAll 針對所有使用者組允許的 LimitDenyAll 針對所有使用者禁止的 Limit
關於歡迎檔案的設定包含如下參數:
%T 目前的時間%F 所在硬碟剩下的容量%C 目前所在的目錄%R Client 端的主機名稱%L Server 端的主機名稱%U 使用者帳戶名稱%M 最大允許串連人數%N 目前的伺服器串連人數%E FTP伺服器管理員的 email%i 本次上傳的檔案數量%o 本次下載的檔案數量%t 本次上傳+下載的檔案數量
知道這些參數,我們就可以寫出一個友好的歡迎語:
[email protected]:~# vi /usr/share/proftpd/etc/ftplogin.msg歡迎您%U, 這是idoall的測試FTP伺服器;目前時間是:%T;本伺服器最多允許%M個使用者串連數;目前伺服器上已有%N個使用者串連數;目前你所在的目錄是%C;目錄所在的硬碟還剩下%F位元組。
1)系統使用者的配置+許可權控制 a)Ubuntu系統配置nologin,與其他Linux稍有不同,最後一行增加/usr/sbin/nologin
[email protected]:~# vi /etc/shells# /etc/shells: valid login shells/bin/sh/bin/dash/bin/bash/bin/rbash/usr/bin/tmux/usr/bin/screen/usr/sbin/nologin
b)使用者操作許可權說明
/usr/share/nginx/html ----lionftp可以讀寫,chenshuaiftp唯讀/usr/share/nginx/html/a ----lionftp可以讀寫,chenshuaiftp可以讀寫
c)先建立一個ftp使用者組,再建立兩個測試使用者lionftp和chenshuaiftp,並且禁止ftp使用者使用終端登入,將使用者lionftp和chenshuaiftp加入到ftp使用者組中
[email protected]:~# groupadd ftp[email protected]:~# useradd lionftp -g ftp -s /usr/sbin/nologin[email protected]:~# useradd chenshuaiftp -g ftp -s /usr/sbin/nologin[email protected]:~# passwd lionftpEnter new UNIX password: Retype new UNIX password: passwd: password updated successfully[email protected]:~# passwd chenshuaiftpEnter new UNIX password: Retype new UNIX password: passwd: password updated successfully
d)設定目錄使用者權限
[email protected]:~# chown lionftp /usr/share/nginx/html
e)修改proftpd的配置
[email protected]:~# vi /etc/proftpd/proftpd.conf# If set on you can experience a longer connection delay in many cases.# # /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file. # To really apply changes, reload proftpd after modifications, if # it runs in daemon mode. It is not required in inetd/xinetd mode. # # Includes DSO modules Include /etc/proftpd/modules.conf 關閉IPv6支援 UseIPv6 off # 禁用反向網域名稱解析 UseReverseDNS off #支援的編碼格式UseEncoding UTF-8 GBK# 不顯示伺服器相關資訊, 如proftpd版本 ServerIdent off #尋找客戶的遠端使用者名,關掉節省連線時間IdentLookups off#設定管理員名 ServerName "idoall.org FTP server" #設定伺服器運行模式,獨立服務,或者被監管 ServerType standalone #關閉歡迎資訊顯示 DeferWelcome on #如果顯示歡迎資訊,則指定顯示的檔案 DisplayLogin /usr/share/proftpd/etc/ftplogin.msg#指定切換檔案夾時,顯示的歡迎資訊DisplayChdir.message#FTP安全擴充MultilineRFC2228 on #設定為預設伺服器 DefaultServer on #不顯示連結檔案的目標檔案DefaultRoot ShowSymlinks off#允許root使用者登入,預設是不允許的,安全起見不推薦此選項。 RootLogin off #登陸後允許IDLE的時間TimeoutNoTransfer 600 #連線逾時的時間 TimeoutStalled 600 #用戶端idle時間設定,預設就是600秒 TimeoutIdle 600 #顯示時顯示詳細資料ListOptions "-l" #阻止帶.的命令DenyFilter \*.*/ # 限制lionftp使用者上傳的速率限制在150Kbytes/s TransferRate STOR 150 user lionftp # 限制lionftp使用者下載的速率限制在100Kbytes/s TransferRate RETR 100 user lionftp #連接埠號碼 Port 21 # 顯示以MB為單位 QuotaDisplayUnits Mb #設定被動模式使用的連接埠範圍 PassivePorts 60000 65535 #FTP SERVER最大串連數 MaxInstances 30 #設定伺服器處理序運行使用的使用者 User proftpd #設定伺服器處理序運行使用的組 Group nogroup #設定使用者上傳檔案的許可權掩碼 Umask 022 022 #設定使用者被chroot鎖定到的各自的Home目錄 DefaultRoot /usr/local/nginx/html # 允許覆蓋檔案 AllowOverwrite on #屏蔽伺服器版本資訊 ServerIdent off #上傳時,允許斷點續傳 AllowStoreRestart on #下載時,允許斷點續傳 AllowRetrieveRestart on #每個帳戶最多允許來源ip為1個 MaxHostsPerUser 10 #每個帳戶在每個用戶端最多可以同時登陸1次,可以防止多線程軟體下載對伺服器的破壞 MaxClientsPerUser 10 #同一個用戶端只能最多1個帳號可以登陸 MaxClientsPerHost 10 #是否要把ftp記錄在日誌中,如果不想可以設定成off屏蔽掉log日誌。 WtmpLog on #設定日誌 TransferLog /var/log/proftpd/xferlog SystemLog /var/log/proftpd/proftpd.log <Directory "/usr/local/nginx/html/*"> <Limit ALL> AllowUser lionftpDenyAll </Limit> <Limit CWD READ DIRS>AllowAll</Limit></Directory> <Directory "/usr/local/nginx/html/a/*" ><Limit ALL>AllowUser lionftpAllowUser chenshuaiftpDenyAll</Limit><Limit CWD READ DIRS>AllowAll</Limit></Directory>#不允許任何人執行chmod命令(SITE_CHMOD)<Limit SITE_CHMOD> DenyAll </Limit> <IfModule mod_quotatab.c> QuotaEngine off </IfModule> <IfModule mod_ratio.c> Ratios off </IfModule> <IfModule mod_delay.c> DelayEngine on </IfModule> <IfModule mod_ctrls.c> ControlsEngine off ControlsMaxClients 2 ControlsLog /var/log/proftpd/controls.log ControlsInterval 5 ControlsSocket /var/run/proftpd/proftpd.sock </IfModule> <IfModule mod_ctrls_admin.c> AdminControlsEngine off </IfModule> # This is useful for masquerading address with dynamic IPs: # refresh any configured MasqueradeAddress directives every 8 hours <IfModule mod_dynmasq.c> # DynMasqRefresh 28800 </IfModule> Include /etc/proftpd/conf.d/
f)重啟ftp伺服器
[email protected]:~# service proftpd restart
g)在windows上測試連接
C:\Users\Administrator>ftpftp> open 192.168.1.100串連到 192.168.1.100。220 192.168.1.100 FTP server ready使用者(192.168.1.100:(none)): chenshuaiftp331 Password required for chenshuaiftp密碼:230-歡迎您chenshuaiftp,這是idoall的測試FTP伺服器;230- 目前時間是:Sat Aug 09 03:22:02 2014;230- 本伺服器最多允許0個使用者串連數;230- 目前伺服器上已有2個使用者串連數;230- 目前你所在的目錄是/;230- 目錄所在的硬碟還剩下0位元組。230 User chenshuaiftp logged inftp> dir200 PORT command successful150 Opening ASCII mode data connection for file list-rw-r--r-- 1 root root 537 Aug 6 06:38 50x.htmldrwxrwxrwx 19 root root 4096 Jun 17 05:49 xxxdrwxrwxrwx 7 root root 4096 Aug 9 01:19 aaaa226 Transfer completeftp: 收到 201 位元組,用時 0.01秒 13.40KB/秒。
2)虛擬使用者的配置+許可權控制 a)修改設定檔,在剛才的設定檔中增加以下配置,同時在“/usr/local/nginx/html/a/*”許可權部分增加一個使用者,後面我們用這個虛擬使用者“ftpchenshuai”來測試
# 不要求有合法shell,直接效果是允許nologin使用者和虛擬使用者登入RequireValidShell off# AuthOrder指定了許可權檢查的順序。這裡只使用虛擬使用者AuthOrder mod_auth_file.c mod_auth_unix.cAuthUserFile /usr/share/proftpd/etc/passwdAuthGroupFile /usr/share/proftpd/etc/group
修改後的proftpd的全部設定檔內容如下:
[email protected]:~# vi /etc/proftpd/proftpd.conf# If set on you can experience a longer connection delay in many cases.# # /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file. # To really apply changes, reload proftpd after modifications, if # it runs in daemon mode. It is not required in inetd/xinetd mode. # # Includes DSO modules Include /etc/proftpd/modules.conf 關閉IPv6支援 UseIPv6 off # 禁用反向網域名稱解析 UseReverseDNS off #支援的編碼格式UseEncoding UTF-8 GBK# 不顯示伺服器相關資訊, 如proftpd版本 ServerIdent off #尋找客戶的遠端使用者名,關掉節省連線時間IdentLookups off#設定管理員名 ServerName "idoall.org FTP server" #設定伺服器運行模式,獨立服務,或者被監管 ServerType standalone #關閉歡迎資訊顯示 DeferWelcome on #如果顯示歡迎資訊,則指定顯示的檔案 DisplayLogin /usr/share/proftpd/etc/ftplogin.msg#指定切換檔案夾時,顯示的歡迎資訊DisplayChdir.message#FTP安全擴充MultilineRFC2228 on #設定為預設伺服器 DefaultServer on #不顯示連結檔案的目標檔案DefaultRoot ShowSymlinks off#允許root使用者登入,預設是不允許的,安全起見不推薦此選項。 RootLogin off #登陸後允許IDLE的時間TimeoutNoTransfer 600 #連線逾時的時間 TimeoutStalled 600 #用戶端idle時間設定,預設就是600秒 TimeoutIdle 600 #顯示時顯示詳細資料ListOptions "-l" #阻止帶.的命令DenyFilter \*.*/ # 限制lionftp使用者上傳的速率限制在150Kbytes/s TransferRate STOR 150 user lionftp # 限制lionftp使用者下載的速率限制在100Kbytes/s TransferRate RETR 100 user lionftp #連接埠號碼 Port 21 # 顯示以MB為單位 QuotaDisplayUnits Mb #設定被動模式使用的連接埠範圍 PassivePorts 60000 65535 #FTP SERVER最大串連數 MaxInstances 30 #設定伺服器處理序運行使用的使用者 User proftpd #設定伺服器處理序運行使用的組 Group nogroup #設定使用者上傳檔案的許可權掩碼 Umask 022 022 #設定使用者被chroot鎖定到的各自的Home目錄 DefaultRoot /usr/local/nginx/html # 允許覆蓋檔案 AllowOverwrite on #屏蔽伺服器版本資訊 ServerIdent off #上傳時,允許斷點續傳 AllowStoreRestart on #下載時,允許斷點續傳 AllowRetrieveRestart on #每個帳戶最多允許來源ip為1個 MaxHostsPerUser 10 #每個帳戶在每個用戶端最多可以同時登陸1次,可以防止多線程軟體下載對伺服器的破壞 MaxClientsPerUser 10 #同一個用戶端只能最多1個帳號可以登陸 MaxClientsPerHost 10 #是否要把ftp記錄在日誌中,如果不想可以設定成off屏蔽掉log日誌。 WtmpLog on #設定日誌 TransferLog /var/log/proftpd/xferlog SystemLog /var/log/proftpd/proftpd.log # 不要求有合法shell,直接效果是允許nologin使用者和虛擬使用者登入RequireValidShell off# AuthOrder指定了許可權檢查的順序。這裡只使用虛擬使用者AuthOrder mod_auth_file.c mod_auth_unix.cAuthUserFile /usr/share/proftpd/etc/passwdAuthGroupFile /usr/share/proftpd/etc/group <Directory "/usr/local/nginx/html/*"> <Limit ALL> AllowUser lionftpDenyAll </Limit> <Limit CWD READ DIRS>AllowAll</Limit></Directory> <Directory "/usr/local/nginx/html/a/*" ><Limit ALL>AllowUser lionftpAllowUser chenshuaiftpAllowUser ftpchenshuaiDenyAll</Limit><Limit CWD READ DIRS>AllowAll</Limit></Directory>#不允許任何人執行chmod命令(SITE_CHMOD)<Limit SITE_CHMOD> DenyAll </Limit> <IfModule mod_quotatab.c> QuotaEngine off </IfModule> <IfModule mod_ratio.c> Ratios off </IfModule> <IfModule mod_delay.c> DelayEngine on </IfModule> <IfModule mod_ctrls.c> ControlsEngine off ControlsMaxClients 2 ControlsLog /var/log/proftpd/controls.log ControlsInterval 5 ControlsSocket /var/run/proftpd/proftpd.sock </IfModule> <IfModule mod_ctrls_admin.c> AdminControlsEngine off </IfModule> # This is useful for masquerading address with dynamic IPs: # refresh any configured MasqueradeAddress directives every 8 hours <IfModule mod_dynmasq.c> # DynMasqRefresh 28800 </IfModule> Include /etc/proftpd/conf.d/
b)設定檔中的虛擬使用者和使用者組的檔案如果不存在,先建立:
[email protected]:~# mkdir -p /usr/share/proftpd/etc/[email protected]:~# touch /usr/share/proftpd/etc/passwd[email protected]:~# touch /usr/share/proftpd/etc/group
c)建立一個虛擬使用者ftpchenshuai,並指定目錄
[email protected]:~# ftpasswd --passwd --file=/usr/share/proftpd/etc/passwd --name=ftpchenshuai --uid=3000 --home=/usr/local/nginx/html/a --shell=/bin/false
–passwd 指定建立一個新的虛擬使用者,–group則建立一個虛擬組; –file 指定儲存虛擬使用者的檔案; –name 指定此虛擬使用者的使用者名稱,密碼會在命令執行時要求輸入; –uid 指定此虛擬使用者對應的系統使用者UID,此虛擬使用者將以此系統UID的身份讀寫檔案 –home 指定此虛擬使用者的根目錄,就是其登陸FTP後的根目錄; –shell 指定此虛擬使用者的shell,為了安全當然指定一個不可登陸的shell了。 d)建立一個虛擬使用者組
[email protected]:~# ftpasswd --group --name=testgroup --gid=2014
e)將虛擬使用者添加到虛擬使用者組
[email protected]:~# ftpasswd --group --name=testgroup --gid=2014 --member=ftpchenshuai
f)如果使用者登入後,沒有寫入權限,要使用以下命令增加
[email protected]:~# chmod 777 -R /usr/local/nginx/html/a
g)重啟ftp伺服器
[email protected]:~# service proftpd restart
h)在windows上測試連接
C:\Users\Administrator>ftpftp> open 192.168.1.100串連到 192.168.1.100。220 192.168.1.100 FTP server ready使用者(192.168.1.100:(none)): ftpchenshuai331 Password required for ftpchenshuai密碼:230-歡迎您ftpchenshuai,這是idoall的測試FTP伺服器;230- 目前時間是:Sat Aug 09 03:30:53 2014;230- 本伺服器最多允許0個使用者串連數;230- 目前伺服器上已有2個使用者串連數;230- 目前你所在的目錄是/a;230- 目錄所在的硬碟還剩下0位元組。230 User ftpchenshuai logged inftp> pwd257 "/a" is the current directoryftp> dir200 PORT command successful150 Opening ASCII mode data connection for file list-rw-r--r-- 1 ftpchenshuai 3000 1870666 Aug 9 02:13 xxx.apk226 Transfer completeftp: 收到 88 位元組,用時 0.01秒 5.87KB/秒。ftp> put c:\a.txt200 PORT command successful150 Opening ASCII mode data connection for a.txt226 Transfer completeftp: 發送 1 位元組,用時 0.06秒 0.02KB/秒。ftp> dir200 PORT command successful150 Opening ASCII mode data connection for file list-rw-r--r-- 1 ftpchenshuai 3000 1 Aug 9 03:33 a.txt-rw-r--r-- 1 ftpchenshuai 3000 1870666 Aug 9 02:13 xxx.apk226 Transfer completeftp: 收到 154 位元組,用時 0.01秒 22.00KB/秒。ftp> bye221 Goodbye.
之前也嘗試過vsftpd等FTP,最後感覺還是Proftpd配置簡單比較方便一些。 ---------------------------------------博文迦壹部落格地址:http://idoall.org/home.php?mod=space&uid=1&do=blog&id=549轉載聲明:可以轉載, 但必須以超連結形式標明文章原始出處和作者資訊及著作權聲明,謝謝合作!---------------------------------------