ftp(简单文件传输协议),是一种应用广泛的网络文件传输协议和服务,占用20和21号端口,主要用于资源的上传和下载.

在linux对于ftp同widows一样具有很多的种类,这里主要介绍vsfptd(非常安全的守护进程)

的三种登录方法(匿名登录和本地登录及虚拟登录)极其一些主要的配置

首先用yum安装vsftpd

/etc/vsftpd/vsftpd.conf为ftp的主要配置文件

启动ftp服务 :service vsfptd restart

把其加入到开机项

匿名登录

匿名用户登录ftp server配置比较简单,默认是允许匿名登录ftp server的,主要是考虑权限和selinux及iptables
对ftp server的约束

这里可对ftp server作一些优化,使client登录ftp server可以执行上传及创建文件等高权限的操作

当client访问ftp server时访问是可以的,但当创建文件时提示权限不够,此时便可以修改selinux对ftp的安全控制

本地登录

禁止匿名登录用本地创建的账号登录ftp 服务器

在/etc/vsftpd目录下有ftpusers和user_list可对本地系统账号作限制登录,只要把配置文件里出现的账户抹去即可

# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

虚拟登录

首先在/etc/vsftpd目录下创建虚拟用户登录ftp server的用户名和密码对应文件/etc/vsftpd/vuser.list

u1                    //奇数行代表用户名
123                 //偶数行代表密码
u2
123

利用哈希加密,把创建的登录虚拟用户文件加密为vuser.db,并设置权限

[root@localhost ~]# db_load  -T -t hash /etc/vsftpd/vsftpd.list   /etc/vsftpd/vsftpd.db

vim 编辑/etc/pam.d/vsftpd.vu  创建PAM认证文件

auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser

设置一个不允许系统登录的账户对应着虚拟用户登录ftp server时所用的家目录

[root@localhost ~]# useradd -d /var/ftproot/ -s /usr/sbin/nologin virtual

为了让虚拟用户登录系统具有可以一些列的权限,可以在/etc/vsftpd下创建虚拟用户权限目录vuser_dir,并同时创建和虚拟用户名相同的文件,设置权限

[root@localhost ~]# cd /etc/vsftpd/vusrs_dir/
[root@localhost vusrs_dir]#
[root@localhost vusrs_dir]#
[root@localhost vusrs_dir]# ls
u1 u2
[root@localhost vusrs_dir]#
[root@localhost vusrs_dir]#

vim /etc/vsftpd/vuser_dir/u2

anon_mkdir_write_enable=YES
anon_upload_enable=YES

接下来重要的是把先前创建好的一些列文件在主配置文件/erc/vsftpd/vsftpd.conf里调用

user_config_dir=/etc/vsftpd/vusers_dir      //虚拟用户权限文件目录
guest_enable=YES                        //允许虚拟用户登录ftp
guest_username=virtual               //虚拟用户名
allow_writeable_chroot=YES         //允许虚拟用户目录取消牢笼机制
pam_service_name=vsftpd.vu    //指定pam认证文件的位置

在客户端登录ftp server,发现可以成功用虚拟账户登录ftp server,从一定程度上提升了ftp server的安全性

[root@localhost vusrs_dir]# ftp 10.0.0.1
Connected to 10.0.0.1 (10.0.0.1).
220 (vsFTPd 3.0.2)
Name (10.0.0.1:root): u2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

优化

1:本地用户登录访问控制

下面对ftp server坐一些优化,在前面说到的采用本地登录方法登录ftp server,处在/etc/vsftp/vuser|root文件被 ftp server列为黑名单,这是由于/etv/vsftpd/vsftpd.conf下的userlist_enable选项导致的,只要把"YES"改为NO,黑名单里的用户便可已登录ftp server,但黑名单外的

用户则不可以登录ftp server

userlist_enable=NO

2:最大连接数

若由多个client同时登录 ftp server,就难免造成ftp server的流量分配不均,可以用

max-clinets  number    //对同一时间的client做最大限制

max-per_ip  number   //对同一IP做最大限制

3:用户隔离

vim编辑/etc/vsftpd/vsftp.conf:

取消 chroot_local_user=YES前的注释,限制用户只能在自己当前的目录

4:会话和数据传输超时时间控制

Idle_session_timeout //设置会话超时的最大时间

Data_connection_timeout //设置数据传输超时的最大时间

