vsftp 鎖定用戶目錄

vsftp 安裝以後給用戶權限和鎖定目錄;

關閉SELinux:

修改/etc/selinux/config文件中的SELINUX="" 爲 disabled ,然後重啓。

如果不想重啓系統,使用命令setenforce 0

添加用戶:

useradd -d /var/www -s /sbin/nologin ftpuser

主要是修改/etc/vsftpd/vsftpd.conf如下:


chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list



vim chroot_list

添加鎖定目錄用戶

Ftpuser

Upload

當然可以修改路徑:

usermod –d /www/html   ftpuser


**vsftpd.user_list:該文件裏的用戶賬戶在默認情況下也不能訪問FTP服務器,僅當vsftpd .conf配置文件裏啓用userlist_enable=NO選項時才允許訪問。

/etc/vsftpd/user_list ,添加上需要阻止的本地用戶,一個用戶名一行 用被阻止的用戶


grep -v "^#" vsftpd.conf 



anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=000

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

listen=YES

listen_port=21

pasv_address=192.168.10.123

pasv_addr_resolve=yes

pasv_enable=YES

pasv_min_port=5000

pasv_max_port=5008

use_localtime=YES

listen_ipv6=NO

allow_writeable_chroot=YES

pam_service_name=vsftpd

userlist_enable=YES


配置相關來源網絡:

登錄和對匿名用戶的設置

write_enable=YES               //是否對登錄用戶開啓寫權限。屬全局性設置。默認NO
local_enable=YES               //是否允許本地用戶登錄FTP服務器。默認爲NO
anonymous_enable=YES          //設置是否允許匿名用戶登錄FTP服務器。默認爲YES
ftp_username=ftp                //定義匿名用戶的賬戶名稱,默認值爲ftp。
no_anon_password=YES             //匿名用戶登錄時是否詢問口令。設置爲YES,則不詢問。默 
認NO
anon_world_readable_only=YES   //匿名用戶是否允許下載可閱讀的文檔,默認爲YES。
   anon_upload_enable=YES      //是否允許匿名用戶上傳文件。只有在write_enable設置爲
YES時,該配置項纔有效。而且匿名用戶對相應的目錄必須有寫權限。默認爲NO。
anon_mkdir_write_enable=YES //是否允許匿名用戶創建目錄。只有在write_enable設置爲    YES時有效。且匿名用戶對上層目錄有寫入的權限。默認爲NO。
anon_other_write_enable=NO    //若設置爲YES,則匿名用戶會被允許擁有多於
上傳和建立目錄的權限,還會擁有刪除和更名權限。默認值爲NO。

2.設置用戶登錄後所在的目錄 
local_root=/var/ftp             
// 設置本地用戶登錄後所在的目錄。默認配置文件中沒有設置該項,此時用戶登錄FTP服務器後,所在的目錄爲該用戶的主目錄,對於root用戶,則爲/root目錄。
anon_root=/var/ftp            
//設置匿名用戶登錄後所在的目錄。若未指定,則默認爲/var/ftp目錄。

 

3.控制用戶是否允許切換到上級目錄 
       在默認配置下,用戶可以使用“cd..”命名切換到上級目錄。比如,若用戶登錄後所在的目錄爲/var/ftp,則在“ftp>”命令行 下,執行“cd..”命令後,用戶將切換到其上級目錄/var,若繼續執行該命令,則可進入Linux系統的根目錄,從而可以對整個Linux的文件系統 進行操作。

若設置了write_enable=YES,則用戶還可對根目錄下的文件進行改寫操作,會給系統帶來極大的安全隱患,因此,必須防止用戶切換到Linux的根目錄,相關的配置項如下:
chroot_list_enable=YES                    
// 設置是否啓用chroot_list_file配置項指定的用戶列表文件。設置爲YES則除了列在j/etc/vsftpd/chroot_list文件中的的帳號外,所有登錄的用戶都可以進入ftp根目錄之外的目錄。默認NO
chroot_list_file=/etc/vsftpd/chroot_list         
// 用於指定用戶列表文件,該文件用於控制哪些用戶可以切換到FTP站點根目錄的上級目錄。
chroot_local_user=YES                    
// 用於指定用戶列表文件中的用戶,是否允許切換到上級目錄。默認NO
注意:要對本地用戶查看效果,需先設置local_root=/var/ftp

具體情況有以下幾種:
1)當chroot_list_enable=YES,chroot_local_user=YES時,在/etc/vsftpd/chroot_list文件中列出的用戶,可以切換到上級目錄;未在文件中列出的用戶,不能切換到站點根目錄的上級目錄。
2)當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd/chroot_list文件中列出的用戶,不能切換到站點根目錄的上級目錄;未在文件中列出的用戶,可以切換到上級目錄。
3)當chroot_list_enable=NO,chroot_local_user=YES時,所有用戶均不能切換到上級目錄。
4)當chroot_list_enable=NO,chroot_local_user=NO時,所有用戶均可以切換到上級目錄。
5)當用戶不允許切換到上級目錄時,登錄後FTP站點的根目錄“/”是該FTP賬戶的主目錄,即文件的系統的/var/ftp目錄。

 

