使用vsftp虚拟用户实现安全访问控制
一、ftp連接方式
1、命令連接
? ?ftp在與用戶交互時(shí),首先打開的是TCP的21號(hào)端口,建立命令連接,這個(gè)連接會(huì)始終存在,直到用戶輸入bye的那一刻,才斷開命令連接。
2、數(shù)據(jù)連接
? ?1)主動(dòng)連接
? ?主動(dòng)連接是基于TCP21號(hào)端口的,這種方式下,是ftp服務(wù)器主動(dòng)去連接客戶端的,而客戶端該使用哪個(gè)端口來響應(yīng)這個(gè)請(qǐng)求呢?在這種情況下,ftp服務(wù)器和客戶端就會(huì)達(dá)成一個(gè)共識(shí):ftp服務(wù)器主動(dòng)連接請(qǐng)求的端口是用于命令連接的端口加1,如果端口被占用,就再加1,直到找到空閑的端口為止。假如客戶端與服務(wù)端建立的命令連接是:CIP,12345,SIP,21 此時(shí)客戶端使用12345這個(gè)端口與ftp服務(wù)器的21號(hào)端口建立命令連接,那么在主動(dòng)連接時(shí),服務(wù)器就會(huì)使用12345+1=12346這個(gè)端口去主動(dòng)連接客戶端。
? ?使用主動(dòng)連接這種方式去連接客戶端,就必然會(huì)造成一種缺陷:客戶端是不向外提供服務(wù)的,所以對(duì)于像這種主動(dòng)來掃描它端口的行為就會(huì)被認(rèn)為是一種赤裸裸的挑釁,一種攻擊,因此很容易被客戶端防火墻拒絕掉,造成連接的失敗。
? ?2)被動(dòng)連接
? ?被動(dòng)連接是基于TCP的隨機(jī)端口,這種方式下,客戶端會(huì)發(fā)送給服務(wù)器兩個(gè)數(shù)字(如123,89),那么這時(shí)建立的數(shù)據(jù)連接端口就是123*256+89。
二、用戶認(rèn)證方式
1、匿名用戶
? ?在登錄FTP時(shí)使用默認(rèn)的用戶名,一般是ftp或anonymous
2、系統(tǒng)用戶?
? ?使用系統(tǒng)用戶登錄,在/etc/passwd中
3、虛擬用戶
? ?FTP虛擬用戶是FTP服務(wù)器的專有用戶,使用虛擬用戶登錄FTP,只能訪問FTP服務(wù)器提供的資源,大大增強(qiáng)了系統(tǒng)的安全。
? ?虛擬用戶的優(yōu)點(diǎn):
? ?1)獨(dú)立:即為虛擬的,那么不會(huì)受到系統(tǒng)其他用戶的影響
2)安全:如果vsftpd用本地用戶搭建的話,有可能由于限制目錄,權(quán)限等問題而引發(fā)安全為題
三、配置虛擬用戶,實(shí)現(xiàn)安全控制(vsftpd+pam_mysql+mysql)
1、使用ftp虛擬用戶案例
? ?某技術(shù)論壇需要做一個(gè)與用戶交流使用的FTP服務(wù)器,需實(shí)現(xiàn)以下2條功能:
? ?1)專用賬號(hào)(ftpuser1)允許用戶上傳文件、下載文件、刪除文件、創(chuàng)建目錄
? ?2)專用賬號(hào)(ftpuser2)則只允許用戶下載,不允許上傳
2、新建本地用戶"vuser"
? ?為什么需要本地用戶呢?因?yàn)樘摂M用戶在服務(wù)器系統(tǒng)上不存在,所以需要新建一個(gè)本地用戶,把所有的虛擬用戶映射為一個(gè)系統(tǒng)用戶,它們?cè)L問時(shí)的文件目錄就是此系統(tǒng)用戶的家目錄(默認(rèn)權(quán)限是700)
3、安裝相關(guān)軟件程序
| 1 | [root@nmshuishui ~]# yum -y install vsftpd mysql-server mysql-devel pam_mysql |
4、創(chuàng)建虛擬用戶賬號(hào)
? ?1)準(zhǔn)備數(shù)據(jù)庫及相關(guān)表
? ?(1)創(chuàng)建數(shù)據(jù)庫
| 1 | [root@nmshuishui ~]# service mysqld start |
? ?(2)授權(quán)管理數(shù)據(jù)庫的用戶及網(wǎng)段
? ?(3)為vsftpd數(shù)據(jù)庫創(chuàng)建用戶表
? ?2)添加測(cè)試的虛擬用戶
? ?為了密碼安全,在為虛擬用戶添加密碼時(shí)應(yīng)該使用PASSWORD函數(shù)加密后存儲(chǔ)
5、配置vsftpd
? ?1)建立基于pam認(rèn)證配置文件
| 1 | [root@nmshuishui ~]# vim /etc/pam.d/vsftpd.mysql |
? ?添加如下兩行
| 1 2 | auth required?/lib64/security/pam_mysql.so user=vsftp?passwd=vsftpd host=172.16.251.93 db=vsftpd table=users?usercolumn=name passwdcolumn=password crypt=2 account required?/lib64/security/pam_mysql.so user=vsftp?passwd=vsftpd host=172.16.251.93 db=vsftpd table=users?usercolumn=name passwdcolumn=password crypt=2 |
? ?注意:由于mysql的安裝方式不同,pam_mysql.so基于unix sock連接mysql服務(wù)器時(shí)可能會(huì)出問題,此時(shí),建議授權(quán)一個(gè)可遠(yuǎn)程連接的mysql并訪問vsftpd數(shù)據(jù)庫的用戶。
? ?2)修改vsftpd的配置文件(/etc/vsftpd/vsftpd.conf),使其支持mysql認(rèn)證
? ?3)啟動(dòng)vsftpd服務(wù)進(jìn)行測(cè)試
為了以示區(qū)別,在公共目錄/var/ftp/pub目錄下,touch一個(gè)pub.txt,在/var/ftproot/目錄下touch一個(gè)ftproot.txt
? ?(1)匿名用戶登錄
? ?(2)虛擬用戶ftpuser1登錄
再看它所處的目錄,是在/var/ftproot/目錄下,有文件為證
(3)虛擬用戶ftpuser2登錄
? ?虛擬用戶ftpuser2登錄后與ftpuser1登錄所處的位置完全一樣,不再貼圖。
6、配置虛擬用戶的訪問權(quán)限
? ?vsftpd可以在配置文件目錄中為每個(gè)用戶提供單獨(dú)的配置文件以定義其ftp服務(wù)訪問權(quán)限,每個(gè)虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可。
? ?1)配置vsftpd為虛擬用戶提供配置文件目錄
| 1 2 | #vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers??#添加此項(xiàng) |
? ?2)創(chuàng)建虛擬用戶的配置文件目錄,并提供配置文件
| 1 2 3 4 5 6 | [root@nmshuishui ~]# cd /etc/vsftpd/??????????????? #進(jìn)入vsftpd目錄 [root@nmshuishui vsftpd]# mkdir vusers????????????? #創(chuàng)建虛擬用戶的配置文件目錄 [root@nmshuishui vsftpd]# cd vusers???????????????? #進(jìn)入虛擬用戶的配置文件目錄 [root@nmshuishui vusers]# touch ftpuser1 ftpuser2?? #提供虛擬用戶的配置文件 [root@nmshuishui vusers]# ls ftpuser1? ftpuser2 |
? ?3)配置虛擬用戶的訪問權(quán)限
? ?(1)ftpuser1允許用戶上傳文件、下載文件、刪除文件、創(chuàng)建目錄
| 1 2 3 4 5 | #vim ftpuser1 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_umask=022 |
? ? ? 在windows上使用FlashFXP測(cè)試
? ?(2)ftpuser2只允許用戶下載,不允許上傳
既然只允許ftpuser2下載,不允許上傳,那就不需要給它任何權(quán)限了,只要ftpuser1上傳的文件可讀,ftpuser2即可下載。
四、經(jīng)驗(yàn)分享時(shí)刻
1、如果沒有iptables規(guī)則的話,請(qǐng)關(guān)閉iptables,否則它會(huì)阻擋你vsftp服務(wù)的正常運(yùn)行
2、如果不使用selinux,也請(qǐng)關(guān)閉,如果不關(guān)閉會(huì)報(bào)下面這個(gè)錯(cuò)(使用FlashFXP連接FTP服務(wù)器)
本文轉(zhuǎn)自 nmshuishui 51CTO博客,原文鏈接:http://blog.51cto.com/nmshuishui/1390942,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的使用vsftp虚拟用户实现安全访问控制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Liferay 用本地私服(nexus)
- 下一篇: hadoop-2.7.1+zookeep