vsftpd安裝及虛擬用戶配置

FTP服務是最經常使用的跨平臺文件共享服務之一vim

============= 完美的分割線 ===============安全

0.FTP兩種模式的區分

1)PORTFTP和PASVFTP,PORTFTP是通常形式的FTP。
2)這兩種FTP在創建控制鏈接時操做是同樣的,都是由客戶端首先和FTP服務器的控制端口(默認值爲21)創建控制連接,並經過此連接進行傳輸操做指令。它們的區別在於使用數據傳輸端口(ftp-data)的方式。
3)PORTFTP由FTP服務器指定數據傳輸所使用的端口,默認值爲20。
4)PASVFTP由FTP客戶端決定數據傳輸的端口。PASVFTP這種作法,主要是考慮到存在防火牆的環境下,由客戶端與服務器進行溝通(客戶端向服務器發出數據傳輸請求中包含了數據傳輸端口),決定二者之間的數據傳輸端口更爲方便一些。服務器

1.安裝FTP服務端

1.1.環境準備

# 檢查系統環境,若是系統版本較低,建議升級內核等app

# 在CentOS6.x和7.x版本安裝方法基本相同tcp

uname -a
cat /etc/redhat-release 
# yum update -y       # 若是是新服務器或者是ftp獨佔能夠升級,其餘看狀況

1.2.安裝vsftpd

# 包括服務端和客戶端工具

yum install vsftpd ftp -y

1.3.啓動vsftpd服務並配置開機自啓動

/etc/init.d/vsftpd start
netstat -anptl|grep vsftpd
chkconfig vsftpd on
chkconfig --list vsftpd

1.4.配置查看ftp相關日誌

# 從xferlog能夠查看到用戶上傳下載等的操做記錄,刪除不會顯示測試

vim /etc/logrotate.d/vsftpd 
/var/log/vsftpd.log {
    # ftpd doesn't handle SIGHUP properly
    nocompress
    missingok
}
/var/log/xferlog {
    # ftpd doesn't handle SIGHUP properly
    nocompress
    missingok
}
tail -f /var/log/xferlog

2.配置匿名方式訪問FTP服務端

2.1.安裝好vsftpd服務,默認爲匿名訪問ui

1)能夠直接輸入IP端口,能夠打開ftp服務器
2)容許匿名用戶登陸,宿主目錄爲/var/ftp,不能離開,下載目錄爲/var/ftp/pub,且只能下載,不能上傳
3)容許本地用戶登陸,且可離開主目錄,本地用戶容許上傳/下載
4)寫在文件/etc/vsftpd/ftpusers中的本地用戶禁止登陸
5)服務器使用獨佔方式啓動,且無限制鏈接數加密

3.配置虛擬用戶認證的FTP服務端

3.1.修改vsftpd.conf 文件

cd /etc/vsftpd/
vim vsftpd.conf 

# 修改配置文件,確認如下選項spa

anonymous_enable=NO     # 修改,禁止匿名用戶登陸
local_enable=YES        # 默認啓用,容許本地用戶登陸,虛擬用戶須要映射到本地用戶纔可使用
write_enable=YES        # 默認啓用,本地用戶開放寫權限
#local_umask=022        # 註釋掉,本地用戶建立的文件的權限反碼022,建立的文件爲644
userlist_enable=YES        # 默認啓用,默認爲容許user_list中的用戶進行訪問
# userlist_deny=yes        # 也能夠用這個,默認拒絕user_list中的用戶訪問FTP服務器,保留一種便可
userlist_file=/etc/vsftpd/user_list
chroot_local_user=YES      # 默認啓用,將本地用戶鎖定在自家目錄中

# made for virtual user
guest_enable=YES              # 增長,啓用虛擬用戶模式
guest_username=ftpvuser        # 增長,配置虛擬用戶映射到的本地用戶名
pam_service_name=/etc/pam.d/ftpvuser.pam    # 修改,配置虛擬用戶的認證方式
user_config_dir=/etc/vsftpd/vuser.d    # 增長,虛擬用戶的配置文件目錄
anon_umask=022            # 增長,匿名用戶新增文件的umask數值。默認值爲077,須要修改成022,不然上傳後的文件爲600

# 其餘配置選項,根據實際需求修改

dirmessage_enable=YES          # 設置切換到目錄時顯示message 隱含文件的內容
xferlog_enable= YES             # 激活上傳和下載日誌
connect_from_port_20= YES          # 啓用FTP數據端口鏈接
pam_service_name=vsftpd            # 設置PAM認證服務的配置文件名稱,  該文件存放在/etc/pam.d目錄下
userlist_enable= YES            # 容許vsftpd.user_list文件中的用戶訪問服務器
userlist_deny= YES             # 拒絕vsftpd.user_list文件中的用戶訪問服務器
listen= YES                    # 是否使用獨佔啓動方式
tcp_wrappers= YES              # 使用防火牆
#file_open_mode=0755

