RedHat 5.4 RHCE VSFTPD学习笔记
?
我的博客:http://wqmsl.blog.51cto.com/
制作人:wqmsl
?
目標(biāo):1、常規(guī)VSFTPD服務(wù)器搭建(很簡(jiǎn)單的匿名訪問(wèn))
????? 2、本地用戶訪問(wèn)FTP的方式(安全性高)
????? 3、虛擬用戶訪問(wèn)方式(安全性最高)
????? 4、chroot安全機(jī)制,禁錮用戶只在自己的目錄下活動(dòng),不可切換到別的目錄下
????? 5、訪問(wèn)控制機(jī)制
1、IP說(shuō)明:
192.168.0.2——主機(jī)名:vsftpd.wqmsl.com?? vsftpd服務(wù)器
192.168.0.3——主機(jī)名:client.wqmsl.com??? client客戶端
2、前期準(zhǔn)備
?? 更改主機(jī)名稱(更改三處):1、hostname更改,2、hosts更改,3、/etc/sysconfig/network
3、所需軟件包如下
使用yum來(lái)安裝,rpm的方式也是可以的
進(jìn)入到vsftpd的主配置目錄下:
? (1)ftpusers是用戶控制文件,在這個(gè)文件里面的用戶,默認(rèn)是不可以使用vsftpd服務(wù)的。
? (2)user_list默認(rèn)功能和第一個(gè)一樣,但是通過(guò)配置,我們可以讓只有在第二個(gè)文件里的用戶才能使用vsftpd服務(wù),這樣新加入的用戶就不會(huì)自動(dòng)擁有vsftp的使用權(quán),這樣可以讓vsftpd服務(wù)器更加安全
? (3)vsftpd_conf_migrate.sh是vsftpd操作的一些變量和設(shè)置,這個(gè)不用管的
當(dāng)然,主角就是 vsftpd.conf ,配置vsftpd,我們操作最多的也就是這個(gè)文件了
一、下面開始實(shí)現(xiàn)第一個(gè)目標(biāo)(搭建基本的FTP服務(wù)器)
我先備份一下vsftpd的主配置文件
以便配置錯(cuò)誤之后方便恢復(fù)
下面看看vsftpd.conf文件的內(nèi)容吧
大概就這些內(nèi)容,可以自己more看一下哈!
默認(rèn)安裝完成vsftpd之后啟動(dòng)服務(wù)客戶端就可以訪問(wèn)FTP了(匿名訪問(wèn)的方式),
下面我在客戶端來(lái)訪問(wèn)一下FTP
不用登陸即可訪問(wèn)FTP的pub目錄,該目錄在FTP服務(wù)器的
這樣一個(gè)簡(jiǎn)單的FTP服務(wù)器就搭建完成了,(關(guān)于vsftpd.Conf文件里的詳細(xì)參數(shù)介紹看文章結(jié)尾的注意內(nèi)容)。
二、下面我們來(lái)實(shí)現(xiàn)第二個(gè)實(shí)驗(yàn)的目標(biāo)(本地用戶訪問(wèn)FTP的方式)
編輯vsftpd.conf文件,
關(guān)閉默認(rèn)允許的匿名訪問(wèn)的方式
把其YES改為NO 即可,重啟FTP服務(wù),匿名就不可以訪問(wèn)了
就要求我填寫用戶名和密碼了
添加用戶ftp1指定到ftp組,并指定ftp1的shell不可以登陸系統(tǒng)(安全起見(jiàn))
最后設(shè)置用戶的密碼,
在ftp1的家目錄下建立一個(gè)test的文件用來(lái)測(cè)試
現(xiàn)我用ftp1賬號(hào)現(xiàn)在訪問(wèn)一下
看看是不是可以了,登陸之后是在ftp1的家目錄下面,然后我們用Linux客戶端來(lái)訪問(wèn)一次
登陸成功
登陸后輸入“?”可以查看可以在ftp模式下敲擊的命令哦!
看我們?cè)谧约旱募夷夸?#xff0c;通過(guò)切換之后居然可以切換到/etc下面,當(dāng)然,這時(shí)候就是你下載passwd文件都是沒(méi)有問(wèn)題的,這樣是很不安全的啦
實(shí)現(xiàn)目標(biāo)四 禁錮用戶在自己家目錄
所以我們啟用chroot機(jī)制,把用戶禁錮在自己的家目錄,不允許他亂跑的哦。
我們來(lái)編輯vsftpd的主配置文件,來(lái)啟用cheroot
,
去掉前面注釋#即可,保存
在/etc/vsftpd下添加chroot_list文件,編輯chroot_list添加ftp1用戶,一行一個(gè)用戶(在此
文件內(nèi)的添加的用戶將不能切換目錄,視自己的家目錄為跟目錄)
重新加載vsftpd配置文件。
下面我們重新使用Linux客戶端訪問(wèn)以下,看看效果
看看,切換目錄失敗,說(shuō)明我們的實(shí)驗(yàn)是成功的
下面我使用ftp2用戶登陸(ftp2我沒(méi)有加入到chroot_list 文件中,所以正常情況下ftp2登陸之后應(yīng)該是可以切換目錄的)
從上面看到,我們呢使用ftp2用戶登陸之后是可以成功切換目錄的,現(xiàn)在你知道chroot的的作用了吧,也應(yīng)該知道這個(gè)chroot_list文件的作用了吧。
(注意:如果你啟動(dòng)了chroot機(jī)制,卻沒(méi)有子啊/etc/vsftpd/下建立chroot_list 這個(gè)文件,那么當(dāng)你登陸的時(shí)候會(huì)出現(xiàn)失敗的字樣具體如下:421 Service not available, remote server has closed connection,所以啟用之后一定要建立chroot_list 文件的哦)
三、下來(lái)我們來(lái)實(shí)現(xiàn)第三個(gè)目標(biāo),用虛擬用戶訪問(wèn)FTP服務(wù)器
??? 這個(gè)最重要的是
在/etc/vsftpd/下建立vlogin.txt文件,用來(lái)存儲(chǔ)虛擬用戶的用戶名和密碼
編輯vlogin.txt這個(gè)文件
編輯格式:奇數(shù)行:用戶名
????????? 偶數(shù)行:密碼
生成數(shù)據(jù)庫(kù)
保存虛擬帳號(hào)和密碼的文本文件無(wú)法被系統(tǒng)帳號(hào)直接調(diào)用哈~我們需要使用db_load命令生成db數(shù)據(jù)庫(kù)文件
(注意:rhel5默認(rèn)只安裝db4-4.3.29-9.fc6.i386.rpm和db4-devel-4.3.29-9.fc6.i386.rpm,
要使用db_load需要將db4-utils-4.3.29-9.fc6.i386.rpm包安裝上哈~否則會(huì)出現(xiàn)下圖的錯(cuò)? 誤:找不到db_load命令。)
修改數(shù)據(jù)庫(kù)文件訪問(wèn)權(quán)限
數(shù)據(jù)庫(kù)文件中保存著虛擬帳號(hào)的密碼信息,為了防止非法用戶盜取哈,我們可以修改該文件的訪問(wèn)權(quán)限。生成的認(rèn)證文件的權(quán)限應(yīng)設(shè)置為只對(duì)root用戶可讀可寫,即600
chmod 600 /etc/vsftpd/vlogin.db
編輯pam文件(編輯的時(shí)候一定要認(rèn)真,出現(xiàn)錯(cuò)誤的話客戶端登陸會(huì)被530的錯(cuò)誤提示拒絕登陸)PAM模塊配置文件路徑為/etc/pam.d/目錄,此目錄下保存著大量與認(rèn)證有關(guān)的配置文件,并以服務(wù)名稱命名。
用#注釋掉原來(lái)的所有參數(shù)(如需使用訪問(wèn)控制ftpusers,則不要注釋這行即可“auth?????? required???? /lib/security/pam_listfile.so item=user sense=deny file=/etc/
ftpusers onerr=succeed”)如上圖
在最后添加auth??????? reguired???? pam_userdb.so?????? db=/etc/vsftpd/vlogin
????????? account????? reguired???? pam_userdb.so?????? db=/etc/vsftpd/vlogin
這兩行,pam_userdb.so 的位置在/lib/security/下面,db=/etc/vsftpd/vlogin中的vlogin為我們生成的db數(shù)據(jù)文件vlogin.db。
添加一個(gè)系統(tǒng)用戶 來(lái)對(duì)應(yīng) 虛擬用戶,光有虛擬用戶是無(wú)法登陸的,我們需要讓虛擬用戶對(duì)應(yīng)一個(gè)系統(tǒng)實(shí)際的用戶,這樣所有的用戶登陸之后就會(huì)進(jìn)入到系統(tǒng)實(shí)際用戶的家目錄,我們?cè)偻ㄟ^(guò)給各個(gè)虛擬用戶來(lái)分配不同的權(quán)限(最后講這個(gè))
這里,-g指定用戶的屬組為ftp組,-s指定用戶的Shell為不可登陸,-d指定用戶的家目錄為/var/share ,它的加目錄的權(quán)限如下
編輯/etc/vsftpd/vsftpd.conf? ,
添加如下內(nèi)容
內(nèi)容選項(xiàng)解釋:
pam_service_name=vsftpd:????????? 配置vsftpd使用的PAM模塊為vsftpd
user_config_dir=/etc/vsftpd/vuserconfig:設(shè)置虛擬帳號(hào)權(quán)限配置的主目錄為 vuserconfig
guest_enable=yes??????????????????? 允許使用虛擬用戶登陸FTP
guest_username=ftp3???????????????? 虛擬用戶所對(duì)應(yīng)的系統(tǒng)用戶為ftp3(我之前添加的)。
max_clients=1:設(shè)置FTP服務(wù)器最大接入客戶端數(shù)為1個(gè)(為了方便測(cè)試,你可以根據(jù)自己的實(shí)際情況設(shè)定)
max_per_ip=1:設(shè)置每個(gè)IP地址最大連接數(shù)為1個(gè)(為了方便測(cè)試,你可以根據(jù)自己的實(shí)際情況設(shè)定)
在/etc/vsftpd/下建立vuserconfig目錄,用于存放用戶的權(quán)限配置文件,以便為各個(gè)用戶分配不同的權(quán)限,
在vuserconfig目錄下面建立用戶的權(quán)限配置文件,配置文件的名稱必須要和在vlogin.txt.中添加的用戶名一致
看一下ftp6配置文件的內(nèi)容:
參數(shù)詳解:
anon_world_readable_only=no???? 允許匿名用戶瀏覽器整個(gè)服務(wù)器的文件系統(tǒng)write_enable=yes??????????????? 允許在文件系統(tǒng)寫入權(quán)限
anon_mkdir_write_enable=yes???? 允許創(chuàng)建文件夾
anon_other_write_enable=yes????? 允許用戶改名和刪除文件的權(quán)限
anon_upload_enable=yes???????? 開啟匿名帳號(hào)的上傳功能
anon_max_rate=100000????????? 限定傳輸速度為100KB/s(以字節(jié)為單位的)
重啟服務(wù) service? vsftpd? restart /reload
現(xiàn)在使用ftp6虛擬用戶登陸可以看到,已經(jīng)登陸成功
而且已經(jīng)禁錮用戶在家目錄下面,切換用戶目錄失敗。
在用戶的權(quán)限配置文件下編輯不同的權(quán)限,那么對(duì)應(yīng)的用戶就會(huì)擁有不同的權(quán)限,
這里就看自己的實(shí)際情況了,你也可以在虛擬用戶的權(quán)限配置文件中添加對(duì)應(yīng)的系統(tǒng)實(shí)際用戶,虛擬用戶可以是? (1)多個(gè)虛擬用戶———— 一個(gè)實(shí)際系統(tǒng)用戶
??????????????????? (2)一個(gè)虛擬用戶————? 一個(gè)系統(tǒng)用戶
靈活多變,看自己的實(shí)際情況去設(shè)置。
四、實(shí)現(xiàn)第四個(gè)目標(biāo)訪問(wèn)控制機(jī)制
/etc/ftpusers(訪問(wèn)控制文件)
默認(rèn)是拒絕這些用戶登陸的(上面添加ftp6用戶) 但可以通過(guò)修改/etc/pam.d/ftp中的sense值為allow 就表示只允許登陸的用戶如下:
*****************************************************************************************************************
[root@service root]# more /etc/pam.d/ftp
#%PAM-1.0
auth?????? required????? /lib/security/pam_listfile.so item=user sense=deny file=/etc/
ftpusers onerr=succeed
auth?????? required????? /lib/security/pam_unix.so shadow nullok
auth?????? required????? /lib/security/pam_shells.so
account??? required????? /lib/security/pam_unix.so
session??? required?????? /lib/security/pam_unix.so
****************************************************************************************************************我們先來(lái)分析一下auth???????? required /lib/security/pam_listfile.so?? item=user sense=deny file=/etc/ftpusers onerr=succeed 這一句
其中 /lib/security/pam_listfile.so是調(diào)用這個(gè)模塊用來(lái)檢測(cè)登陸進(jìn)來(lái)的用戶是不是記記載在/etc/ftpusers中的用戶
而item=user 很明顯是說(shuō)明要檢測(cè)的是用戶
sense=deny則是處理方法deny就是就是拒絕的意思了
我有個(gè)用戶名字叫ftp6在默認(rèn)條件下條件下是可以登陸ftp服務(wù)器的我把它加入/etc/ftpusers 后看看情況哦
#echo "ftp6" >> /etc/ftpusers
有時(shí)候 你只想允許某部分人登陸ftp服務(wù)器 那么 你可以通過(guò)修改/etc/pam.d/ftp中的sense值為allow 就表示只允許登陸的用戶,那么你在 /etc/ftpusers 文件加入的 用戶就表示訪問(wèn)的 沒(méi)在文件內(nèi)的用戶都被拒絕
現(xiàn)在我使用ftp6來(lái)登錄一下FTP服務(wù)器試試
登錄失敗,說(shuō)明配置已經(jīng)生效。
Vsftpd的主配置文件/etc/vsftpd.conf的配置選項(xiàng)解釋:
我們要先了解幾個(gè)關(guān)鍵的配置選項(xiàng)
anonymous_enable=YES?????????????????? //允許匿名用戶登陸
local_enable=YES??????????????????????? //允許本地用戶登陸 如果這個(gè)不打開的話 uid 500以下的人都被訪問(wèn)拒絕
write_enable=YES??????????????????????? //允許客戶端寫命令
local_umask=022???????????????????????? //本地用戶新文件的umask的值 就等于ground 和other 部分的可寫部分去掉
anon_upload_enable=YES?????????????????? //允許匿名用戶上傳文件
anon_mkdir_write_enable=YES?????????????? //允許匿名用戶創(chuàng)建目錄 這個(gè)最好不要打開否則會(huì)帶來(lái)不可預(yù)測(cè)的后果
dirmessage_enable=YES????????????????????????? //允許使用目錄的消息
ftpd_banner=Welcome to weihua0722's FTP service.???? //登陸歡迎辭詞
ls_recurse_enable=YES??????????????????????????? //允許使用ls -R命令
listen=YES????????????????????????????????????? //監(jiān)聽(tīng)模式 就是要服務(wù)器單獨(dú)運(yùn)行
FTP原理嘗試:
后臺(tái)進(jìn)程:vsftpd類型:System V 服務(wù)使用端口:20(ftp-data),21(ftp)所需RPM包:vsftpd配置文件:/etc/vsftpd/vsftpd.conf
FTP的主動(dòng)模式和被動(dòng)模式很重要
主動(dòng)模式:
client 先連接服務(wù)器的 21端口(命令端口),然后client開放一個(gè)大于1024的端口等待服務(wù)器的20端口連接,21號(hào)端口的鏈接建立以后,服務(wù)器就用20去連接client開放的端口,簡(jiǎn)單來(lái)說(shuō)就是服務(wù)器主動(dòng)連客戶端啦
基于上面的連接方式,如果client端有個(gè)防火墻,服務(wù)器的20端口就連接不進(jìn)入,導(dǎo)致會(huì)連接失敗。
被動(dòng)模式:
就是client開啟大于1024的X端口連接服務(wù)器的21(命令端口),同時(shí)開啟X+1端口
當(dāng)21號(hào)端口連接成功后,client會(huì)發(fā)送PASV命令,通知服務(wù)器自己處于被動(dòng)模式,服務(wù)器收到這個(gè)消息后,就會(huì)開放一個(gè)大于1024的端口Y通知client,client接到通知后就會(huì)用X+1來(lái)連接服務(wù)器的Y端口,簡(jiǎn)單的說(shuō)就是client主動(dòng)連接服務(wù)器
一般我們使用的是主動(dòng)模式
大家了解被動(dòng)模式就可以了,當(dāng)你架設(shè)FTP服務(wù)器,出現(xiàn)這樣的情況,你應(yīng)該想到可以使用被動(dòng)模式來(lái)解決,當(dāng)然防火墻一般也支持FTP的追蹤模塊,會(huì)自動(dòng)識(shí)別自己發(fā)出的FTP數(shù)據(jù)請(qǐng)求。這樣制動(dòng)模式也能返回?cái)?shù)據(jù)
會(huì)遇到的問(wèn)題
1、500 OOPS: vsftpd: refusing to run with writable anonymous root
這表示ftp用戶的家目錄的權(quán)限不對(duì),應(yīng)該改過(guò)才對(duì);
2、有時(shí)候會(huì)遇到530的錯(cuò)誤,一般都是因?yàn)槟銌⒂昧颂摂M用戶之后編輯pam.d/vsftpd文件導(dǎo)致,內(nèi)容出現(xiàn)錯(cuò)誤的時(shí)候就會(huì)被拒絕登陸,所有一定要認(rèn)真。
?
我的博客:http://wqmsl.blog.51cto.com/
歡迎大家和我一起交流
總結(jié)
以上是生活随笔為你收集整理的RedHat 5.4 RHCE VSFTPD学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《开源成长策略——Talend 成功模式
- 下一篇: Kilim实现浅析(一)