基于本地用户管理的配置
1、 安装vsftpdios
yum -y install vsftpd chkconfig vsftpd on
2、阻止匿名访问和切换根目录安全
编辑 /etc/vsftpd/vsftpd.conf,找到下面两处配置并修改:bash
# 禁用匿名用户 anonymous_enable=NO # 禁止切换根目录 chroot_local_user=YES
3、建立用户服务器
建立一个用户 ftpuserapp
useradd ftpuser
为用户 ftpuser 设置密码tcp
echo "dAvK55EG" | passwd ftpuser --stdin
限制该用户仅能经过 FTP 访问工具
usermod -s /sbin/nologin ftpuser
4、为用户分配主目录ui
为用户 ftpuser 建立主目录并约定:
/data/ftp 为主目录, 该目录不可上传文件
/data/ftp/pub 文件只能上传到该目录下rest
mkdir -p /data/ftp/pub
建立登陆欢迎文件 :日志
echo "Welcome to use FTP service." > /data/ftp/welcome.txt
设置访问权限:
chmod a-w /data/ftp && chmod 777 -R /data/ftp/pub
设置为用户的主目录:
usermod -d /data/ftp ftpuser
基于独立用户验证配置
1、 安装vsftpd
yum -y install vsftpd chkconfig vsftpd on
2、 修改主配置文件
vi /etc/vsftpd/vsftpd.conf # 容许匿名用户登录,登录时登录名为 ftp 或 anonymous,口令为空 anonymous_enable=YES # 容许本地用户登录,登录名为本地用户名,口令为本地用户的口令 local_enable=YES # 容许本地用户写拥有FTP服务器文件的写权限 write_enable=YES # 本地用户的文件默认掩码022,文件的默认最大权限为666,也就是上传文件的默认权限为644 local_umask=022 # 激活目录的欢迎信息功能 dirmessage_enable=YES # 指定FTP使用20端口进行数据传输(默认FTP工做模式为被动模式,也就是PASV FTP,服务器将使用20端口与客户端进行数据传输) connect_from_port_20=YES # 启用上传和下载日志功能,该日志文件默认的存放位置为 /var/log/xferlog xferlog_enable=YES # 启用xferlog的标准格式输出 xferlog_std_format=YES xferlog_file=/var/log/xferlog dual_log_enable=YES # ftp日志文件位置,须要手动touch vsftpd_log_file=/var/log/vsftpd.log # 以ascii模式传输数据 ascii_upload_enable=YES ascii_download_enable=YES # 服务器独立运行 listen=YES # 支持ipv6 listen_ipv6=YES # 设置PAM使用的名称,默认值为 /etc/pam.d/vsftpd pam_service_name=vsftpd # 启动user_list文件(该选项需与userlist_deny选项配合使用,userlist_deny默认为YES,也就是说默认请况下user_list表中的用户将被阻止登录ftp服务器) userlist_enable=YES # 设置vsftpd与tcp wrapper组合来进行访问控制,YES的状况下,vsftpd将检查/etc/hosts.allow以及/etc/hosts.deny中的设置,来进行主机的访问控制 tcp_wrappers=YES # 设定启用虚拟用户功能 guest_enable=YES # 指定虚拟用户的宿主用户 guest_username=vftpdata user_config_dir=/etc/vsftpd/vuser_conf
3、 设置虚拟帐号认证
#安装Berkeley DB工具,提供虚拟帐号管理 yum install db4 db4-utils #建立用户密码文本,注意奇行是用户名,偶行是密码 vi /etc/vsftpd/vuser_passwd.txt backup 123456 #生成虚拟用户认证的db文件 db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db #编辑认证文件,所有注释掉原来语句,再增长如下两句 vi /etc/pam.d/vsftpd auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
4、 建立虚拟用户宿主
useradd -d /ftp_data vftpdata
5、 配置虚拟用户
#建立虚拟用户配置文件 mkdir /etc/vsftpd/vuser_conf/ #文件名等于vuser_passwd.txt里面的帐户名 vi /etc/vsftpd/vuser_conf/backup #虚拟用户根目录,根据实际状况修改 local_root=/ftp_data/backup write_enable=YES anon_umask=022 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
剩下的能够添加PASV扩展了
6、 端口及相关安全设置(能正常登陆,没法获取目录列表)
方案一:
一、修改/etc/vsftpd/vsftpd.conf的配置文件,在文件末端添加:
pasv_max_port=6666 pasv_min_port=5555
/etc/init.d/vsftpd restart
二、添加一条防火墙规则
/etc/init.d/iptables stop iptables -I INPUT -p tcp --dport 5555:6666 -j ACCEPT /etc/init.d/iptables save /etc/init.d/iptables start
方案二:
添加附加模块,连接追踪模块
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT modprobe ip_conntrack_ftp //临时加载 /etc/sysconfig/iptables-config//这个是永久的 IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp"