ftp

文件共享服务,文件的上传下载 跨平台,tcp协议 21号(命令端口) 20号(数据端口,主动模式) 默认情况

ftp服务运行被动模式

vsftpd:软件 非常安全的
rpm -qi vsftpd
vsftpd is a Very Secure FTP daemon. It was written completely from
scratch.
主动模式:
被动模式:
验证:
默认是在被动模式下,被动模式和主动模式可以切换

主动:
server client
20 21 n m

<-------------
-------------->
---------------------------------------->
<---------------------------------------

被动:
server client
随机端口 21 n m
3000-3005

<---------------
---------------->
<--------------------------------------------
---------------------------------------------

客户端工具:
windows:firefox、ie、fileZilla
linux:lftp、ftp、sftp

思路:
1、关闭防火墙和selinux
2、配置yum源
3、软件三步曲(安装|确认是否安装成功|查看软件列表)
4、了解配置文件
5、通过需求修改配置文件
6、测试验证
步骤:
1、
2、
3、
rpm -qc vsftpd
/etc/logrotate.d/vsftpd 日志轮转
/etc/pam.d/vsftpd 验证
/etc/vsftpd/ftpusers 用户访问控制列表(黑名单)
/etc/vsftpd/user_list 用户访问控制列表(可黑可白)
/etc/vsftpd/vsftpd.conf 主配置文件

/var/ftp 匿名用户的默认目录
/var/ftp/pub 匿名用户的扩展目录

/usr/sbin/vsftpd 二进制命令
/etc/rc.d/init.d/vsftpd 启动脚本

4、了解配置文件
anon:代表匿名用户
local:代表本地用户
# cat /etc/vsftpd/vsftpd.conf |grep -v ^#
anonymous_enable=YES 开启匿名用户
local_enable=YES 开启本地用户
write_enable=YES 本地用户可写
local_umask=022 ——>755 本地用户的默认权限
dirmessage_enable=YES 开启访问消息
xferlog_enable=YES 启用日志
connect_from_port_20=YES 默认开启20号端口(支持主动和被动模式,默认是被动模式)
xferlog_std_format=YES 日志格式
listen=YES 独立服务

pam_service_name=vsftpd 认证模块
userlist_enable=YES 启用用户列表
tcp_wrappers=YES 支持tcp_wrappers功能

5、不修改配置文件
测试验证
client:192.168.5.2
yum -y install lftp ftp
结果:本地用户可以上传下载文件;匿名用户不可以上传只能下载文件

demo1:允许匿名用户上传文件、创建目录重命名等

1、vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
2、重启服务
注意:
不要把/var/ftp目录的权限修改为777或者o+w,因为会导致报错。
通常的做法是在/var/ftp目录里创建一个子目录,修改子目录的权限为777就可以,匿名用户上传的文件保存到子目录里就可以。

2、匿名用户下载其他匿名用户所上传的文件
vim /etc/vsftpd/vsftpd.conf
anon_umask=022
重启服务

demo2:开启本地用户的消息功能

useradd user01
echo “welcome to uplook” >/home/user01/.message

banner_file=/etc/vsftpd/banner
vim /etc/vsftpd/banner
@@@@@@@@@@@@
@ @
@ ^ ^ @
@ _ @

demo3:将所有本地用户禁锢在自己的家里面

chroot_local_user=YES 所有用户都禁锢
需求1:只允许user01用户来回切换,其他用户禁锢
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
echo user01>/etc/vsftpd/chroot_list
需求2:只禁锢user02用户,其他人都可以切换
#chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

demo4:


ftp服务自身的用户访问控制

ftpusers 黑名单
user_list 可黑可白

echo user01 >ftpusers
# ftp 192.168.5.1
Connected to 192.168.5.1 (192.168.5.1).
220-@@@@@@@@@@@@
220-@ @
220-@ ^ ^ @
220-@ _ @
220
Name (192.168.5.1:root): user01
331 Please specify the password.
Password:
530 Login incorrect. userlist_deny=NO,echo user01>> user_list
Login failed.
ftp>

# ftp 192.168.5.1
Connected to 192.168.5.1 (192.168.5.1).
220 (vsFTPd 2.2.2)
Name (192.168.5.1:root): user01
530 Permission denied. userlist_deny=YES(default) echo user01>>ftpusers
Login failed.

