vsftpd服務的搭建

1.vsftpd介紹
vsftpd:是非常安全的ftp守護進程(Very secure ftp Daemon)。
進程:正在進行(運行running)的程序。
守護進程Daemon:網絡服務類的程序都會有守護進程。守護進程是指實時監測服務訪問狀態的程序。通常都是在系統後臺運行。
FTP的工作端口:
21 控制端口,用於在客戶機和服務器之間建立連接。
20 數據端口。用於服務器給客戶機主動進行數據連接。

2.配置思路
1.關閉安全功能,並查狀態:
2.查軟件是否已安裝,如果未安裝就安裝軟件。
3.啓動服務,並允許開機自動啓動
4.設置共享目錄,重新加載設置。
5.做本地(內測)訪問測試,做異地(公測)訪問測試。

3.vsftpd的配置文件
/etc/logrotate.d/vsftpd 日誌輪滾策略文件
/etc/pam.d/vsftpd pam認證文件(重點)
/etc/vsftpd/ftpusers 黑名單文件(重點)
/etc/vsftpd/user_list 用戶訪問列表文件(重點),默認是黑名單,但是可以設置成白名單
將user_list設置成白名單文件。
vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO 找到此行,如果沒有就在最後添加此行
/etc/vsftpd/vsftpd.conf 服務的主配置文件(重點)

4.主配置文件
12:anonymous_enable=YES 允許匿名訪問共享
16:local_enable=YES 允許本地普通用戶(是指用useradd創建的用戶)訪問共享
19:write_enable=YES 允許寫操作,即可寫權限
23:local_umask=022 本地用戶的umask值
37:dirmessage_enable=YES 允許顯示目錄信息
40:xferlog_enable=YES 允許xferlog日誌,xferlog文件路徑是/var/log/xferlog文件,僅記錄文件的上傳和下載日誌
43:connect_from_port_20=YES 啓用20號端口的連接(data數據端口)
57:xferlog_std_format=YES 啓用xferlog標準(std是standard)格式的日誌
115:listen=NO 不啓用ipv4監聽
124:listen_ipv6=YES 啓用IPV6監聽,會向下兼容ipv4
126:pam_service_name=vsftpd vsftpd的pam用戶認證服務文件,是/etc/pam.d/vsftpd文件
127:userlist_enable=YES 啓用user_list用戶列表文件
128:tcp_wrappers=YES 啓用tcp_wrappers防火牆功能,用來做基於IP的TCP訪問控制

vsftpd.conf默認設置的功能:
1.允許匿名用訪問共享,訪問的是/var/ftp目錄,且只能下載文件,不能上傳文件。
2.允許普通用訪問共享,訪問的是用戶自己的家目錄,既能下載文件,也能上傳文件。
3.普通用戶用ftp命令登錄到vsftpd服務器之後,能chroot到服務器的其他目錄路徑下,此功能不安全,建議關掉。

5.vsftpd的chroot牢籠四種情況:
全部不鎖(默認情況)
全部加鎖(用兩行代碼)
少數不加鎖(用三行代碼)
少數加鎖(用四行代碼)

1.全部不鎖(默認)
#chroot_local_user=YES 允許本地用戶chroot牢籠功能(change root),默認爲NO不啓用
#chroot_list_enable=YES 啓用chroot_list文件功能,默認NO不啓用此功能

(default follows)

#chroot_list_file=/etc/vsftpd/chroot_list

2.全部加鎖
chroot_local_user=YES 啓用本地用戶chroot牢籠功能(change root),默認爲NO不啓用
allow_writeable_chroot=YES 允許chroot牢籠功能下執行寫操作(centos7中必加此行)

3.少數不加鎖
chroot_local_user=YES
allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
在vim /etc/vsftpd/chroot_list 添加如下內容
lucy
lily
用tom、lucy、lily做訪問測試,tom啓用了牢籠功能,lucy、lily是不啓用牢籠功能的。

4.少數加鎖
#chroot_local_user=YES 啓用本地用戶chroot牢籠功能(change root),默認爲NO不啓用
allow_writeable_chroot=YES 允許chroot牢籠功能下執行寫操作(centos7中必加此行)
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 指定chroot_list文件及其路徑
在vim /etc/vsftpd/chroot_list 添加如下內容
lucy
lily
用tom、lucy、lily做訪問測試,lucy、lily啓用了牢籠功能,tom是不啓用牢籠功能的。

6.實現允許anonymous匿名用戶既能下載又能上傳文件文件。
1.文件共享軟件必須允許這個用戶有可讀可寫的權限。
2.用戶對共享目錄自身要有可讀可寫的權限。
3.匿名用戶僅允許上傳文件到/var/ftp中的子目錄中。如/var/ftp/upload,且ftp匿名用戶對upload目錄要有可讀可寫權限。
警告:/var/ftp目錄的屬主、屬組不允許修改,且other權限不允許有w可寫權限,否則用ftp匿名用戶訪問共享時會提示500錯誤。

實現要求:
第1步,在vsftpd.conf配置文件中允許anonymous匿名用戶有可讀可寫的權限。
vim /etc/vsftpd/vsftpd.conf 找到如下代碼,去掉29、33行的#號
12 anonymous_enable=YES
29 #anon_upload_enable=YES 允許匿名用戶上傳
33 #anon_mkdir_write_enable=YES 允許匿名用戶用mkdir創建目錄
anon_other_write_enable=YES 允許匿名用戶執行rm刪除等操作(添加此行)
anon_world_readable_only=NO 關閉匿名用戶只讀的限制(爲YES時會無法下載)

第2步,用root用戶創建/var/ftp/upload目錄,權限爲777或屬主和屬組均爲ftp,重啓vsftpd服務,在win7/10中用ftp匿名用戶訪問共享ftp://192.168.11.11,上傳一個文件到upload共享目錄,看是否能傳上去。結果是可以匿名用戶上傳文件到upload目錄中。
mkdir -v /var/ftp/upload
chown -v ftp:ftp /var/ftp/upload 或 chmod -v 777 /var/ftp/upload
systemctl restart vsftpd

7.vsftpd的tcp_wrapers防火牆設置
tcp_wrapers的功能:是一個迷你的TCP防火牆,可以用來做基於TCP協議的應用程序的IP安全訪問控制。
配置文件:
白名單:/etc/hosts.allow
黑名單:/etc/hosts.deny

技巧:讓少數人爲白戶,那麼先在hosts.deny中做拒絕所有(all)黑名單,然後在hosts.allow中做少數IP的放行白名單。

配置文件格式:man hosts.allow
格式說明: 守護進程名稱:主機名或IP地址
守護進程名稱可以是:vsftpd、sshd、httpd、in.tftpd等。
主機名或IP地址可以是:all所有主機、主機名、域名(網址)、IP地址、網絡地址、IP地址範圍。

設置舉例:
vim /etc/hosts.deny 黑名單
vsftpd:192.168.11.1 拒絕192.168.11.1這臺主機訪問vsftpd共享
sshd:192.168.11.1 拒絕192.168.11.1這臺主機訪問sshd共享

8.vsftpd虛擬用戶
虛擬用戶:即非useradd創建的用戶賬號(非/etc/passwd中的賬號),而是用vim創建的屬於vsftpd的獨立用戶賬號。
虛擬用戶的優勢:可以避免系統中的用戶賬號過多,讓vsftpd文件共享軟件獨立管理自己的用戶賬號。
虛擬用戶賬號文件格式:文件中的奇數行是用戶賬號,偶數行是用戶的密碼。

vsftpd的虛擬用戶方案思路:
0.準備工作:確保vsftpd文件共享服務已安裝,並已啓動vsftpd服務,且關閉了selinux和firewalld安全功能。
1.創建虛擬用戶賬號文件。
2.將虛擬用戶賬號用db_load轉換成加密的數據庫格式文件。
3.在vsftpd的pam認證文件中添加虛擬用戶賬號文件的認證關係。
4.用useradd創建一個普通用戶賬號vftper。
5.在vsftpd.conf配置文件中啓用guest來賓(即虛擬用戶)功能,設置一個真實用戶賬號,並將真實用戶賬號vftper和虛擬用戶賬號文件關聯起來。
6.給每個虛擬用戶賬號設置獨立的共享訪問速度和訪問目錄。
7.重啓vsftpd服務,並分別用虛擬用戶賬號訪問共享。

