本文共 6404 字,大约阅读时间需要 21 分钟。
1.vsftpd介绍
vsftpd:是非常安全的ftp守护进程(Very secure ftp Daemon)。进程:正在进行(运行running)的程序。守护进程Daemon:网络服务类的程序都会有守护进程。守护进程是指实时监测服务访问状态的程序。通常都是在系统后台运行。FTP的工作端口:21 控制端口,用于在客户机和服务器之间建立连接。20 数据端口。用于服务器给客户机主动进行数据连接。2.配置思路
1.关闭安全功能,并查状态:2.查软件是否已安装,如果未安装就安装软件。3.启动服务,并允许开机自动启动4.设置共享目录,重新加载设置。5.做本地(内测)访问测试,做异地(公测)访问测试。3.vsftpd的配置文件
/etc/logrotate.d/vsftpd 日志轮滚策略文件/etc/pam.d/vsftpd pam认证文件(重点)/etc/vsftpd/ftpusers 黑名单文件(重点)/etc/vsftpd/user_list 用户访问列表文件(重点),默认是黑名单,但是可以设置成白名单将user_list设置成白名单文件。vim /etc/vsftpd/vsftpd.confuserlist_deny=NO 找到此行,如果没有就在最后添加此行/etc/vsftpd/vsftpd.conf 服务的主配置文件(重点)4.主配置文件
12:anonymous_enable=YES 允许匿名访问共享16:local_enable=YES 允许本地普通用户(是指用useradd创建的用户)访问共享19:write_enable=YES 允许写操作,即可写权限23:local_umask=022 本地用户的umask值37:dirmessage_enable=YES 允许显示目录信息40:xferlog_enable=YES 允许xferlog日志,xferlog文件路径是/var/log/xferlog文件,仅记录文件的上传和下载日志43:connect_from_port_20=YES 启用20号端口的连接(data数据端口)57:xferlog_std_format=YES 启用xferlog标准(std是standard)格式的日志115:listen=NO 不启用ipv4监听124:listen_ipv6=YES 启用IPV6监听,会向下兼容ipv4126:pam_service_name=vsftpd vsftpd的pam用户认证服务文件,是/etc/pam.d/vsftpd文件127:userlist_enable=YES 启用user_list用户列表文件128:tcp_wrappers=YES 启用tcp_wrappers防火墙功能,用来做基于IP的TCP访问控制vsftpd.conf默认设置的功能:
1.允许匿名用访问共享,访问的是/var/ftp目录,且只能下载文件,不能上传文件。2.允许普通用访问共享,访问的是用户自己的家目录,既能下载文件,也能上传文件。3.普通用户用ftp命令登录到vsftpd服务器之后,能chroot到服务器的其他目录路径下,此功能不安全,建议关掉。5.vsftpd的chroot牢笼四种情况:
全部不锁(默认情况)全部加锁(用两行代码)少数不加锁(用三行代码)少数加锁(用四行代码)1.全部不锁(默认)
#chroot_local_user=YES 允许本地用户chroot牢笼功能(change root),默认为NO不启用#chroot_list_enable=YES 启用chroot_list文件功能,默认NO不启用此功能#chroot_list_file=/etc/vsftpd/chroot_list
2.全部加锁
chroot_local_user=YES 启用本地用户chroot牢笼功能(change root),默认为NO不启用allow_writeable_chroot=YES 允许chroot牢笼功能下执行写操作(centos7中必加此行)3.少数不加锁
chroot_local_user=YESallow_writeable_chroot=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list在vim /etc/vsftpd/chroot_list 添加如下内容lucylily用tom、lucy、lily做访问测试,tom启用了牢笼功能,lucy、lily是不启用牢笼功能的。4.少数加锁
#chroot_local_user=YES 启用本地用户chroot牢笼功能(change root),默认为NO不启用allow_writeable_chroot=YES 允许chroot牢笼功能下执行写操作(centos7中必加此行)chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list 指定chroot_list文件及其路径在vim /etc/vsftpd/chroot_list 添加如下内容lucylily用tom、lucy、lily做访问测试,lucy、lily启用了牢笼功能,tom是不启用牢笼功能的。6.实现允许anonymous匿名用户既能下载又能上传文件文件。
1.文件共享软件必须允许这个用户有可读可写的权限。2.用户对共享目录自身要有可读可写的权限。3.匿名用户仅允许上传文件到/var/ftp中的子目录中。如/var/ftp/upload,且ftp匿名用户对upload目录要有可读可写权限。警告:/var/ftp目录的属主、属组不允许修改,且other权限不允许有w可写权限,否则用ftp匿名用户访问共享时会提示500错误。实现要求:
第1步,在vsftpd.conf配置文件中允许anonymous匿名用户有可读可写的权限。vim /etc/vsftpd/vsftpd.conf 找到如下代码,去掉29、33行的#号12 anonymous_enable=YES29 #anon_upload_enable=YES 允许匿名用户上传33 #anon_mkdir_write_enable=YES 允许匿名用户用mkdir创建目录anon_other_write_enable=YES 允许匿名用户执行rm删除等操作(添加此行)anon_world_readable_only=NO 关闭匿名用户只读的限制(为YES时会无法下载)第2步,用root用户创建/var/ftp/upload目录,权限为777或属主和属组均为ftp,重启vsftpd服务,在win7/10中用ftp匿名用户访问共享ftp://192.168.11.11,上传一个文件到upload共享目录,看是否能传上去。结果是可以匿名用户上传文件到upload目录中。
mkdir -v /var/ftp/uploadchown -v ftp:ftp /var/ftp/upload 或 chmod -v 777 /var/ftp/uploadsystemctl restart vsftpd7.vsftpd的tcp_wrapers防火墙设置
tcp_wrapers的功能:是一个迷你的TCP防火墙,可以用来做基于TCP协议的应用程序的IP安全访问控制。配置文件:白名单:/etc/hosts.allow黑名单:/etc/hosts.deny技巧:让少数人为白户,那么先在hosts.deny中做拒绝所有(all)黑名单,然后在hosts.allow中做少数IP的放行白名单。
配置文件格式:man hosts.allow
格式说明: 守护进程名称:主机名或IP地址守护进程名称可以是:vsftpd、sshd、httpd、in.tftpd等。主机名或IP地址可以是:all所有主机、主机名、域名(网址)、IP地址、网络地址、IP地址范围。设置举例:
vim /etc/hosts.deny 黑名单vsftpd:192.168.11.1 拒绝192.168.11.1这台主机访问vsftpd共享sshd:192.168.11.1 拒绝192.168.11.1这台主机访问sshd共享8.vsftpd虚拟用户
虚拟用户:即非useradd创建的用户账号(非/etc/passwd中的账号),而是用vim创建的属于vsftpd的独立用户账号。虚拟用户的优势:可以避免系统中的用户账号过多,让vsftpd文件共享软件独立管理自己的用户账号。虚拟用户账号文件格式:文件中的奇数行是用户账号,偶数行是用户的密码。vsftpd的虚拟用户方案思路:
0.准备工作:确保vsftpd文件共享服务已安装,并已启动vsftpd服务,且关闭了selinux和firewalld安全功能。1.创建虚拟用户账号文件。2.将虚拟用户账号用db_load转换成加密的数据库格式文件。3.在vsftpd的pam认证文件中添加虚拟用户账号文件的认证关系。4.用useradd创建一个普通用户账号vftper。5.在vsftpd.conf配置文件中启用guest来宾(即虚拟用户)功能,设置一个真实用户账号,并将真实用户账号vftper和虚拟用户账号文件关联起来。6.给每个虚拟用户账号设置独立的共享访问速度和访问目录。7.重启vsftpd服务,并分别用虚拟用户账号访问共享。1.创建虚拟用户账号文件。
cat > /etc/vsftpd/vuser.txt <<EOFf1passf1f2passf2f3passf3EOF2.将虚拟用户账号转换成加密的数据库格式文件。
yum provides db_loadyum install -y libdb-utilscd /etc/vsftpdlsdb_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuserdb.dbchmod -v 600 /etc/vsftpd/vuserdb.dbdb_load选项:
-T 是translation转换文件格式-t hash 指定格式转换的算法为hash算法-f 是指定要转换格式的文件/etc/vsftpd/vuser.txt 是要转换格式的文件/et/vsftpd/vuserdb.db 是转换格式之后的文件3.在vsftpd的pam认证文件中添加虚拟用户账号文件的认证关系。
cp -av /etc/pam.d/vsftpd{,.bak}vim /etc/pam.d/vsftpd 做如下修改#%PAM-1.0#以下两行的功能:仅能实现虚拟用户访问共享,普通用户不能访问共享。(不建议使用)#required 意思是必须的 sufficient 意思是满足的、备选的#auth required pam_userdb.so db=/etc/vsftpd/vuserdb#account required pam_userdb.so db=/etc/vsftpd/vuserdb#以下功能选项的功能:既能让虚拟用户访问共享,也能让普通用户访问共享。(推荐使用)auth sufficient pam_userdb.so db=/etc/vsftpd/vuserdbaccount sufficient pam_userdb.so db=/etc/vsftpd/vuserdb#以下几行功能选项是vsftpd的默认pam认证文件内容。(无需修改)session optional pam_keyinit.so force revokeauth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeedauth required pam_shells.soauth include password-authaccount include password-authsession required pam_loginuid.sosession include password-auth4.用useradd创建一个普通用户账号vftper。
useradd vftper -s /sbin/nologinid vftperls -ld /home/vftper5.在vsftpd.conf配置文件中设置一个真实用户账号,并将真实用户账号vftper和虚拟用户账号文件关联起来。
cd /etc/vsftpdcp -av vsftpd.conf{,.bak}cat /etc/vsftpd/vsftpd.confvim vsftpd.conf 在文件最后添加如下内容guest_enable=YES 允许来宾用户访问共享,即虚拟用户guest_username=vftper 指定来宾用户名为vftper用户(即第4步新建的用户)user_config_dir=/etc/vsftpd/vuser_conf 指定用户配置文件目录allow_writeable_chroot=YES 允许chroot功能下执行写操作(必须加此行,否则会登录失败)#user_sub_token=$USER 使用用户子令牌(通常不用)6.给每个虚拟用户账号设置独立的共享访问速度和访问目录。
cd /etc/vsftpdmkdir -v vuser_confcd vuser_conf#创建f1、f2虚拟用户的会员个性化设置文件,允许f1这个虚拟用户在自己的家目录中可读可写。touch f1 f2mkdir -v /home/vftper/{f1,f2,f3}chmod -v 777 /home/vftper/{f1,f2,f3}cat > f1 <<EOFwrite_enable=YESanon_world_readable_only=NOanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESlocal_root=/home/vftper/f1EOF#允许f2这个用户在自己的家目录中可读,但不可写。
cat > f2 <<EOF#添加local_root这行即可,其余内容可以不添加。local_root=/home/vftper/f2write_enable=NOanon_world_readable_only=NOanon_upload_enable=NOanon_mkdir_write_enable=NOanon_other_write_enable=NOEOF
7.重启vsftpd服务,并分别用虚拟用户账号访问共享。
systemctl restart vsftpdftp 192.168.11.11 -->用f1、f2虚拟用户分别访问共享,测试文件的上传。转载于:https://blog.51cto.com/13038253/2367162