如果ftpusers和user_list文件冲突,拒绝优先。

demo5:更改匿名用户和本地用户的ftp家目录
默认:anon的家 /var/ftp
local的家 /home/$username

# mkdir /ftp/data -p
# mkdir /local/data -p
# vim vsftpd.conf
anon_root=/ftp/data
local_root=/local/data

其他访问控制:
max_clients:允许多少个链接(最大连接数)默认2000
max_per_ip:每个IP地址的最大连接数 默认没有限制
local_max_rate:限制本地用户下载速率,默认没有限制
tcp_wrappers:访问控制的一个工具,类似防火墙,但是其功能没有防火墙强大;配置简单。
/etc/hosts.deny
/etc/hosts.allow

./configure --help --enable-libwrap
rpm

# ldd /usr/sbin/vsftpd |grep libwrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f13adcf9000)

# ldd /usr/sbin/sshd|grep libwrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f9a0f28e000)
访问控制机制:先去匹配/etc/hosts.allow,再去匹配/etc/hosts.deny;如果两个文件都没有,全部都允许;如果两个文件都存在hosts.allow优先

需求:
vim /etc/hosts.deny
vsftpd,sshd:all 禁止所有人
vsftpd:192.168.5.0/255.255.255.0 EXCEPT 192.168.5.254
vsftpd:all EXCEPT .uplookg.com
vsftpd:192.168.5.1

注意:子网掩码不支持/24/8/16这种写法

练习一:
搭建一个ftp服务器,要求如下:
1、匿名用户可以上传下载文件,同时也可以下载其他人所上传的文件,并且所有匿名用户上传的文件的属主都是root,放在/ftp/data目录里。
mkdir /ftp/data -p
vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
chown_uploads=YES
chown_username=root
anon_root=/ftp

重启服务:service vsftpd restart
# chmod o+w /ftp/data

2、创建一个本地用户zhangsan(自己名字),可以访问ftp服务但是不能登录操作系统,并且只能在自己的家里活动。
useradd zhangsan -s /sbin/nologin
chroot_local_user=YES 禁锢所有本地用户

3、zhangsan用户可以上传下载文件,并且所上传的文件都放在/local/data下
mkdir /local/data -p
vim vsftpd.conf
...
local_root=/local/data
4、在你的本地主机/tmp/zhangsan(自己名字)目录下创建5个文件,通过客户端工具以匿名用户身份将整个以你名字命名的目录上传到服务器192.168.5.1上。
mkdir /tmp/zhangsan
touch /tmp/zhangsan/file{1..5}

lftp 192.168.5.1:/> mirror -R /tmp/zhangsan/ data/ 上传本地目录到远端

5、使用客户端工具(除了浏览器)用本地用户redhat(密码123)下载192.168.5.1上的“2016-04-18”目录到你的本地/tmp/zhangsan(自己名字)里
lftp redhat@192.168.5.1:~> mirror /ftp/2016-04-18/ /tmp/zhangsan/ 下载远端到本地
6、不允许192.168.5.2访问你的ftp服务器,但是只允许192.168.5.1访问
vim /etc/hosts.deny
vsftpd:192.168.5.2

vim /etc/hosts.allow
vsftpd:all EXCEPT 192.168.5.2 不生效,和hosts.deny一起使用

7、把被动连接的端口范围控制在2000~2050之间
pasv_enable=YES 可以不写,默认就是被动模式
pasv_max_port=2050
pasv_min_port=2000

练习二:
将vsftpd服务托管给xinetd服务管理
# service xinetd status
xinetd (pid 18628) is running...
创建子配置文件在/etc/xientd.d/vsftpd
# cat vsftpd
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service ftp
{
disable = no
flags = IPv4
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
log_on_failure += USERID
}

vim /etc/vsftpd/vsftpd.conf
...
linsen=NO

重启服务xined:
service xinetd restart

# netstat -tlnp|grep 21
tcp 0 0 :::21 :::* LISTEN 18628/xinetd

测试验证