1.創建虛擬用戶賬號文件。
cat > /etc/vsftpd/vuser.txt <<EOF
f1
passf1
f2
passf2
f3
passf3
EOF

2.將虛擬用戶賬號轉換成加密的數據庫格式文件。
yum provides db_load
yum install -y libdb-utils
cd /etc/vsftpd
ls
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuserdb.db
chmod -v 600 /etc/vsftpd/vuserdb.db

db_load選項:
-T 是translation轉換文件格式
-t hash 指定格式轉換的算法爲hash算法
-f 是指定要轉換格式的文件
/etc/vsftpd/vuser.txt 是要轉換格式的文件
/et/vsftpd/vuserdb.db 是轉換格式之後的文件

3.在vsftpd的pam認證文件中添加虛擬用戶賬號文件的認證關係。
cp -av /etc/pam.d/vsftpd{,.bak}
vim /etc/pam.d/vsftpd 做如下修改
#%PAM-1.0
#以下兩行的功能:僅能實現虛擬用戶訪問共享,普通用戶不能訪問共享。(不建議使用)
#required 意思是必須的 sufficient 意思是滿足的、備選的
#auth required pam_userdb.so db=/etc/vsftpd/vuserdb
#account required pam_userdb.so db=/etc/vsftpd/vuserdb
#以下功能選項的功能:既能讓虛擬用戶訪問共享,也能讓普通用戶訪問共享。(推薦使用)
auth sufficient pam_userdb.so db=/etc/vsftpd/vuserdb
account sufficient pam_userdb.so db=/etc/vsftpd/vuserdb
#以下幾行功能選項是vsftpd的默認pam認證文件內容。(無需修改)
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth

4.用useradd創建一個普通用戶賬號vftper。
useradd vftper -s /sbin/nologin
id vftper
ls -ld /home/vftper

5.在vsftpd.conf配置文件中設置一個真實用戶賬號,並將真實用戶賬號vftper和虛擬用戶賬號文件關聯起來。
cd /etc/vsftpd
cp -av vsftpd.conf{,.bak}
cat /etc/vsftpd/vsftpd.conf
vim vsftpd.conf 在文件最後添加如下內容
guest_enable=YES 允許來賓用戶訪問共享,即虛擬用戶
guest_username=vftper 指定來賓用戶名爲vftper用戶(即第4步新建的用戶)
user_config_dir=/etc/vsftpd/vuser_conf 指定用戶配置文件目錄
allow_writeable_chroot=YES 允許chroot功能下執行寫操作(必須加此行,否則會登錄失敗)
#user_sub_token=$USER 使用用戶子令牌(通常不用)

6.給每個虛擬用戶賬號設置獨立的共享訪問速度和訪問目錄。
cd /etc/vsftpd
mkdir -v vuser_conf
cd vuser_conf
#創建f1、f2虛擬用戶的會員個性化設置文件,允許f1這個虛擬用戶在自己的家目錄中可讀可寫。
touch f1 f2
mkdir -v /home/vftper/{f1,f2,f3}
chmod -v 777 /home/vftper/{f1,f2,f3}
cat > f1 <<EOF
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vftper/f1
EOF

#允許f2這個用戶在自己的家目錄中可讀,但不可寫。
cat > f2 <<EOF
#添加local_root這行即可,其餘內容可以不添加。
local_root=/home/vftper/f2
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

EOF

7.重啓vsftpd服務,並分別用虛擬用戶賬號訪問共享。
systemctl restart vsftpd
ftp 192.168.11.11 -->用f1、f2虛擬用戶分別訪問共享,測試文件的上傳。

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