342132123 发表于 2016-12-5 08:51:01

Linux vsftpd服务器

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   anonymousl 密码为:ftpl 家目录/var/ftpl 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 目录:# useradd -d /var/www/html/qs -g ftp -s /sbin/nologin user1# 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 虚拟用户需要用到的软件及认证模块yuminstallpam* db4*--skip-broken–yyuminstallpam* libdb-utils libdb*--skip-broken–y#centos 7安装方法
创建并生成vsftpd数据库文件vi /etc/vsftpd/user,# 建立user用户文件******************************************************************
1.   user01    # 用户名2.    123      # 密码3.   user024.    123以此类推,一直添加账号 *******************************************************************
生成数据库文件命令:db_load -T -t hash -f /etc/vsftpd/ftpusers.txt/etc/vsftpd/vsftpd_login.dbchmod 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_loginaccount sufficient   /lib64/security/pam_userdb.so   db=/etc/vsftpd/vsftpd_login
创建vsftpd映射本地用户:所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码,也不需要登录。主要用来做虚拟用户映射使用。useradd   –d/home/ftpuser -s /sbin/nologinftpuser
修改完整版配置文件内容如下: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/user01local_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,可读可写可执

# useradd -d /home/ftpadmin/-s /sbin/nologin ftpadmin
# useradd -d/home/ftppublic/ -s /sbin/nologinftppublic
# chmod -R 500/home/public/
# 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模块为vsftpduser_config_dir=/etc/vsftpd/vsftpd_login:(自建配置)设置虚拟帐号的主目录为/
vsftpd_loginmax_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指定路径下,建立与虚拟帐号同名的配置文件并添加相应的配置字段
# mkdir /vsftpd_login
# touch/etc/vsftpd/vsftpd_login/public
# 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]
查看完整版本: Linux vsftpd服务器