靠譜的vsftpd配置
功能描述:
1. 服務器上存在多個站點目錄 禁止匿名用戶訪問
2. 系統帳號禁止訪問FTP服務
3. 每個帳號被限制在指定主目錄中,多個帳號被映射到系統帳號FTP上,這些帳號都不能用來登錄系統
4. 上傳文件的所有者為ftp, 權限為644, 新創建目錄權限為 655
5. 使用被動模式,以保證客戶端處於NAT環境中能正常傳輸文件
6.服務器開啟iptables防火牆,被動模式數據傳送端口范圍限定在 5000--5100
一些預先處理
A. 關閉selinux功能, 編輯文件 /etc/selinux/config, 修改
SELINUX=disabled
B. 安裝vsftpd
yum install vsftpd
好了,接下來進行以下配置
1. 編輯配置/etc/vsftpd/vsftpd.conf 輸出以下內容
anonymous_enable=NO
local_enable=NO
write_enable=YES
local_umask=022
async_abor_enable=NO
ascii_upload_enable=NO
ascii_download_enable=NO
chmod_enable=YES
chroot_local_user=YES
dual_log_enable=YES
local_enable=NO
log_ftp_protocol=YES
listen=YES
pasv_enable=YES
port_enable=NO
reverse_lookup_enable=NO
use_localtime=YES
pam_service_name=vsftpd
tcp_wrappers=YES
guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/users/
virtual_use_local_privs=YES
2. 生成用戶帳號文件
建立文件 /etc/vsftpd/logins.txt, 格式如下
username1
password1
psername2
password2
奇數行為用戶名,偶數行為對應的密碼
安裝一個軟件包,用於將上述文件轉成數據庫信息
yum install db4*
生成帳號數據庫
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/logins.db
這將生成文件/etc/vsftpd/logins.db
3. 編輯文件 /etc/pam.d/vsftpd, 刪除其它內容 輸入以下內容
auth required pam_userdb.so db=/etc/vsftpd/logins
account required pam_userdb.so db=/etc/vsftpd/logins
注意指定的db文件不能帶後綴名
4. 建立每個用戶的配置文件 編輯文件/etc/vsftpd/users/username1, 輸入以下內容
local_root=/data/wwwroot/
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
提示:請確保/data/wwwroot/目錄的所有者為ftp帳號
因為我們開啟了iptables防火牆,需要開放相應端口 21 5000-5100 , 增加iptables規則為
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 5000:5100 -j ACCEPT
提示:為了保證安全,請確保只有授權IP可訪問ftp服務器
添加新帳號的步驟是:
A. 編輯文件/etc/vsftpd/logins.txt, 加入帳號密碼
B. 更新數據庫文件 db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/logins.db
C.為用戶建立配置文件,文件名與用戶名一致 /etc/vsftpd/users/username, 內容大致如下:
local_root=/data/wwwroot/
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES