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   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 目录:

[[email protected] \]# useradd -d /var/www/html/qs -g ftp -s /sbin/nologin user1

[[email protected] \]# 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,可读可写可执

[[email protected] ftp]# useradd -d /home/ftpadmin/-s /sbin/nologin ftpadmin

[[email protected] ftp]# useradd -d/home/ftppublic/ -s /sbin/nologin  ftppublic

[[email protected] ftp]# chmod -R 500/home/public/

[[email protected] 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指定路径下,建立与虚拟帐号同名的配置文件并添加相应的配置字段

[[email protected] vsftpd]# mkdir /vsftpd_login

[[email protected] vsftpd]# touch/etc/vsftpd/vsftpd_login/public

[[email protected] 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客户端软件lftp

lftp [email protected]   登录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"

时间: 2024-10-07 20:28:49

Linux vsftpd服务器的相关文章

2-6-RHEL6.5搭建vsftpd服务器案例分析与总结(Red Hat Enterprise Linux Server6.3)@树袋飘零

本节内容介绍: 一.FTP简介 二.vsftpd服务器的安装 三.vsftpd服务器配置 四.vsftpd案例分析 五.vsftpd虚拟主机 六.虚拟账户 FTP简介 FTP(File Transfer Protocol)是Internet上提供文件传输的协议,,它采用c/s结构的工作模式.FTP的初衷就是为了解决存在于复杂的计算机环境中的操作系统多样化的问题,FTP为所有的使用此服务的主机建立了统一的机制协议,这样尽管大家都个性十足,但是都遵守FTP协议,文件的沟通传输也就能顺利畅通了.FTP

vsftpd服务器

搭建vsftpd服务器 FTP是文件传输协议,正是由于这种协议使得主机间可以共享文件,FTP使用TCP生成一个虚拟链接用于控制信息,然后再生成一个单独的TCP传输.Vsftpd是一款在Linux发行版中最主流的FTP服务器程序.特点是小巧轻快,安全易用.能让其自身特点得到发挥和掌握. 1.   安装命令 #yum install vsftpd* -y 2.   进入配置文件 #cd  /etc/vsftpd/ 3.   把除以"#"开头的文件内容追加给新建文件"vsftpd.

linux ftp服务器搭建

linux ftp服务 主动模式port:服务器主动发起数据连接.客户端向服务器21端口建立ftp数据连接.服务器从20端口向客户端随机端口发送数据. 被动模式pasv:服务器被动等待数据连接.如果客户机防火墙禁止主动模式,会采用被动模式.客户端向服务器21端口建立ftp数据连接.需要传输数据时,客户端向服务器设定范围内的端口(非20)建立数据连接. 开始: 关闭安全系统 setenforce  0 关闭防火墙 service  iptables stop 1.  安装软件包 mount   /

Linux FTP服务器的搭建与配置+基于关系型数据库实现用户认证

一.服务器端的安装: yum install vsftpd 1)查看安装后生成的哪些文件 [[email protected] ~]# rpm -ql vsftpd /etc/logrotate.d/vsftpd  <==========主志日志文件 /etc/pam.d/vsftpd<==================认证文件 /etc/rc.d/init.d/vsftpd<=============服务脚本 /etc/vsftpd<======================

创建vsftpd服务器基于mysql的虚拟用户认证

简单罗列基础命令,只分享我的想法! 一.目的 要求:配置允许虚拟用户访问的vsftpd服务器,虚拟用户存储在另一台MySQL的服务器上面,虚拟用户账号有两个分别是tom和jerry,密码是tom和jerry,要求对这两个账户的权限做一下限制(根据实际的要求,自己调节). 环境:MySQL服务器(172.16.49.1),CentOS 6.6和MariaDB-5.5.43.另一台是通过yum安装vsftpd(192.168.0.22),OS是CentOS 6.6. MySQL是通用二进制格式安装,

Linux FTP服务器的搭建讲解

在Linux中,有好几种实现ftp服务器的软件,我们这里使用centos自带的vsftp,它具有安全,轻量级的特性. 我们安装vsftpd包后开启服务,ftp即可访问: 1 安装 yum install vsftpd  portmap 安装之后我们需要启动服务,本地测试访问,因为这个访问比较简单所有不安全,这是第一种方法还有一种方法是通过虚拟用户访问的这个比较安全 稍后讲. 关闭防火墙和selinux 启动服务器即可访问 这里的rpcbind是之前portmap安装的 使用本地用户登录时,登录到

Linux VSFTP服务器详细配置

Linux VSFTP服务器 一.Linux FTP服务器分类: <1>wu-ftp <2>proftp=profession ftp <3>vsftp=very security ftp 配置文件: /etc/vsftpd/vsftpd.conf   //主配置文件 /etc/vsftpd.ftpusers      //被禁止登录FTP的用户文件 /etc/vsftpd.user_list     //允许登录FTP的用户文件 二.访问方式 <1>匿名登

Linux Vsftpd 连接超时解决方法

Linux Vsftpd 连接超时解决方法 2013-11-13 10:58:34|  分类: 默认分类|举报|字号 订阅 解决方法(http://www.lingdus.com/thread-8189-1-1.html) 在服务端配置被动模式就可以从根源上解决这问题.1.编辑 Vsftpd  配置文件 vi /etc/vsftpd/vsftpd.conf 复制代码 2.在最下面添加以下信息 pasv_enable=YES #开启被动模式 pasv_min_port=4000  #随机最小端口

CentOS 6.x上搭建vSFTPD服务器搭建与配置详解

摘要: 手把手教你搭建vsftpd服务器,实现了基于db文件和MySQL数据库文件进行虚拟用户认证,当然了也本文章也包含搭建过程中问题的排查啦,哈哈哈. 另外,我在CentOS 7.x上也进行了搭建测试,步骤一致,个别命令会有不同,但不影响测试效果. 服务器部署需求分析(实现效果): 1.登录.传输全程进行加密处理. 2.记录用户上传.下载文件日志. 3.针对每个用户有公共文件夹(大家都可以看到和下载其中的文件)和私有文件夹(只有自己可以看到,并且可上传下载文件). 一.vsftpd服务安装: