一、安裝ftp服務shell
檢查ftp服務是否已安裝數據庫
rpm -qa |grep vsftpd
安裝ftp服務安全
yum install vsftpdsession
二、建立用戶登陸ide
安裝數據庫測試
yum install db4-utils
建立虛擬用戶,並轉換爲本地數據庫文件ui
/etc/vsftpd/logins.txt
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/logins.db
保護數據庫unix
chmod 600 /etc/vsftpd/logins.db
修改配置,用本地數據庫進行驗證,在/etc/vsftpd/vsftpd.conf配置rest
pam_service_name=vsftpd
修改/etc/pam.d/vsftpd配置,把原有的內容所有刪掉或者註釋掉,再寫上:日誌
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/logins
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/logins
建立虛擬用戶及目錄
useradd -d /cache1/Test_Log virtual
若提示useradd: unable to open password file,修改權限保護,修改辦法以下:
[root@203 etc]# lsattr /etc/passwd
----i-------- /etc/passwd
[root@203 etc]# lsattr /etc/shadow
----i-------- /etc/shadow
[root@203 etc]# lsattr /etc/gshadow
----i-------- /etc/gshadow
[root@203 etc]# lsattr /etc/group
----i-------- /etc/group
[root@203 etc]# chattr -i /etc/passwd
[root@203 etc]# chattr -i /etc/shadow
[root@203 etc]# chattr -i /etc/gshadow
[root@203 etc]# chattr -i /etc/group
把虛擬帳號映射到virtual用戶,在/etc/vsftpd/vsftpd.conf配置
guest_enable=yes
guest_username=virtual
三、安全及限速配置
取消匿名登陸功能
anonymous_enable=NO
設定使用者不得更改目錄,新增一個文件/etc/vsftpd/chroot_list,文件內容爲用戶名
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
限速
在/etc/vsftpd/vsftpd.conf配置增長一行
user_config_dir=/etc/vsftpd/userconf
建立用戶配置目錄
mkdir /etc/vsftpd/userconf
在/etc/vsftpd/userconf下新增一個名爲用戶登陸名的文件,加入以下配置,意味着該用戶最高速度爲500Kb/s(VSFTP對於速度的限制範圍大概在80%到120%之間,也就是限制最高速度爲100Kb/s,但實際的速度可能在80Kb/s到120Kb/s之間。若是頻寬不足,數值會低於此限制)
local_max_rate=500000
重啓服務
service vsftpd restart
四、維護
增刪用戶密碼
vi /etc/vsftpd/logins.txt
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/logins.db
限速大小修改
/etc/vsftpd/userconf
vi user1
五、可能遇到錯誤
最後測試時出現530 login incrrect 提示,沒法登錄。
查看日誌 tail -n 20 /var/log/secure 有以下信息
Oct 21 14:19:40 www vsftpd: PAM unable to dlopen(/lib/security/pam_userdb.so)
Oct 21 14:19:40 www vsftpd: PAM [error: /lib/security/pam_userdb.so: wrong ELF class: ELFCLASS32]
Oct 21 14:19:40 www vsftpd: PAM adding faulty module: /lib/security/pam_userdb.so
Oct 21 14:19:40 www vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Oct 21 14:19:40 www vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=kanecruise rhost=60.55.8.102
Oct 21 14:19:40 www vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user kanecruise
很明顯是 /lib/security/pam_userdb.so這個載入失敗。
檢查本地機器
pam.i386 0.99.6.2-6.el5_5.2 installed
pam.x86_64 0.99.6.2-6.el5_5.2 installed
兩種都已經安裝,究竟是載入的哪一個,哪一個載入失敗呢?
機器是64位的,猜測應該是要載入pam.x86_64
cat /etc/pam.d/vsftpd
#%PAM-1.0
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers
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 system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
就是這裏 /lib/security/pam_userdb.so 文件載入失敗,這個文件存在問題。
[root@www kanecruise]# ls /lib
lib/ lib64/
根目錄存在此兩個問題,嘗試把lib改成 lib64並確認 /lib/security/pam_userdb.so 此文件存在。
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
保存重啓vsftpd服務。
從新測試,登錄成功了。
六、限制IP訪問網段
只容許網段訪問:在/etc/hosts.deny 配置:
vsftpd: ALL EXCEPT 1.1.1.1
限制某個網段訪問在/etc/hosts.deny配置:
vsftpd:1.1.1.1
七、上傳資源類型限制:
deny_file={.mp3,.mov,.private}