ftp文件共享服务详解的更多相关文章

  1. 【转】SSH服务详解

    [转]SSH服务详解 第1章 SSH服务 1.1 SSH服务协议说明 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Gro ...

  2. (转)SSH服务详解

    SSH服务详解 原文:http://www.cnblogs.com/clsn/p/7711494.html 第1章 SSH服务1.1 SSH服务协议说明SSH 是 Secure Shell Proto ...

  3. winxp计算机管理中服务详解

    winxp计算机管理中服务详解01 http://blog.sina.com.cn/s/blog_60f923b50100efy9.html http://blog.sina.com.cn/s/blo ...

  4. Android中Service(服务)详解

    http://blog.csdn.net/ryantang03/article/details/7770939 Android中Service(服务)详解 标签: serviceandroidappl ...

  5. WCF中队列服务详解

    WCF中队列服务详解 一.引言 在前面的WCF服务中,它都要求服务与客户端两端都必须启动并且运行,从而实现彼此间的交互.然而,还有相当多的情况希望一个面向服务的应用中拥有离线交互的能力.WCF通过服务 ...

  6. HTTPD之二————HTTPD服务详解————httpd的配置文件常见设置

    HTTPD之二----HTTPD服务详解----httpd的配置文件常见设置 HTTP服务器应用 http服务器程序 httpd apache nginx lighttpd 应用程序服务器 IIS,a ...

  7. angular-ngSanitize模块-$sanitize服务详解

    本篇主要讲解angular中的$sanitize这个服务.此服务依赖于ngSanitize模块. 要学习这个服务,先要了解另一个指令: ng-bing-html. 顾名思义,ng-bind-html和 ...

  8. Java从入门到精通——数据库篇Oracle 11g服务详解

    装上Oracle之后大家都会感觉到我们的电脑慢了下来,如何提高计算机的速度呢?我们应该打开必要的服务,关闭没有用的服务.下面是Oracle服务的详解: Oracle ORCL VSS Writer S ...

  9. windows 7 系统进程服务详解

    windows 7已经发布有段时间了,相信很多网友都已经换上了传说中非常完美的win7系统.win7不仅继承而且还超越了vista的美观界面,性能优化方面也下足了功力.还拥有强大的win xp兼容性, ...

随机推荐

  1. python自动化常见问题汇总

           1.如何提高selenium脚本的执行速度? Selenium脚本的执行速度受多方面因素的影响,如网速,操作步骤的繁琐程度,页面加载的速度,以及我们在脚本中设置的等待时间,运行脚本的线程 ...

  2. [转帖]十分钟快速理解DPI和PPI,不再傻傻分不清!

    十分钟快速理解DPI和PPI,不再傻傻分不清! https://baijiahao.baidu.com/s?id=1605834796518990333&wfr=spider&for= ...

  3. 游标cursor案例

  4. spring bean之间的关系:继承,依赖,注入

    一 继承 spring中多个bean之间的继承关系,和面向对象中的继承关系类似,直接看代码. 先定义一个Person类 package com.demo.spring.entity; /** * @a ...

  5. javap -v没有显示LocalVaribleTable

    时隔多日,终于找到为什么javap -v .class文件没有LocalVariableTable出现 因为默认的javac编译没有生成相关的调试信息,这里我们可以通过javac -help查看指令帮 ...

  6. llegalStateException: getWriter() has already been called for this response

    我使用Springmvc的处理器进行向AJAX传值时出现的问题 当我使用 PrintWriter out = response.getWriter();out.print("用户不存在,请先 ...

  7. java中级——集合框架【1】-ArrayList

    集合框架----ArrayList 引子:我们先来看看传统数组的用法 写一个Hero对象类 package cn.jse.t1; public class Hero { public String n ...

  8. js删除数组元素

    一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删 ...

  9. 《笔记》Apache2 mod_wsgi的配置

    接手了一台古老的服务器的还使用的是mod_wsgi,所以需要配置一下.其实这里有点怀念,记得当年自己折腾第一个app的时候,还是个什么都不懂的菜鸡.当时用django搜方案的时候,还不知道有uwsgi ...

  10. python学习笔记(9)--函数

    函数定义: def <函数名>(<参数(0个或多个)>): 函数体 return <返回值> 参数有非可选参数,和可选参数,可选参数放在参数列表的最后,可以为可选参 ...