首頁 / 精華文章 / [CentOS]Pure-FTPd 黑白亂玩
Logo

[CentOS]Pure-FTPd 黑白亂玩

Pure-FTPd的FXP設定除了AllowUserFXP選YES之外,Bind、ForcePassiveIP、PassivePortRange都給他指定一下再重啟動就可以了~ 😛

Pure-FTPd有一個網頁管理模組User manager for PureFTPd可以很方便的做使用者管理,所以用MySQL認證的方式就不用老是進SSH增加囉~ (H) ProFTPd的網頁管理模組我都裝不起來~ 唉 🙁

Step.1 下載最新的Pure-FTPd( Pure-FTPd最近改版改很大~三天兩頭改1次 (6) 不過我還是覺得比ProFTPD來得簡單,因為ProFTPD的網頁管理模組我都裝不起來,不適合我這個懶人 🙁 ),這邊我有自訂的安裝位置和指定MySQL路徑,--with-puredb是Pure-FTPd 基本的帳號管哩,--with-rfc2640是讓Pure-FTPd支援UTF8,語系可改成--with-language=english使用英文訊息或是--with-language=simplified-chinese使用簡體中文訊息。

wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.29.tar.gz
tar zxvf pure-ftpd-1.0.29.tar.gz
cd pure-ftpd-1.0.29
./configure --prefix=/usr/local/pureftpd --with-mysql=/usr/local/mysql --with-puredb --with-rfc2640 --with-everything --with-language=traditional-chinese
make
make install
cd ../
cp pure-ftpd-1.0.29/configuration-file/pure-config.pl /usr/local/pureftpd/sbin/
cp pure-ftpd-1.0.29/contrib/redhat.init /etc/init.d/pureftpd
chmod +x /etc/init.d/pureftpd
chmod 755 /usr/local/pureftpd/
chmod 755 /usr/local/pureftpd/sbin/pure-config.pl
chmod 777 /usr/local/pureftpd/sbin/pure-ftpwho

Step.2 編輯Pure-FTPd設定檔,除了要修改Bind 、ForcePassiveIP、PassivePortRange,不太重要的設定已經註釋起來了 。

vi /usr/local/pureftpd/pure-ftpd.conf

############################################################
#                                                          #
#         Configuration file for pure-ftpd wrappers        #
#                                                          #
############################################################
# 限定每一個使用者都只能在自己家目錄下活動。當設定成 no 時
# 則實體使用者可切換至其他目錄做存取。
ChrootEveryone              yes

# 限定最大連線數為 500。
MaxClientsNumber            500

# 限定同一來源端位址的最大連線數為 50。
MaxClientsPerIP             50

# 設定 FTP Server 要在哪個介面位址監聽哪個 port。預設是允許在所有介面位址監聽 21 port。
Bind                        95.154.229.216,21

# 指定使用 Passive mode 時的連線 IP (在 NAT 後面的 FTP Server 必須使用)
# 此處的 IP 是 FTP Server 的對外 IP
ForcePassiveIP              95.154.229.216

# 當 Client 端採用被動模式來建立資料通道時,FTP Server 預計所要使用 data channel 連接埠的範圍。
# 當您 Linux Client 端執行 ncftp 或 ftp 指令連上 FTP 站台後,可使用 passive 指令來變更連線模式。
PassivePortRange            60000 61000

# 是否允許使用 FXP Protocol
AllowUserFXP                yes
AllowAnonymousFXP           no

# 帳號認證以 MySQL 處理
MySQLConfigFile             /usr/local/pureftpd/pureftpd-mysql.conf

# 系統負載超過多少停止 Pure-FTPd
MaxLoad                     4

# 支援 UTF-8 檔名 (RFC 2640)
FileSystemCharset	          UTF-8
ClientCharset		            UTF-8

# ftp 的紀錄檔是否不需解析主機名稱。
DontResolve                 yes

# 發呆 15 分鐘後,自動斷線
MaxIdleTime                 15

# 硬碟空間使用超過百分之多少時,將不在接受新的上傳。
MaxDiskUsage                99

# ls 命令的限制。第一個參數給出文件顯示的最大數目。第二個參數是出最大的子目錄深度。
LimitRecursion              10000 8

# 當使用者家目錄不存在,是否要自動建立起來。
CreateHomeDir               yes

# 設定上傳檔案、目錄 (含建立新目錄) 的預設權限,177:077 表示檔案的預設權限為 600,目錄為 700。
Umask                       133:022

# 設定能允許實體使用者認證登入的最小 UID 為 100,也就是說 UID 100 以上 (含100) 的使用者方可認證登入。
# 如您欲允許 root 登入的話,這個地方請註解起來,並且在 /etc/ftpusers 檔案中將 root 帳號移除。
# /etc/ftpusers 是用來設定拒絕登入 FTP Server 的使用者名單的。
MinUID                      100