# vsftpd配置文件

/etc/vsftpd/vsftpd.conf         # 主配置文件
/etc/vsftpd/ftpusers             # FTP限制訪問的用戶,裏面是一些系統用戶,默認不容許訪問,防止被入侵
/etc/vsftpd/user_list            # 受權用戶列表,能夠控制哪些用戶能夠訪問或者禁止訪問

# 注意:
1)vsftpd.conf 文件中每一個選項設置爲一行,格式爲「option=value」,「=」號兩邊不能留空白符
2)除了主配置文件外,還能夠給特定用戶設定我的配置文件
3)虛擬用戶默承認以讀寫,訪問時映射爲本地用戶,因此須要啓用對本地用戶的控制
4)實際的訪問權限可由用戶獨立的配置文件進行單獨控制

3.2.建立虛擬用戶相關文件

1)建立受權認證文件

cd /etc/pam.d/
mv vsftpd vsftpd.ori        # 備份原有的ftp的pam認證文件
vim ftpvuser.pam          # 建立新的ftp虛擬用戶認證文件

寫入如下內容:

#%PAM-1.0
auth       required     pam_userdb.so db=/etc/vsftpd/vuser.d/vuser        # 不能夠加.db的擴展名,不然認證不成功
account    required     pam_userdb.so db=/etc/vsftpd/vuser.d/vuser

2)建立虛擬用戶的祕鑰文件

mkdir -p /etc/vsftpd/vuser.d
cd /etc/vsftpd/vuser.d
touch vuser.list

3)加密虛擬用戶的祕鑰文件

# 使用db_load工具生成加密

yum install db4-utils -y
db_load -T -t hash -f vuser.list vuser.db
file vuser.list 
file vuser.db 

# 爲了安全,修改虛擬用戶文件的訪問權限

chmod 600 /etc/vsftpd/vuser.*
ll /etc/vsftpd/vuser.*

3.3.配置一個虛擬用戶訪問權限的實例

1)建立或修改虛擬用戶祕鑰信息

cd /etc/vsftpd/vuser.d
vim  vuser.list
--------------------
admin
123456
--------------------

2)設置能夠訪問ftp的虛擬用戶列表user_list

# 註釋掉其餘本地用戶認證的內容,由於啓用了guest_enable後,本地用戶將失效,全部非匿名用戶變成虛擬用戶
# 由於須要受權訪問的用戶比較少,因此user_list設置爲能夠訪問ftp服務的用戶

vim /etc/vsftpd/user_list 
---------------------
admin
----------------------

3)每一個用戶單首創建受權文件

cd /etc/vsftpd/vuser.d
vim admin
---------------------------
# 指定宿主目錄,配置訪問權限
write_enable=YES
local_root=/data/ftpdata/admin     # 宿主目錄
anon_upload_enable=YES               # 上傳
anon_mkdir_write_enable=YES          # 建立目錄寫權限
anon_other_write_enable=YES          # 其餘寫入權限
---------------------------

4)建立ftp虛擬用戶的宿主目錄

# 建立的ftp本地用戶及其根目錄,用於映射虛擬用戶,注意修改目錄權限

mkdir -p /data/ftpdata/admin            # 虛擬用戶的宿主目錄須要預先建立
useradd -d /data/ftpdata/ -s /sbin/nologin ftpvuser
chmod 755 /data/ftpdata/
ll /data/ftpdata/ -d

5)配置完成刷新配置信息,進行測試

service vsftpd reload

4.常見報錯處理

錯誤現象1:文件顯示上傳成功,刷新就是不顯示。

報錯分析:

1)檢查發現上傳的文件權限爲600,是上傳文件權限設置問題

解決方法:修改虛擬用戶權限配置

local_umask=022 改成 anon_umask=022

2)另外,在建立虛擬用戶映射的ftp本地用戶的時候,使用useradd建立的宿主目錄權限默認爲700

這樣,雖然上傳文件的權限爲644可讀,文件夾755可讀,但因爲ftp的上層目錄不可讀,子目錄也會受限

解決方法:修改宿主目錄的權限爲755便可

chmod 755 /data/ftpdata/

5.附:防火牆配置

若是ftp被動模式用到防火牆,能夠參考如下配置

iptables -I INPUT -p tcp --dport 21 -j ACCEPT          #FTP鏈接端口
iptables -I INPUT -p tcp --dport 33000:34000 -j ACCEPT      #pasv模式下的隨機端口
iptables-save >/etc/sysconfig/iptables              #保存防火牆配置

systemctl restart iptables.service
systemctl restart vsftpd.service

======== 完畢,呵呵呵呵 ========

相關文章
相關標籤/搜索