cetntos下FTP服務器搭建與維護入門

一、安裝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

(default follows)

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}

相關文章
相關標籤/搜索