基于ftp服务的三种登录方式及其相关的访问控制和优化的更多相关文章

  1. Telnet的三种登录方式

    Telnet的三种登录方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.华为创建telnet的三种验证方式 首先,我们可以简单的看一个拓扑图,让我们可以在亦庄的路由器上对双桥 ...

  2. 多对多的三种创建方式-forms相关组件-钩子函数-cookie与session

    多对多的三种创建方式 1.全自动(推荐使用的**) 优势:第三张可以任意的扩展字段 缺点:ORM查询不方便,如果后续字段增加更改时不便添加修改 manyToManyField创建的第三张表属于虚拟的, ...

  3. Spring Security构建Rest服务-1202-Spring Security OAuth开发APP认证框架之重构3种登录方式

    SpringSecurityOAuth核心源码解析 蓝色表示接口,绿色表示类 1,TokenEndpoint 整个入口点,相当于一个controller,不同的授权模式获取token的地址都是 /oa ...

  4. 【转】SpringBoot启动服务的三种方式

    1.IDEA启动 2.命令行启动 首先将命令行位置跳转到当前项目的根目录下,再输入“mvn spring-boot:run”命令,初次操作maven需要下载插件等待几分钟 3.命令行编译为jar启动 ...

  5. 基于Java的二叉树的三种遍历方式的递归与非递归实现

    二叉树的遍历方式包括前序遍历.中序遍历和后序遍历,其实现方式包括递归实现和非递归实现. 前序遍历:根节点 | 左子树 | 右子树 中序遍历:左子树 | 根节点 | 右子树 后序遍历:左子树 | 右子树 ...

  6. linux学习之centos(二):虚拟网络三种连接方式和SecureCRT的使用

    ---操作环境--- 虚拟机版本:VMware Workstation_10.0.3 Linux系统版本:CentOS_6.5(64位) 物理机系统版本:win10  一.虚拟网络三种连接方式 当在V ...

  7. Linux基石【第二篇】虚拟网络三种连接方式(转载)

    在虚拟机上安装完Centos系统后,开始配置静态IP,以方便在本宿主机上可以访问虚拟机,在曲折的配置中,了解到虚拟机还有三种连接方式:Bridged,NAT和Host-only,于是,我又一轮新的各种 ...

  8. Django-多对多关系的三种创建方式-forms组件使用-cookie与session-08

    目录 表模型类多对多关系的三种创建方式 django forms 组件 登录功能手写推理过程 整段代码可以放过来 forms 组件使用 forms 后端定义规则并校验结果 forms 前端渲染标签组件 ...

  9. 三种存储方式DAS、NAS、SAN

    ------------恢复内容开始------------ 一.DAS.NAS.SAN在存储领域的位置 随着主机.磁盘.网络等技术的发展,数据存储的方式和架构也在一直不停改变,本文主要介绍目前主流的 ...

随机推荐

  1. js for in 遍历对象与数组

    遍历对象 let obj = { q:'9', w:'5', e:'2', t:'7', c:'3' } //for in 遍历对象 key为对象的属性名称,遍历属性值时用[]操作符访问 //通过[] ...

  2. Java使用POI操作Excel文件

    1.简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式文件读和写的功能. 2.依赖的jar包 <!-- ex ...

  3. Android—PopupWindow的简单使用

    PopupWindow 是一个可以显示在当前 Activity 之上的浮动容器,这个Demo要实现的功能是,点击布局中的两个按钮,进而控制PopupWindow的显示与消失,代码中有详细的注释首先看一 ...

  4. Android 第三方类库简单使用之EventBus

    Android 第三方类库之EventBus 1 PS 工欲善其事必先利其器. Eventbus也是一款在开发中常用的利器 这篇也对EventBus的简单介绍和使用,与之前个xutils介绍的级别一样 ...

  5. mvc页面间的传值

    本文大致讲解mvc前后端的传值方式,包括control向view.view向control.以及action向action. 回顾 我们回顾下在ASP.NET WebForms中,页面之间最常用的传值 ...

  6. sqlserver broker远端端点证书认证

    1:采用windows验证的方法: CREATE ENDPOINT InstInitiatorEndpoint STATE = STARTED AS TCP ( LISTENER_PORT = ) F ...

  7. (原创)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)

    堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的.了解堆栈溢出之前,先了解以下几个概念: 缓冲区 简单说来是一块连续的计算机内存区域,可以保存相同数据类型的多个实例. 堆栈     堆 栈是 ...

  8. oracle_set_autocommit

    preface 1.centos  operating  system. 2.database is oracle 11g. 3.oracle account  is  scott. step 1.e ...

  9. CSS3中REM使用详解

    px 在Web页面制作中,我们一般使用“px”来设置我们的文本,因为他比较稳定和精确.但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,他改变了浏览器的字体大小(虽然一般人不会去改 ...

  10. MySQL学习(二)数据类型

    截取书中内容留作学习.... 1.整数类型 2.浮点数与定点数类型 3.日期时间类型 向数据库中插入当前系统时间:CURRENT_TIME或者NOW() 4.文本字符串类型 MySQL枚举类型:cre ...