顯示具有 vsftpd 標籤的文章。 顯示所有文章
顯示具有 vsftpd 標籤的文章。 顯示所有文章

2011年2月1日 星期二

Vsftpd.log

預設安裝Ubuntu時,安裝vsftpd伺服器
於/var/log/vsftpd.log 不會自動產生log輪轉的問題!!

解決方式:
apt-get install logrotate
logrotate -vf /etc/logrotate.conf

2011年1月24日 星期一

vsftpd設定

相關檔案或目錄




/etc/vsftpd.conf  //vsftpd的設定檔
/etc/pam.d/vsftpd   //PAM模組設定檔,身份認證之用
/etc/vsftpd.ftpusers    //pam模組用來指定某user無法登入的設定檔
/etc/vsftpd.user_list    //依vsftpd.conf內的userlist_enable, userlist_deny參數設定而有不同功能
/etc/vsftpd.chroot_list   //將某帳號chroot 在他們的家目錄下,和vsftpd.conf內的chroot_list_enable, chroot_list_file參數相關
/usr/sbin/vsftpd      //主要執行檔
/var/ftp/     //匿名使用者登入的根目錄

常用功能設定做法


不讓某帳號離開家目錄

vi /etc/vsftpd.conf
修改vsftpd.conf  只允許某些人登錄ftp
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd.chroot_list  //列在裡面的使用者可登錄,無法離開家目錄

vi /etc/vsftpd.chroot_list //列入允許帳號 
stu1
stu2

/etc/init.d/vsftpd restart



預設讓所有帳號不能離開家目錄,只有特定的帳號才行
chroot_local_user=yes
chroot_list_enable=yes //啟動chroot_list_file檔案的功能
chroot_list_file=/etc/vsftpd.chroot_list  //列在裡面的使用者,可離開家目錄

vsftpd.conf
#表示預設不啟動
基本設定
#local_enable=yes //本地帳號可登入
#write_enable=yes //可寫入,上傳,修改,但匿名者除外
#idle_session_timeout=600 //逾期時間為600秒
#data_connection_timeout=120 //資料傳輸的timeout為2分鐘
以下需自行加入
listen=no //no為透過xintd執行,yes為獨立執行
download_enable=yes //是否可以下載伺服器檔案
dirlist_enable=yes  //是否能用ls指令列出所有目錄中的檔案
check_shell=yes  //是否檢查登入帳號的shell是否為合法
one_process_mode=no //專門讓2.4版kernel使用
use_sendfile=yes //對大量讀寫動作會有非常好的效能
tcp_wrappers=no //是否要支援此功能,但需在編譯時做設定
匿名登入設定
anonymous_enable=yes //接受匿名登入
#anon_upload_enable=yes //讓匿名帳號可上傳,但需指定一可寫入目錄
#anon_mkdir_write_enable=yes //讓匿名帳號可建立目錄
#chown_uploads=yes  //將匿名登入者上傳的檔案,設定為chown_username
#chown_username=whoever //指定whoever帳號權限為匿名上傳的權限
以下需自行加入
#anon_otherwrite_enable=no  //讓匿名者可以修改檔名,目錄
#anon_world_readable_only=yes   //讓匿名者只可以讀
#no_anon_password=no  //直進進入不需密碼#anon_root=somedir  //讓匿名者登入時自動切換到somedir目錄
#anon_max_rate=30000  //讓匿名者只使用30kb/s的速度
#anon_umask=077 //讓匿名者上傳的檔案權限變成300

ps,提供anonymous帳號前需:
1,在linux上建立名為ftp帳號
2,給予一家目錄,並設權限為755,擁有者為root
資料傳輸
connect_from_port_20=yes //要求資料傳輸都採用標準的port20以下需自行加入
pasv_min_port=5000  //要求被動連線連生的port範圍pasv_max_port=5500  //同上
max_per_ip=0  //listen=on時,限制單獨ip可有幾條連線,0表無限制max_per_client=0  //listen=on時,限制同一時間可以有幾條連線,0為無限制
max_clients=10 //最多同時10人連進ftp
local_max_rate=0 //限制使用者頻寬,單位為bytes/second,0為無限制anon_max_rate=0 //限制匿名者頻寬,其餘同上

虛擬帳號設定,需搭配pam認證

以下需自行加入
guest_username=ftp  //使用虛擬帳號對應到的使用者名稱guest_enable=no
guest_username=/home/virtual/$user
user_sub_token=$user
virtual_use_local_privs=no  //限定虛擬帳號是否使用linux特定帳號權限
記錄檔設定
xferlog_enable=yes //啟用記錄檔記錄所有上載與下載#xferlog_file=/var/log/xferlog //網路上通用記錄格式的記錄檔儲存位置#xferlog_std_format=yes //使用標準記錄格式以下需自行加入
vsftpd_log_file=/var/log/vsftpd.log //vsftpd本身記錄,用vsftpdlog格式
dual_log_enable  //同時記錄vsftpd.log及xferlog
syslog_enable  //不使用這兩種格式記錄,而是送到syslog,會記錄登入者與其任何動作
安全設定
local_umask=022  //使用者將檔案上傳的權限都設成755,預設為700chroot_local_user=no  //是否讓系統上所有帳號都進行chroot,預設為no
#chroot_list_enable=no //是否啟動chroot_list_file檔案的功能,預設為no#chroot_list_file=/etc/vsftpd.chroot_list  //列在裡面的使用者,無法離開家目錄
userlist_enable=yes  //是否啟動vsftpd的扺擋機制,預設為no
userlist_deny=yes  //預設yes表示userlist_file內user不可用ftp,設no則只有檔案內user才可用ftp,(需啟用userlist_enable此參數才作用)
userlist_file=/etc/vstpd.user_list  //userlist_deny的值是yes或no會影響該檔案內的user是否可用ftp#deny_email_enable=yes //拒絕使用banned_email_file指定檔案中,以email為密碼的匿名登入
#banned_email_file=/etc/vsftpd.banned_emails
以下需自行加入
anon_umask=077 //匿名登入上傳檔時的權限hide_file={*.doc,*.pass}  //隱藏.doc和.pass的檔案
deny_file={*.doc}  //拒絕存取.doc的檔案force_dot_file=no  //強制讓開頭的檔案顯示
訊息顯示
dirmessage_enable=yes //啟動個別目錄的個別化訊息功能
#ftpd_banner=string //設定使用者登入的歡迎訊息以下需自行加入
banner_file=file_name //指定file_name的內容做為登入的歡迎訊息
message_file=.message //指定個別目錄的訊息檔案為.message
其他參數
#nopriv_user=ftpsecure //指定vsftp以較不具權限帳號執行
#async_abor_enable=yes //啟動abor指令支援
#ascii_upload_enable=yes //啟動ascii模式的上傳#ascii_download_enable=yes //啟動ascii模式的下載#ls_recurse_enable=yes //可用-R列出目錄下所有檔案名稱,預設為no

文章來源
http://blog.jsdan.com/1979

ubuntu設定vsftp

文章來源
http://blog.udn.com/nigerchen/2261345

sudo apt-get install vsftpd

檢查是否安裝成功

netstat -tul | grep ftp

會有一個LISTEN,表示已運行待命中。
先取消匿名登入

如何設定vsftp權限

sudo vim /etc/vsftpd.conf
#不接受匿名用戶
anonymous_enable=No

#接受本地用戶
local_enable=YES

#可以上傳(全局控制).若想要匿名用戶也可上傳則需要設置anon_upload_enable=YES,若想要匿名用戶可以建立目錄則需要anon_mkdir_write_enable=YES.這裡禁止匿名用戶上傳,所以不設置這兩項.
write_enable=YES

#本地用戶上傳文件的umask
local_umask=022

#使用上傳/下載日誌,日誌文件默認為/var/log/vsftpd.log,可以通過xferlog_file選項修改
xferlog_enable=YES

#日誌使用標準xferlog格式
xferlog_std_format=YES


#本地用戶login後所在目錄,若沒有設置此項,則本地用戶login後將在他的home目錄(/etc/passwd的第六個欄位)中.匿名用戶的對應選項是anon_root<
local_root=/var/ftp

#設置為YES則下面的控制有效
chroot_list_enable=YES

#若為NO,則記錄在chroot_list_file選項所指定的文件(默認是/etc/vsftpd.chroot_list)中的用戶將被chroot在登錄後所在目錄中,無法離開.如果為YES,則所記錄的用戶將不被chroot.這裡選擇YES.(管理員使用居多)
chroot_local_user=NO

#若設置為YES則記錄在userlist_file選項指定文件(默認是/etc/vsftpd.user_list)中的用戶將無法login,並且將檢察下面的userlist_deny選項
userlist_enable=YES

#若為NO,則僅接受記錄在userlist_file選項指定文件(默認是/etc/vsftpd.user_list)中的用戶的login請求.若為YES則不接受這些用戶的請求.
userlist_deny=NO

#注意!!!vsftpd還要檢查/etc/vsftpd.ftpusers文件,記錄在這個文件中的用戶將無法login!!

#伺服器以standalong模式運行,這樣可以進行下面的控制
listen=YES



都改好了嗎?記得要重新啟動vsftp,才會生效