# 這個參數設定成 yes 的話,則 Client 可以看到檔名是以 "." 作開始的隱藏檔。
DisplayDotFiles             yes

# 是否要禁止使用者讀取隱藏檔內容。當以上兩個參數都設定 no 時,表示使用者對隱藏檔具有 r 及 w 的權限 (anonymous
# 為例外)。當 ProhibitDotFilesWrite 設定成 no,而 ProhibitDotFilesRead 設定成 yes 時,使用者是不能刪除檔案的。但是無論
# 如何設定,只要 TrustedGID 有設定時,則此群組的成員認證進來後是可以具有 r 及 w 的權限,並不會受到這裡的規範。
ProhibitDotFilesRead        no

# 是否要禁止使用者刪除或修改隱藏檔,即使使用者就是該隱藏檔的擁有者。設定 yes 就表示要禁止啦。
ProhibitDotFilesWrite       yes

# 當上傳檔案時,若對方目錄內已經存在一個同檔名的檔案,則允許將上傳的那個檔案作自動更名的動作。
AutoRename                  no

# 匿名使用者要下載的檔案,如果其擁有者是 ftp 的話,則不允許下載。當您的 FTP 站台開放 anonymous 上傳時
# (上傳之後的檔案擁有者為 ftp),為了防止有些人會上傳一些有問題的檔案來供人下載,因此才設定這個參數
# 而等管理者確認上傳的檔案沒問題後,就可以把此檔的擁有者做個改變,這樣就能提供正常下載了。
AntiWarez                   yes

# 是否不允許匿名登入。當設定成 no,表示允許匿名登入。
NoAnonymous                 yes

# 是否只允許匿名登入。當您希望實體使用者也能登入時,就設定成 no。
AnonymousOnly               no

# 是否要拒絕 anonymous 上傳。如要開放匿名使用者上傳檔案的話,就設定成 no。另外要允許上傳目錄時
# 除了這裡要設定成 no 以外,AnonymousCanCreateDirs 參數需設定成 yes 才行。
AnonymousCantUpload         yes

# 是否允許 anonymous 建立新目錄。如設定成 yes,則 anonymous 雖可建立目錄,但無法刪除。
AnonymousCanCreateDirs      no

# 如果你要記錄所有的客戶命令,設置這個指令為 "yes"。
VerboseLog                  no

# Turn on compatibility hacks for broken clients
BrokenClientsCompatibility  no

# Fork in background
Daemonize                   yes

# Syslog facility (auth, authpriv, daemon, ftp, security, user, local*)
# The default facility is "ftp". "none" disables logging.
SyslogFacility              ftp

# Be 'customer proof' : workaround against common customer mistakes like
# 'chmod 0 public_html', that are valid, but that could cause ignorant
# customers to lock their files, and then keep your technical support busy
# with silly issues. If you're sure all your users have some basic Unix
# knowledge, this feature is useless. If you're a hosting service, enable it.
CustomerProof               yes

# TrustedGID                100
# FortunesFile              /usr/share/fortune/zippy
# LDAPConfigFile            /usr/local/pureftpd/pureftpd-ldap.conf
# PGSQLConfigFile           /usr/local/pureftpd/pureftpd-pgsql.conf
# PureDB                    /usr/local/pureftpd/pureftpd.pdb
# ExtAuth                   /var/run/ftpd.sock
# PAMAuthentication         yes
# UnixAuthentication        yes
# AnonymousRatio            1 10
# UserRatio                 1 10
# AnonymousBandwidth        8
# UserBandwidth             8
# NoChmod                   yes
# KeepAllFiles              yes
# TrustedIP                 10.1.1.1
# LogPID                    yes
# AltLog                    clf:/var/log/pureftpd.log
# AltLog                    stats:/var/log/pureftpd.log
# AltLog                    w3c:/var/log/pureftpd.log
# Quota                     1000:10
# PIDFile                   /var/run/pure-ftpd.pid
# CallUploadScript          yes
# NoRename                  yes
# PerUserLimits             3:20
# NoTruncate                yes
# TLS                       1
# IPV4Only                  yes
# IPV6Only                  yes

Step.3 下載User manager,這邊要複製User manager到網站資料夾,並設定config.php可寫

wget http://acelnmp.googlecode.com/files/ftp_v2.1.tar.gz
tar zxvf ftp_v2.1.tar.gz
cp -rf ftp /web/www/
chmod 777 /web/www/ftp/config.php

A. 增加繁體中文語系檔案

wget http://machiel.generaal.net/files/pureftpd/languages/2.x/traditional-chinese.php.txt
cp traditional-chinese.php.txt /web/www/ftp/language/traditional-chinese.php

B. 新增一個pureftpd資料庫導入User manager的SQL檔案 (原本檔案附的太老了)

CREATE TABLE IF NOT EXISTS `admin` (
  `Username` varchar(35) NOT NULL DEFAULT '',
  `Password` char(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  PRIMARY KEY (`Username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `admin` (`Username`, `Password`) VALUES
('Administrator', 'd3933b977d1cf7566346d55b54f87111');

CREATE TABLE IF NOT EXISTS `users` (
  `User` varchar(16) NOT NULL DEFAULT '',
  `Password` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  `Uid` int(11) NOT NULL DEFAULT '14',
  `Gid` int(11) NOT NULL DEFAULT '5',
  `Dir` varchar(128) NOT NULL DEFAULT '',
  `QuotaFiles` int(10) NOT NULL DEFAULT '500',
  `QuotaSize` int(10) NOT NULL DEFAULT '30',
  `ULBandwidth` int(10) NOT NULL DEFAULT '80',
  `DLBandwidth` int(10) NOT NULL DEFAULT '80',
  `Ipaddress` varchar(15) NOT NULL DEFAULT '*',
  `Comment` tinytext,
  `Status` enum('0','1') NOT NULL DEFAULT '1',
  `ULRatio` smallint(5) NOT NULL DEFAULT '1',
  `DLRatio` smallint(5) NOT NULL DEFAULT '1',
  PRIMARY KEY (`User`),
  UNIQUE KEY `User` (`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `users` (`User`, `Password`, `Uid`, `Gid`, `Dir`, `QuotaFiles`, `QuotaSize`, `ULBandwidth`, `DLBandwidth`, `Ipaddress`, `Comment`, `Status`, `ULRatio`, `DLRatio`) VALUES
('ftpuser_1', 'd3933b977d1cf7566346d55b54f87111', 65534, 31, '/usr', 100, 50, 75, 75, '*', 'Ftp user (for example)', '1', 0, 0);

C. 然後打開http://你的域名/ftp/install.php開始設定User manager並新增使用者,這邊要填MySQL帳密,介意安全問題可以另外開一個MySQL帳號,然後設定只開放pureftpd資料庫的權限,記得要修改Administrator的密碼,安裝完之後才能登入User manager。

D. 安裝時第六步User manager輸出的pureftpd-mysql.conf給他存起來

vi /usr/local/pureftpd/pureftpd-mysql.conf

E. 都OK了之後將install.php改名或刪除都可以,然後就可以用http://你的域名/ftp/index.php登入囉~ 想要多重保護的也可以弄個htaccess保護這個資料夾 (H)

mv /web/www/ftp/install.php /web/www/ftp/install.php.bak

Step.4 編輯啟動Script把程式路徑改成自訂的安裝位置

vi /etc/init.d/pureftpd

fullpath=/usr/local/pureftpd/sbin/$prog
pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho

加到服務~ 收工啦 XD

chkconfig --level 345 pureftpd on
service pureftpd restart

附註 1:登入有問題就要檢查這三個檔案

vi /usr/local/pureftpd/pure-ftpd.conf

Bind的參數有沒有設到真實IP

vi /usr/local/pureftpd/pureftpd-mysql.conf

MYSQLDatabase
MYSQLUser
MYSQLPassword

有沒有開好資料庫,以及新增一個用戶

vi /web/www/ftp/config.php

FTP Address的參數有沒有設到真實IP

DBLogin
DBPassword
DBDatabase

有沒有開好資料庫,以及新增一個用戶

附註 2:User manager安裝步驟圖解

第一步檢查檔案是否可讀寫,相關模組有沒有支援

點我放大

第二步開始安裝囉

點我放大

第三步先用ROOT登入,他一定會建立一個資料庫,安裝完在刪掉就好了

點我放大

第四步記得語系選中文,FTP Address要填真實IP,其他選項填好了先按Save再按Step 5

點我放大

第五步記得修改Administrator的密碼

點我放大

第六步User manager輸出的pureftpd-mysql.conf給他存到 /usr/local/pureftpd/ureftpd-mysql.conf

點我放大

第七步就是安裝完畢,記得將install.php改名或刪除

點我放大

登入管理畫面後先把ftpuser_1砍掉吧~

點我放大

臉書回應

篇回應

關於 窮苦人家的小孩

In every democracy, the people get the government they deserve. ~Alexis de Tocqueville
上一篇:
下一篇:

您可能會喜歡

在VMware快速部署CentOS 7或是Windows 10

首先說CentOS,下載osb …

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料