用Proftpd構(gòu)建Ttp服務(wù)器
用proftpd構(gòu)建ftp服務(wù)器:
FTP服務(wù)被廣泛的應(yīng)用著,常見的,一些大學(xué)、組織、機(jī)構(gòu)等等,都有通過(guò)FTP服務(wù)器向外發(fā)布數(shù)據(jù)…但在這里,我們將要構(gòu)建的FTP服務(wù)器將主要針對(duì) 用于用戶更新自己的網(wǎng)站。也就是說(shuō),讓用戶(root除外)只可以訪問(wèn)自己的Web目錄(本站前面介紹的HTTP服務(wù)器構(gòu)建中以public_html為 例)。
另外,為了避免通過(guò)平文傳輸時(shí),數(shù)據(jù)被截獲,從而泄漏隱私與密碼,我們采用TLS方式,加密FTP傳輸過(guò)程中的數(shù)據(jù),以確保安全。
(構(gòu)建FTP服務(wù)器,您將有多種選擇,比如通過(guò)vsftpd等等FTP服務(wù)器軟件。但ProFTPD在一些方面,更能夠符合我們的實(shí)際條件,尤其對(duì)于ADSL方式接入網(wǎng)絡(luò)的服務(wù)器,ProFTPD能夠很好的應(yīng)對(duì)不斷變化的IP地址造成的問(wèn)題。)
安裝 ProFTPD
由于ProFTPD不存在于CentOS中yum的官方庫(kù)中,所以用yum安裝ProFTPD需要定義非官方的庫(kù)。請(qǐng)先確認(rèn)相應(yīng)非官方庫(kù)文件的存在。
- [root@sample ~]# ls -l /etc/yum.repos.d/dag.repo ← 確認(rèn)相應(yīng)庫(kù)文件的存在性
- -rw-r--r-- 1 root root 143 Oct 1 21:33 /etc/yum.repos.d/dag.repo ← 確認(rèn)其存在(否則不能通過(guò)yum安裝ProFTPD)
如果以上,dag.repo文件不存在,則不能通過(guò)yum安裝ProFTPD,需要定義非官方庫(kù)。定義非官方庫(kù)的方法請(qǐng)見 “CentOS的下載、安裝及初始環(huán)境設(shè)置”一節(jié)中yum的相關(guān)設(shè)置。而且,在此前提下也要保證所定義的dag.repo文件的語(yǔ)法的正確性。
然后,通過(guò)yum來(lái)在線安裝ProFTPD。
- [root@sample ~]# yum -y install proftpd ← 安裝ProFTPD
- Setting up Install Process
- Setting up repositories
- Reading repository metadata in from local files
- Reducing Dag RPM Repository for Red Hat Enterprise Linux to included packages only
- Finished
- Parsing package install arguments
- Resolving Dependencies
- --> Populating transaction set with selected packages. Please wait.
- ---> Downloading header for proftpd to pack into transaction set.
- proftpd-1.2.10-10.2.el4.r 100% |=========================| 15 kB 00:00
- ---> Package proftpd.i386 0:1.2.10-10.2.el4.rf set to be updated
- --> Running transaction check
- Dependencies Resolved
=============================================================================
- Package Arch Version Repository Size
=============================================================================
- Installing:
- proftpd i386 1.2.10-10.2.el4.rf dag 699 k
- Transaction Summary
=============================================================================
- Install 1 Package(s)
- Update 0 Package(s)
- Remove 0 Package(s)
- Total download size: 699 k
- Downloading Packages:
- (1/1): proftpd-1.2.10-10. 100% |=========================| 699 kB 00:03
- Running Transaction Test
- Finished Transaction Test
- Transaction Test Succeeded
- Running Transaction
- Installing: proftpd ######################### [1/1]
- Installed: proftpd.i386 0:1.2.10-10.2.el4.rf
- Complete!
#p#
配置 ProFTPD
然后,通過(guò)修改相應(yīng)配置文件配置ProFTPD。
- [root@sample ~]# vi /etc/proftpd.conf ← 修改ProFTPD的配置文件
- ServerType standalone ← 找到這一行,在行首添加“#”
- ↓
- #ServerType standalone ← 變?yōu)榇藸顟B(tài),不使用常駐模式
- #ServerType inetd ← 找到這一行,去掉行首的“#”
- ↓
- ServerType inetd ← 變?yōu)榇藸顟B(tài),通過(guò)超級(jí)服務(wù)器來(lái)啟動(dòng)ProFTPD
- DefaultRoot ~ !adm ← 找到這一行,將“ !adm”改為“/public_html !wheel”
- ↓
- DefaultRoot ~/public_html !wheel ← 變?yōu)榇藸顟B(tài),使除wheel組用戶的根目錄為public_html
找到TLS設(shè)置的語(yǔ)句群,如下:
- # TLS
- # Explained at http://www.castaglia.org/proftpd/modules/mod_tls.html
----------------------------------------------------------------
- #TLSEngine on
- #TLSRequired on
- #TLSRSACertificateFile /usr/share/ssl/certs/proftpd.pem
- #TLSRSACertificateKeyFile /usr/share/ssl/certs/proftpd.pem
- #TLSCipherSuite ALL:!ADH:!DES
- #TLSOptions NoCertRequest
- #TLSVerifyClient off
- ##TLSRenegotiate ctrl 3600 data 512000 required off timeout 300
- #TLSLog /var/log/proftpd/tls.log
----------------------------------------------------------------
↓將以上水平線間部分的語(yǔ)句,每行行首的“#”都去掉,變?yōu)橄旅嫠骄€間的狀態(tài):
----------------------------------------------------------------
- TLSEngine on
- TLSRequired on ← 只允許TLS方式的連接(如果將on改為off,普通方式也被允許)
- TLSRSACertificateFile /usr/share/ssl/certs/proftpd.pem
- TLSRSACertificateKeyFile /usr/share/ssl/certs/proftpd.pem
- TLSCipherSuite ALL:!ADH:!DES
- TLSOptions NoCertRequest
- TLSVerifyClient off
- #TLSRenegotiate ctrl 3600 data 512000 required off timeout 300
- TLSLog /var/log/proftpd/tls.log
----------------------------------------------------------------
然后在配置文件的末尾填如下幾行:
- ExtendedLog /var/log/proftpd/access.log WRITE,READ default ← 記錄連接日志到相應(yīng)日志文件
- ExtendedLog /var/log/proftpd/auth.log AUTH auth ← 記錄認(rèn)證日志到相應(yīng)日志文件
- MasqueradeAddress digeast.no-ip.info ← 定義服務(wù)器域名
- PassivePorts 50000 50030 ← 為PASV模式連接時(shí)指定端口號(hào)(1024以后存在的任意端口號(hào))
- 然后,為服務(wù)器建立證書。
- [root@sample ~]# cd /usr/share/ssl/certs ← 進(jìn)入相應(yīng)的目錄
- [root@sample certs]# make proftpd.pem ← 建立服務(wù)器證書
- umask 77 ; \
- PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
- PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
- /usr/bin/openssl req -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 ; \
- cat $PEM1 > proftpd.pem ; \
- echo "" >> proftpd.pem ; \
- cat $PEM2 >> proftpd.pem ; \
- rm -f $PEM1 $PEM2
- Generating a 1024 bit RSA private key
- .........++++++
- ............++++++
- writing new private key to '/tmp/openssl.sG3126'
-----
- Country Name (2 letter code) [GB]:CN ← 輸入國(guó)家簡(jiǎn)寫
- State or Province Name (full name) [Berkshire]:Hei Long Jiang ← 輸入省份
- Locality Name (eg, city) [Newbury]:Harbin ← 輸入城市
- Organization Name (eg, company) [My Company Ltd]:www.centospub.com ← 輸入組織名(任意)
- Organizational Unit Name (eg, section) []: ← 直接回車跳過(guò)
- Common Name (eg, your name or your server's hostname) []:www.centospub.com ← FTP服務(wù)器名反饋
- Email Address []:yourname@yourserver.com ← 輸入E-mail地址
#p#
啟動(dòng) ProFTPD
啟動(dòng)之前,先對(duì)超級(jí)服務(wù)器的ProFTPD的啟動(dòng)腳本做一些修改。
- [root@sample certs]# vi /etc/xinetd.d/xproftpd ← 編輯ProFTPD啟動(dòng)腳本
- log_on_success += DURATION USERID ← 找到此行,將“DURATION USERID”改為“HOST PID”
- ↓
- log_on_success += HOST PID ← 變?yōu)榇藸顟B(tài),防止登錄時(shí)要等待30秒
- log_on_failure += USERID ← 找到此行,將“USERID”改為“HOST”
- ↓
- log_on_failure += HOST ← 變?yōu)榇藸顟B(tài),防止登錄時(shí)要等待30秒
- disable = yes ← 找到此行,將yes改為no
- ↓
- disable = no ← 變?yōu)榇藸顟B(tài),讓ProFTPD通過(guò)超級(jí)服務(wù)器啟動(dòng)
然后,通過(guò)重新啟動(dòng)超級(jí)服務(wù)器間接啟動(dòng)ProFTPD。
- [root@sample certs]# chkconfig xproftpd on ← 設(shè)置ProFTPD自啟動(dòng)
- [root@sample certs]# chkconfig --list xproftpd ← 查看ProFTPD自啟動(dòng)
- xproftpd on ← 確認(rèn)為on的狀態(tài)就OK
- [root@sample certs]# /etc/rc.d/init.d/xinetd restart ← 重新啟動(dòng)超級(jí)服務(wù)器
- Stopping xinetd: [ OK ]
- Starting xinetd: [ OK ]
連接到FTP服務(wù)器
當(dāng)我們成功的啟動(dòng)了FTP服務(wù)之后,就可以通過(guò)客戶端軟件連接到服務(wù)器進(jìn)行文件的上傳和下載了。但由于,本站介紹的方法,把安全、傳輸?shù)谋C苄苑旁诹?***位,這也就使得好多不支持TSL的FTP軟件無(wú)法連接到服務(wù)器。支持TSL的FTP客戶端軟件,比較有代表性的有Staff-FTP, SmartFTP。本站將以SmartFTP為例(下一節(jié)),介紹如何從客戶端通過(guò)FTP連接到服務(wù)器的方法。
【編輯推薦】