sudo /etc/init.d/vsftpd restart

------
補充:
新增一個帳號是test管理web server

那我們要怎麼限制這個帳號要控管哪個資料夾呢?

chroot_local_user=NO,而且在 /etc/vsftpd.chroot_list
也輸入了test這個帳號,那這個帳號將被限定在/home/test/,登入ftp後,將會無法回上一層,你的/home/test/被限定為根目錄,


但是我的web server資料夾不是test,那怎麼做??

我們要修改帳號的初始路徑

sudo vim /etc/passwd

我們會看到下面的訊息(假設帳號為test)
test : x : 1001 : 1001 : test : /home/test : /bin/bash
^^^       ^^^    ^^^     ^^    ^^^^^^^
帳號       帳號id    群組id  群組名  家目錄位置

我們的目錄已改變在 /home/www/,那這個test帳號要管理web server 的資料夾,則可以把 /home/test/ 改成 /home/www/

家目錄的位置可以這樣修改,但是其餘的參數請勿在此修改,若導致帳號無法處理,我可無法負責。

我們可以看是否有修改成功,可以下這個指令

sudo grep test /etc/passwd

若出現
test : x : 1001 : 1001 : test : /home/www : /bin/bash

那就是修改正確,那就可以去你的ftp上面看是不是可以看到www裡的內容

vsftpd結合mysql管理ftp使用者

文章來源
http://walile.info/blog/?p=107

模組請安裝pam_mysql.so
設定前說明:
其實這要綁定vsftpd是利用unix帳號做登入帳號管理,所以想利用mysql做管理的話(一般叫做建立vsftpd虛擬使用者),必需要透過linux中做認證管理的PAM(Pluggable Authentication Modules)做處理,這樣才能將vsftp+mysql+unix帳號綁定管理。
—————————————————————-開始了……
STEP1. 先下載vsftpd以及mysql先安裝好….(unbuntu 不用說吧?apt-get install 套件名稱)
STEP2. 設定/etc/vsftpd.conf 檔,將設定檔加上以下二個個設定:
guest_enable=YES
guest_name=使用者名稱,本例使用名稱為virtual (這個使用都必需是在unix account中建立的,之後要提供給使用者使用的)
STEP3. 設定mysql:
mysql中,先在mysql資料庫的user這個table中,建立一個專門讓pam認證使用登入的使用者,在本例中使用的名稱叫virtual,並且只能做select的動作,並且用localhost登入。
接下來,建立一個db叫做vsftpd,裡面建立了一個table叫做users,這個是要用來管理虛擬使用者的table。其中的table我建立了username和passwd二個欄位(注意!如果有使用加密,像mysql的password加密欄位,其password欄位請開超過60,否則會認證失敗)。記得要先在這個table中先建立一個使用者,等一下用來測試用。(ex. user,密碼暫設為pass)
STEP4. 開始來設定pam了….
/etc/pam.d/common-auth
這個檔案要加入以下這個
auth sufficient pam_mysql.so user=virtual passwd=pass host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=passwd crypt=2
/etc/pam.d/common-account
這個檔案要加入的
account sufficient pam_mysql.so user=virtual passwd=pass host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=passwd crypt=2
其中,在pam_mysql.so後面出現的user=virtual和passwd=pass是指在mysql中mysql資料庫user這個table中,剛剛有設定可以登入mysql的使用者帳號及密碼。另外,crypt=2代表密碼是用mysql password hash做為加密。(1為unix DES加密、2為mysql password hash加密、3為MD5加密、4為SHA)若要使用SHA加密,其pam_mysql.so的版本需要0.7以上版本才有支援(但是目前都為RC版本)
接下來,重啟服務:
/etc/init.d/vsftpd restart
這樣就完成了!
接下來,進一步想要讓虛擬帳號移到自己的資料夾中,只需要做接下來的動作:
在/etc/中建立一個資料夾為vsftpd_user_config,然後在/etc/vsftpd.conf中,加入二行:
user_config_dir=/etc/vsftpd_user_config
user_sub_token=$USER
然後,在vsftpd_user_config這個資料夾中,建立以虛擬使用者為名稱的檔案。ex. user。然後檔案內只需要加一行來指定登入後要移至的位置:
local_root=/home/user
再重啟服務就完成了!

vsftp

vi /etc/vsftpd.conf

#write_enable=YES
write_enable=YES

不讓某帳號離開家目錄

vi /etc/vsftpd.conf
修改vsftpd.conf  只允許某些人登錄ftp
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd.chroot_list  //列在裡面的使用者可登錄,無法離開家目錄

vi /etc/vsftpd.chroot_list //列入允許帳號 
stu1
stu2

/etc/init.d/vsftpd restart