设为首页 收藏本站
查看: 1541|回复: 0

[经验分享] Linux vsftpd服务器

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-5 08:51:01 | 显示全部楼层 |阅读模式
Linux vsftpd服务器1.1. 概述Vsftpd是众多ftp中的一种,主要应用于生产环境网络访问共享文件使用。多用于网络环境

FTP

工作模式:
      主动模式  客户机向FTP服务器请求连接 随机端口>1024 ,20端口向客户机随机端口连接
      被动模式  客户机向FTP服务器连接21端口,并指定客户端端口与20相连


1.2. 软件安装
客户端软件  ftp lftp
yum install vsftpd -y


1.3. 服务和端口:

20 传输数据
21 传输验证信息


1.4. 防火墙配置
iptables -I INPUT 1 -p tcp --dport 20:21 -JACCEPT

service iptables save


1.5. 用户模式

匿名用户:

l 用户名为: ftp   anonymous
l 密码为:ftp
l 家目录  /var/ftp
l Shell  /sbin/nologin


当使用匿名用户上传文件时需注意以下三点:
1.      目录的权限 755  有修改权
2.      配置文件允许上传
3.      修改selinux

# 匿名用户不具备删除权限,只有上传修改的权限

allow_ftpd_anon_write --> off

普通用户:

普通用户以自已的家目录为共享主目录

setsebool-P ftp_home_dir on



跨网段访问,采用被动模式


1.6. 配置文件:注意:当匿名更改为普通用户模式时,不能使用#注释的方式取消,必须使用NO给值

Cd /etc/vsftpd/
vsftpd.conf:   # 主配置文件;
ftpusers:     # 指定哪些用户不能访问FTP服务器;
user_list:    # 指定的用户是否可以访问ftp服务器由vsftpd.conf文件中的userlist_deny的取值来决定。



/etc/vsftpd/vsftpd.conf   # 主配置文件
************************************************************************************************************************
#匿名用户配置
anonymous_enable=YES     # 是否启用匿名用户 ftp anonymousNO为需要验证方式
anon_root=/xx            # 指定匿名用户根目录
#anon_upload_enable=YES          # 是否允许匿名用户写上传
#anon_mkdir_write_enable=YES     # 是否允许匿名用户删创建

# 普通用户配置
local_enable=YES         # 是否允许本地用户登录
local_root=/xx             # 指定普通用户的根目录

#开启ftp普通用户登录家目录访问权限
write_enable=YES    # 是否允许写入
local_umask=022     # umask值
dirmessage_enable=YES      # 切换目录时的欢迎词
# 设置  vi /etc/ftp/.message
xferlog_std_format=YES    # 是否启用日志
#xferlog_file=/var/log/xferlog   # 日志路径
xferlog_std_format=YES  # 日志格式
#chown_uploads=YES          # 上传文件的所有者会被改变
#chown_username=whoever     # 指定上传文件后改变的所有者
#idle_session_timeout=600   # 连接后闲置时间600秒
#ftpd_banner=Welcome to blah FTP service. #FTP登录欢迎词
# 目录锁定
# users to NOT chroot().   
#chroot_local_user=YES     # 锁定目录,不允许本地用户切换其它目录
#chroot_list_enable=YES    # 指定用户锁定目录
#chroot_list_file=/etc/vsftpd/chroot_list   出现在此文件的用户做锁定目录

防止用户返回到上一级目录:

如果你想禁止所有用户调转到上级目录,可以设置
chroot_local_user=YES  前提:需要设置local_root目录;
然后将要禁止的用户添加到chroot_list里面即可。


# 安全限制
pam_service_name=vsftpd    # /etc/pam.d/vsftpd  是属于pam管理
userlist_enable=YES        #
userlist_deny=YES          # 拒绝用户列表   NO 为出现在文件中的用户为同意
userlist_file=/etc/vsftpd/user_list    # 列表文件        
tcp_wrappers=YES       # ip限制 /etc/host.deny
deny_file={*.mp3,*.exe}    # 拒绝上传文件格式为exe mp3
**************************************************************************************************************************

修改家目录布尔值

getsebool -a | grep ftp

ftp_home_dir --> off

setsebool -P ftp_home_dir on


/etc/pam.d/vsftpd   # PAM管理文件

#%PAM-1.0
session   optional     pam_keyinit.so    force revoke
auth      required     pam_listfile.soitem=user sense=deny (拒绝)   file=/etc/vsftpd/ftpusersonerr=succeed   
auth      required     pam_shells.so
auth      include      password-auth
account   include      password-auth
session   required     pam_loginuid.so
session   include      password-auth


/etc/vsftpd/ftpusers   # 出现在此文件中的为不能登录用户




上传模式:ascii   文本文件可编
          bin    图片语音 不可编




1.7. 配置用户
1.7.1.创建系统用户:

