功能描述:
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