4.設置訪問控制 
(1)設置允許或不允許訪問的主機(見TBP14)
tcp_wrappers=YES用來設置vsftpd服務器是否與tcp wrapper相結合,進行主機的訪問控制。默認設置爲YES,vsftpd服務器會檢查/etc/hosts.allow和/etc /hosts.deny中的設置,以決定請求連接的主機是否允許訪問該FTP服務器。這兩個文件可以起到簡易的防火牆功能。
比如,若要僅允許192.168.168.1~192.168.168.254的用戶,可以訪問連接vsftpd服務器,則可在/etc/hosts.allow文件中添加以下內容:
vsftpd:192.168.168.0/255.255.255.0 :allow
all:all:deny

(2)設置允許或不允許訪問的用戶
對用戶的訪問控制由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件來控制實現。相關配置命令如下:
userlist_enable=YES     
// 決定/etc/vsftpd/user_list文件是否啓用生效。YES則生效,NO不生效。
userlist_deny=YES       
// 決定/etc/vsftpd/user_list文件中的用戶是允許訪問還是不允許訪問。若設置爲YES,則/etc/vsftpd/user_list 文件中的用戶將不允許訪問FTP服務器;若設置爲NO,則只有vsftpd.user_list文件中的用戶,才能訪問FTP服務器。

 

5.設置訪問速度 
anon_max_rate=0       
//設置匿名用戶所能使用的最大傳輸速度,單位爲b/s。若設置爲0,則不受速度限制,此爲默認值。
local_max_rate=0       
// 設置本地用戶所能使用的最大傳輸速度。默認爲0,不受限制。

 

6.定義用戶配置文件 
在vsftpd服務器中,不同用戶還可使用不同的配置,這要通過用戶配置文件來實現。
user_config_dir=/etc/vsftpd/userconf //用於設置用戶配置文件所在的目錄。
設置了該配置項後,當用戶登錄FTP服務器時,系統就會到/etc/vsftpd/userconf目錄下讀取與當前用戶名相同的文件,並根據文件中的配 置命令,對當前用戶進行更進一步的配置。比如,利用用戶配置文件,可實現對不同用戶進行訪問的速度進行控制,在各用戶配置文件中,定義 local_max_rate配置,以決定該用戶允許的訪問速度。

 

7.與連接相關的設置 
listen=YES        
//設置vsftpd服務器是否以standalone模式運行。以standalone模式運行是一種較好的方式,此時listen必須設置爲YES, 此爲默認值,建議不要更改。很多與服務器運行相關的配置命令,需要此運行模式纔有效。若設置爲NO,則vsftpd不是以獨立的服務運行,要受 xinetd服務的管理控制,功能上會受限制。

max_clients=0
//設置vsftpd允許的最大連接數,默認爲0,表示不受限制。若設置爲150時,則同時允許有150個連接,超出的將拒絕建立連接。只有在以standalone模式運行時纔有效。

max_per_ip=0
// 設置每個IP地址允許與FTP服務器同時建立連接的數目。默認爲0,不受限制。通常可對此配置進行設置,防止同一個用戶建立太多的連接。只有在以standalone模式運行時纔有效。

listen_address=IP地址        
//設置在指定的IP地址上偵聽用戶的FTP請求。若不設置,則對服務器所綁定的所有IP地址進行偵聽。只有在以standalone模式運行時纔有效。 對於只綁定了一個IP地址的服務器,不需要配置該項,默認情況下,配置文件中沒有該配置項。若服務器同時綁定了多個IP地址,則應通過該配置項,指定在哪 個IP地址上提供FTP服務,即指定FTP服務器所使用的IP地址。
注意:設置此值前後,可以通過netstat -tnl對比端口的監聽情況

accept_timeout=60            
//設置建立被動(PASV)數據連接的超時時間,單位爲秒,默認值爲60。
connect_timeout=60    
// PORT方式下建立數據連接的超時時間,單位爲秒。
data_connection_timeout=300   
//設置建立FTP數據連接的超時時間,默認爲300秒。

idle_session_timeout=600      
//設置多長時間不對FTP服務器進行任何操作,則斷開該FTP連接,單位爲秒,默認爲600秒。即設置發呆的逾時時間,在這個時間內,若沒有數據傳送或指令的輸入,則會強行斷開連接。
pam_service_name=vsftpd     
//設置在PAM所使用的名稱,默認值爲vsftpd。

setproctitle_enable=NO|YES   
//設置每個與FTP服務器的連接,是否以不同的進程表現出來,默認值爲NO,此時只有一個名爲vsftpd的進程。若設置爲YES,則每個連接都會有一個vsftpd進程,使用“ps -ef|grep ftp”命令可查看到詳細的FTP連接信息。安全起見,建議關閉。


 PS:有時候不能上傳文件,查看鎖定目錄權限和allow_writeable_chroot=YES 還可以查看下

getsebool -a|grep ftp

輸入setsebool -P ftpd_full_access=on打開權限即可:

getsebool -a|grep ftp查看:

getsebool -a|grep ftp

ftpd_anon_write --> off

ftpd_connect_all_unreserved --> off

ftpd_connect_db --> off

ftpd_full_access --> on

ftpd_use_cifs --> off

ftpd_use_fusefs --> off

ftpd_use_nfs --> off

ftpd_use_passive_mode --> off

httpd_can_connect_ftp --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

tftp_home_dir --> off


vsftp用戶鎖定目錄折騰好久,只對自己做一個小筆記而已。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章