2.创建一个用户来访问FTP,并指定该用户的FTP 目录:

[iyunv@singledb \]# useradd -d /var/www/html/qs -g ftp -s /sbin/nologin user1

[iyunv@singledb \]# passwd uesr1

  以上创建用户的方法可以用该帐号登录系统,但是我们要创建的帐号是可以登录FTP但是不可以登录系统。

#useradd-d /var/www/html/qs -g ftp -s /sbin/nologin user1   //-d是指定目录(必须为相对根的跟路径,否则提示阿弥有home家目录),-g指定分组为ftp组,-s指定该用户不能返回上一级。

#passwduser1 //设置密码



1.7.2.创建虚拟用户1.7.2.1.创建普通虚拟用户ftp站点
  首先安装FTP 虚拟用户需要用到的软件及认证模块
yum  install  pam* db4*  --skip-broken  –y
yum  install  pam* libdb-utils libdb*--skip-broken  –y  #centos 7安装方法

创建并生成vsftpd数据库文件vi /etc/vsftpd/user,  # 建立user用户文件
******************************************************************
1.   user01    # 用户名
2.    123      # 密码
3.   user02
4.    123
以此类推,一直添加账号
*******************************************************************
  生成数据库文件命令:
db_load -T -t hash -f /etc/vsftpd/ftpusers.txt/etc/vsftpd/vsftpd_login.db
chmod 700 /etc/vsftpd/vsftpd_login.db    给权限

  配置PAM验证文件:
在配置文件vi /etc/pam.d/vsftpd 行首加入如下两行认证语句:(如果是32位,lib64需改成lib,如果RedHat,加入的语句不一样,需注意)
auth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/vsftpd_login
account sufficient     /lib64/security/pam_userdb.so     db=/etc/vsftpd/vsftpd_login

  创建vsftpd映射本地用户:
所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码,也不需要登录。主要用来做虚拟用户映射使用。
useradd   –d  /home/ftpuser -s /sbin/nologin  ftpuser

  修改完整版配置文件内容如下:
Vi/etc/vsftpd/vsftpd.conf
anonymous_enable=NO  //禁止匿名用户访问
local_enable=YES    //允许本地用户登录FTP
write_enable=YES   //允许用户在FTP目录有写入的权限
local_umask=022     //设置本地用户的文件生成掩码为022,默认是077
dirmessage_enable=YES   //激活目录信息,当远程用户更改目录时,将出现提示信息
xferlog_enable=YES    //启用上传和下载日志功能
connect_from_port_20=YES   //启用FTP数据端口的连接请求
xferlog_file=/var/log/vsftpd.log    //是否使用标准的ftpd xferlog日志文件格式
xferlog_std_format=YES  
ascii_upload_enable=YES
ascii_download_enable=YES
listen=YES   /使vsftpd处于独立启动监听端口模式

guest_enable=YES           # 开启虚拟用户
guest_username=ftpuser      # 虚拟用户
pam_service_name=vsftpd   //设置PAM认证服务配置文件名称,文件存放在/etc/pam.d/目录
user_config_dir=/etc/vsftpd/vsftpd_user_conf         # 指定虚拟用户独立目录配置文件
virtual_use_local_privs=YES       # 虚拟用户和本地用户权限匹配

      保存重启,/etc/init.d/vsftpd restart 即可使用虚拟用户登录,这时候所有的虚拟用户共同使用/home/ftpuser目录上传下载,如果想使用自己独立的目录,可以在/etc/vsftpd/vsftpd_user_conf目录创建各自的配置文件,如给user01创建独立的配置文件:多个用户创建多个
vi  /etc/vsftpd/vsftpd_user_conf/user01
local_root=/home/ftpsite/wugk       # 锁定目录
write_enable=YES                    # 开启写入
anon_world_readable_only=YES       # 允许读取
anon_upload_enable=YES            # 允许上传
anon_mkdir_write_enable=YES         # 允许写入
anon_other_write_enable=YES         #

同时,要在/home/ftpuser/下创建对应用户的家目录,例如:/home/ftpuser/user01
重启,使用客户端登录FTP,测试即可。关于FTP讲解就到此,windows还可以使用Server-U来搭建FTP服务器端,有兴趣的童鞋可以研究一下。



1.7.2.2.创建public公共账号和管理账号实验目的:
Public 可以公共下载文件,但不能删除文件
Ftpadmin有所有权限。
**********前面省略 与上相同******
5.创建虚拟帐号对应的系统用户

普通帐号:
public对应系统帐号ftp_public,并指定其主目录为/var/ftp/public
# 对家目录做权限设置, chmod-R 500 /var/ftp/public/
普通帐号public只允许下载,修改public目录用户权限为rx可读可执行。

管理帐号:
ftpadmin对应系统帐号ftp_admin,指定主目录为/var/ftp/ftpadmin
# 对家目录做权限设置,chmod-R 700 /var/ftp/ftpadmin/
专用帐号ftpadmin允许上传和下载,所以对ftpadmin目录权限设置为rwx,可读可写可执

[iyunv@red-hat-5 ftp]# useradd -d /home/ftpadmin/-s /sbin/nologin ftpadmin
[iyunv@red-hat-5 ftp]# useradd -d/home/ftppublic/ -s /sbin/nologin  ftppublic  
[iyunv@red-hat-5 ftp]# chmod -R 500/home/public/
[iyunv@red-hat-5 ftp]# chmod -R 700/home/ftpadmin/

6.建立配置文件
设置多个虚拟帐号的不同权限,需要为每个虚拟帐号建立独立的配置文件,并根据需要进行相应的设置

1)修改vsftpd.conf主配置文件
配置主配置文件/etc/vsftpd/vsftpd.conf
添加user_config_dir字段,设置虚拟用户配置文件和目录
此主配置文件是全局配置,所有账号生效

anonymous_enable=NO(修改配置)      禁用匿名用户登录   
write_enable=YES (默认开启)          允许使用任何可以修改文件系统的FTP的指令
local_enable=YES (默认开启)          启用本地用户登录设置   
chroot_local_enable=YES (自建配置)    将所有本地用户限制在家目录中   
pam_service_name=vsftpd:(默认开启)配置vsftpd使用的PAM模块为vsftpd  user_config_dir=/etc/vsftpd/vsftpd_login:(自建配置)设置虚拟帐号的主目录为/
vsftpd_login  max_clients=300:(自建配置)  设置FTP服务器最大接入客户端数为300个
max_per_ip=10:  (自建配置)            设置每个IP地址最大连接数为10个  
port_enable=NO (自建配置)             取消PORT模式进行数据传输   
pasv_min_port=65341 (自建配置)          PASV模式下数据传输所使用port范围下界
pasv_max_port=65351 (自建配置)          PASV模式下数据传输所使用port范围上界
connect_from_port_20=NO (修改配置)    PORT模式进行数据传输不使用20端口  
pasv_enable=YES  (自建配置)             允许PASV模式进行数据传输


(2)建立虚拟帐号配置文件
在user_config_dir=/etc/vsftpd_login指定路径下,建立与虚拟帐号同名的配置文件并添加相应的配置字段
[iyunv@red-hat-5 vsftpd]# mkdir /vsftpd_login  
[iyunv@red-hat-5 vsftpd]# touch/etc/vsftpd/vsftpd_login/public
[iyunv@red-hat-5 vsftpd]# touch/etc/vsftpd//vsftpd_login/ftpadmin

首先建立普通帐号public的配置文件
vi /etc/vsftpd/vsftpd_login/public

guest_enable=yes         开启虚拟帐号登录  
guest_username=ftp_public     设置ftp对应的系统帐号为ftppublic  
anon_world_readable_only=no   允许匿名用户浏览器整个服务器的文件系统
anon_max_rate=50000   限定传输速率为50KB/s

建立专用帐号的配置文件ftpadmin
vi /etc/vsftpd/vsftpd_login/ftpadmin

guest_enable=yes:           开启虚拟帐号登录   
guest_username=ftp_ personal:设置ftp对应的系统帐号为ftp_personal
anon_other_write_enable=YES:  允许匿名账号具有删除.更名权限
anon_mkdir_write_enable=yes:允许创建文件夹   
anon_upload_enable=yes:    开启匿名帐号的上传功能   
anon_world_readable_only=no   允许匿名用户浏览器整个服务器的文件系统
anon_max_rate=100000:     限定传输速度为100KB/s

重启服务 service vsftpd restart

如果ftpadmin用户需要复制文件到public中,方便它人下载,可以在ftpadmin的配置文件中加入下面两行代码
还有一种方法就是在personal配置文件加入以下两个参
chown_uploads=YES 激活匿名用户所上传文件的修改所有权
chown_username=root 拥有匿名用户上传文件所有权的用户
然后就可以直接拷贝文件到public目录下

1.8. ftp客户端软件lftplftp user1@10.204.2.200   登录FTP  指定用户名   
口令:

ls 查看
cd 切换目录
put 文件名  上传  
get   文件名  下载


1.9. 故障排除



  • 如果无法上传,故障排除:
  • 检查配置文件是否有允许写
  • 目录权限

getsebool -a | grep ftp 查询Bool值
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off

setsebool -P allow_ftpd_anon_write on
setsebool -P allow_ftpd_full_access on



  • 登录后无法执行命令,提示没有主机路由


vim /etc/sysconfig/iptables-config

IPTABLES_MODULES="ip_conntrack_ftp"



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-309762-1-1.html 上篇帖子: vsftp 利用mysql 验证虚拟账户 下篇帖子: 青岛高防BGP,安全、稳定、快速、畅通 服务器 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表