於 FTP 分類下的文章
前言
在使用FTP(Vsftp)的時後,有時會需要記錄log,以方便日後有問題發生時,比較容易查到是什麼問題。在Vsftp的log方面有兩種記錄方式,分別為syslog(預設的)、xferlog。可以依照個人需求選擇設定,也可兩種同時設定。
設定
在開始設定之前,先說明一下使用到的參數和參數介紹。
1. 參數介紹
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# syslog(預設的) syslog_enable # 設定syslog_enable=YES ,會把 LOG 記錄到 /var/log/messages 裡。 # 設定syslog_enable=NO 可自行指定存放位置,或不指定就存放在預設的/var/log/vsftpd.log # syslog_enable 預設值為 NO vsftpd_log_file # 用來指定vsftpd log 存放位置,若沒設定預設存放在/var/log/vsftpd.log # vsftpd_log_file=/var/log/vsftpd/vsftpd.log 可自行指定存放路徑 # xferlog xferlog_enable # xferlog_enable=YES 開啟使用xferlog 記錄LOG,會詳細記錄有關上傳/下載的訊息 # xferlog_enable 預設值為NO xferlog_file # xferlog= /var/log/vsftpd/xferlog 設定xferlog的LOG存放位置 (u-ftpd 格式的log) # 若沒設定預設是存放在/var/log/xferlog xferlog_std_format # xferlog_std_format 預設值為NO,若設定為YES,則log 內容會採用標準xferlog 格式(wu-ftpd 日誌檔所採用的格式) #其他參數 dual_log_enable # log_ftp_protocol=YES 會將所有FTP 有關的requests 和responses 全部記錄 # log_ftp_protocol 預設值為NO dual_log_enable # 若設定為YES,則可同時記錄xferlog和syslog(vsftpd.log) # dual_log_enable 預設值為NO setproctitle_enable # 若設定為YES ,查看系統狀態時可列出ftp當下連線狀態。 # 執行方式如 ps -ef | grep vsftp 可看到誰正在連線 # setproctitle_enable 預設值為NO |
前言
在完成vsftp虛擬化後,接下來就是一些進階的設定了。如果還不會設定或是還沒設定vsftp虛擬化的可參考此篇「Centos FTP (vsftp)虛擬化設定」後在接著看下面的設定。要不然怕在步驟上跳太快會看不懂。
環境
Centos 5.7
vsftpd-2.0.5-24.el5
需求
在虛擬化設定下,用外網連線時能看到「ftp」這個資料夾內的東西。而在使用內網連線時要能看到整個「faq」內的東西。
/home/faq
├ ftp
├ ├ public
├ └ customer
└ user
├ sales
├ customer
└ accounting
會使用到此方法來設定FTP主要是想要讓某些資料夾只可允許公司內網IP連線,增加安全性上的考量。
設定說明
1. 設定vsftp虛擬化。
若還沒設定的請參考此篇「Centos FTP (vsftp)虛擬化設定」
2. 帳密管理
在使用此方式設定下,在user的帳號密碼部份,則是統一使用相同的設定檔管理
此設定方式可參考Centos FTP (vsftp)虛擬化設定的第4點-建立虛擬帳號的資料庫。
前言:
為什麼要虛擬化? 虛擬化有什麼好處?
使用虛擬化主要是方便管理和增加Server的安全性。在未虛擬化的情況下,若使用ftp的user過多,那勢必會造成Server在安全性上的重大隱憂。而在虛擬化後的vsftp可靈活的設定FTP虛擬用戶的權限,降低因user過多造成的安全性問題。這邊會比較建議,在允許的情況下就使用虛擬化設定會好一些。
環境:
Centos 5.7
vsftpd-2.0.5-24.el5
需求:
建立兩個虛擬帳號共用資料夾faq並且能下載、上傳和刪除的權限,但不可離開家目錄
設定說明:
1. 安裝
1.1 檢查是否已安裝vsftp
[root@localhost ~]# rpm -qa | grep vsftpd
vsftpd-2.0.5-21.el5 |
1.2 若是沒有安裝的話可自行安裝,或升級版本為vsftpd-2.0.5-24.el5
[root@localhost ~]# yum -y install vsftpd*
Dependencies Resolved ============================================================== Package Arch Version Repository Size ============================================================== Updating: vsftpd x86_64 2.0.5-24.el5 base 141 k Transaction Summary ============================================================== Install 0 Package(s) Upgrade 1 Package(s) |
一、 FTP和Vsftp介紹
FTP
檔案傳輸協議(英文:File Transfer Protocol,簡稱為FTP)是用於在網路上進行檔案傳輸的一套標準協議。透過FTP就可以在網路上進行文件的上傳或下載。它屬於網路傳輸協議的應用層。FTP是一個8位元的用戶端-伺服器協議,能操作任何型別的檔案而不需要進一步處理,就像MIME或Unicode一樣。但是,FTP有著極高的延時,這意味著,從開始請求到第一次接收需求資料之間的時間,會非常長;並且不時的必須執行一些冗長的登陸行程。
VsFTP
VsFTP是一款在Linux版本中,最被廣泛使用的FTP服務。優點是小巧輕快、安全易用,能讓自身特點得以發揮。目前在開源碼中常見的FTPD套件主要有,ProFTPD、PureFTPd和wuftpd等。
二、 VsFTP 設定說明
在VsFTP的啟動方式有兩種「VsFTP」和「xinetd」。
在這邊就先來介紹用VsFTP啟動的方式。
若想了解xinetd啟動方式可參考「vsftpd架設(Super daemon)」
1. 安裝VsFTP
1.1 先查詢是否有安裝了VsFT
[root@localhost ~]# rpm -q vsftpd
vsftpd-2.0.5-21.el5 |
1.2 安裝及啟用VsFTP
若沒有安裝的話請先行安裝
[root@localhost ~]# yum install vsftpd
[root@localhost ~]# /etc/init.d/vsftp start [root@localhost ~]# netstat -tulnp |grep 21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 4804/vsftpd #確定vsftp服務是否有起來,並且是以vsftp所啟動的 |
vsftpd 的全名是『Very Secure FTP Daemon 』
vsftpd 擁有兩種啟動的方式,分別是一直在監聽的【stand alone】 ,
一種則是透過 xinetd 這個 【super daemon】 來管理的方式。
在CentOS上預設都是用Stand alone來啟動的。
兩種vsftpd的使用時機為 :
【stand alone】: 如果你的ftp伺服器是提供給整個網際網路來進行大量下載的任務,例如公
家機關,或各大學校的 FTP 伺服器,那建議你使用stand alone 的方式,
服務的速度上會比較好
【super daemon】: 如果只是提供給公司內部人員使用的FTP,那使用super daemon來
管理就可以了
在【stand alone】中又可分為【stand alone-實體用戶】和【super daemon-匿名用戶】
這邊先介紹【super daemon】
一開始先檢查是否有安裝vsftp
[root@localhost ~]# rpm -q vsftpd vsftpd-2.0.5-16.el5_4.1 |
如果你的 CentOS 沒有安裝, 請利用 yum install vsftpd 來安裝他
【Super daemon】的設定方式
如果FTP較少在使用的情況下,可考慮使用Super daemon,在Super daemon管理部份就要自行修改設定檔。
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf #找到這一行 listen=YES #把YES改成NO listen=NO |
接下來修改設定檔,但是底下設定檔必須要自己新增才行。(基本設定)
有關設定檔內容的部份可參考【Super daemon設定檔語法說明 】
[root@localhost ~]# vi /etc/xinetd.d/vsftpd service ftp { socket_type = stream wait = no user = root server = /usr/sbin/vsftpd log_on_success += DURATION USERID log_on_failure += USERID nice = 10 disable = no } |
vsftpd 的全名是『Very Secure FTP Daemon 』
vsftpd 擁有兩種啟動的方式,分別是一直在監聽的【stand alone】 ,
一種則是透過 xinetd 這個 【super daemon】 來管理的方式。
在CentOS上預設都是用Stand alone來啟動的。
兩種vsftpd的使用時機為 :
【stand alone】: 如果你的ftp伺服器是提供給整個網際網路來進行大量下載的任務,例如公
家機關,或各大學校的 FTP 伺服器,那建議你使用stand alone 的方式,
服務的速度上會比較好
【super daemon】: 如果只是提供給公司內部人員使用的FTP,那使用super daemon來
管理就可以了
在【stand alone】中又可分為【stand alone-實體用戶】和【super daemon-匿名用戶】
這邊先介紹【super daemon-匿名用戶】
匿名登入的設定方式
首先我們要先知道當用匿名登入時的目錄在那個地方。基本上都是放在預設/var/ftp/目錄當中。
首先,先說明一下幾個重要的設定檔案
● /etc/vsftpd/vsftpd.conf
簡單來說,整個 vsftpd 的設定檔就只有這個檔案!是用『參數=設定值』來設定的, 等號兩邊不
能有空白喔!詳細的vsftpd.conf說明可用『man 5 vsftpd.conf 』查看。
● /etc/pam.d/vsftpd
這個是 vsftpd 使用 PAM 模組時的相關設定檔。主要用來作為身份認證之用,還有一些使用者
身份的抵擋功能, 也是透過這個檔案來達成的。
● /etc/vsftpd.ftpusers
和/etc/pam.d/vsftpd有關係,也就是PAM模組(/etc/pam.d/vsftpd_ 所指定的那個無法登入的使用
者設定檔。這個檔案的設定很簡單,只要將『不想讓他登入的帳號』寫入這個檔案就可以。一行
一個帳號。
● /etc/vsftpd.user_list
這個檔案能否生效與vsftpd.conf內的兩個參數有關,分別是『userlist_enable和userlist_deny』。
如果說/etc/vsftpd.ftpusers是PAM模組的抵擋設定項目,那麼這個/etc/vsftpd.user_list 則是 vsftpd
自訂的抵擋項目。事實上這個檔案與/etc/vsftpd.ftpusers幾乎一模一樣,在預設的情況下,你可
以將不希望可登入vsftpd的帳號寫入這裡。不過這個檔案的功能會依據vsftpd.conf設定檔內的
userlist_deny=(YES/NO) 而不同
● /etc/vsftpd.chroot_list
這個檔案預設是不存在的,所以必須要手動自行建立。這個檔案的主要功能是可以將某些帳號的
使用者chroot在家目錄下。但這個檔案要生效與vsftpd.conf內的『 chroot_list_enable,
chroot_list_file 』兩個參數有關。如果想要將某些實體用戶限制在家目錄下而不許到其他目錄去,
可以啟動這個設定項目喔
● /usr/sbin/vsftpd
這是 vsftpd 的主要執行檔,vsftpd只有這一個執行檔
● /var/ftp/
這是vsftpd預設匿名者登入的根目錄
建立vsftpd.conf的設定資料
雖然說可以同時開啟【stand alone-實體用戶】和【super daemon-匿名用戶 】,不過基於
安全性考量還是建議針對單一種身份來設定會比較安全一些。這邊就來介紹匿名登入的
設定方式
可依照個人的需求來設定vsftpd.conf,以下是一些基本的設定可參考看看。
至於其它Vsftd.conf詳細說明,可以參考【Vsftd.conf設定說明】
vsftpd 的全名是『Very Secure FTP Daemon 』
vsftpd 擁有兩種啟動的方式,分別是一直在監聽的【stand alone】 ,
一種則是透過 xinetd 這個 【super daemon】 來管理的方式。
在CentOS上預設都是用Stand alone來啟動的。
兩種vsftpd的使用時機為 :
【stand alone】: 如果你的ftp伺服器是提供給整個網際網路來進行大量下載的任務,例如公
家機關,或各大學校的 FTP 伺服器,那建議你使用stand alone 的方式,
服務的速度上會比較好
【super daemon】: 如果只是提供給公司內部人員使用的FTP,那使用super daemon來
管理就可以了
在【stand alone】中又可分為【stand alone-實體用戶】和【super daemon-匿名用戶】
這邊先介紹【stand alone-實體用戶】
查詢是否有安裝vsftpd
[root@localhost ~]# rpm -q vsftpd vsftpd-2.0.5-16.el5_4.1 |
如果你的 CentOS 沒有安裝, 請利用 yum install vsftpd 來安裝他吧
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * addons: centos.ustc.edu.cn * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn addons | 951 B 00:00 base | 2.1 kB 00:00 #中間內容略過。 Is this ok [y/N]: y 中間過程會有兩次需要輸入y(確定) Is this ok [y/N]: y Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Updating : vsftpd 1/2 Cleanup : vsftpd 2/2 Updated: vsftpd.x86_64 0:2.0.5-16.el5_5.1 Complete! #這樣就安裝完了 |
先來啟動vsftp
正在啟動 vsftpd 中的 vsftpd: [ 確定 ] [root@localhost ~]# netstat -tulnp| grep 21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 4804/vsftpd #確定vsftp服務是否有起來,並且是以vsftp所啟動的 |
再來介紹Super daemon各種語法的功能和說明
一般設定項目:服務的識別、啟動與程式
● disable(啟動與否)
設定值:[yes|no],預設 disable = yes
disable為取消的意思,此值可設定該服務是否要啟動。預設所有的super daemon
管理的服務都不啟動的。若要啟動就得要設定為『disable = no』
● id(服務識別)
設定值:[服務的名稱]
雖然服務在設定檔開頭『service服務名稱』已經指定了,不過有時後會有重
複的設定值,此時可以用id來取代服務名稱。可以參考一下
/etc/xinetd.d/time-stream來思考一下原理
● server(程式檔名)
設定值:[program 的完整檔名]
這個就是指出這個服務的啟動程式。例如/usr/bin/rsync為啟動rsync服務的指令,
所以這個設定值就會成為:『server = /usr/bin/rsync』
● server_args(程式參數)
設定值:[程式相關的參數]
這裡應該輸入的就是server那裡需要輸入的一些參數。例如rsync需要
加入 –daemon,所以這裡就設定:『server_args = –daemon』。與上面server
搭配,最終啟動服務的方式『/usr/bin/rsync –daemon』
● user(服務所屬UID)
設定值:[使用者帳號]
如果 xinetd 是以 root 的身份啟動來管理的,那麼這個項目可以設定為其他使用
者。此時這個daemon將會以此設定值指定的身份來啟動該服務的程序喔!舉
例來說,你啟動rsync時會以這個設定值作為該程序的UID。
● group
跟user的意思相同。此項目填入群組名稱即可。
近期迴響