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. vue二次实战

    vue爬坑之路 npm uninstall 模块名(删除指定模块) https://www.cnblogs.com/wisewrong/p/6255817.html vue快速入门 https://s ...

  2. 定义一个内核panic问题

    出现问题时的反汇编为: /usr/src/debug/kernel-4.1.44-.aarch64/net/core/dev.c: 17800xffff800000860724 <__netif ...

  3. linux pstree命令

    pstree命令可以使进程以tree的形式显示 pstree -ssystemd─┬─UVPHostd───6*[{UVPHostd}] ├─acpid ├─2*[agetty] ├─crond ├─ ...

  4. linux中$1的意思

    $1 在shell中成为“位置参数”,表示传入的第一个参数.在shell脚本主体中,表示shell脚本的第一个参数.用在shell脚本函数里时,表示的是函数的第一个入参.

  5. WPF中元素拖拽的两个实例

    今天结合之前做过的一些拖拽的例子来对这个方面进行一些总结,这里主要用两个例子来说明在WPF中如何使用拖拽进行操作,元素拖拽是一个常见的操作,第一个拖拽的例子是将ListBox中的子元素拖拽到ListV ...

  6. myisam和innodb的区别对比

    1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不 ...

  7. spring boot web开发 简单的增删改查和spring boot 自带的Junit测试 案例

    创建 web项目 配置pom.xml文件   ------相当于jar包 配置application.yml -----配置文件(spring数据库连接.server服务.logging日志等) 创建 ...

  8. DotNetty 实现 Modbus TCP 系列 (三) Codecs & Handler

    本文已收录至:开源 DotNetty 实现的 Modbus TCP/IP 协议 DotNetty 作为一个半成品,我们不需要关注细节的实现,只需要关注自己的业务即可,所以最主要的就是处理 Codecs ...

  9. Vuex的API文档

    前面的话 本文将详细介绍Vuex的API文档 概述 import Vuex from 'vuex' const store = new Vuex.Store({ ...options }) [构造器选 ...

  10. 【NLP】大白话讲解word2vec到底在做些什么

    转载自:http://blog.csdn.net/mylove0414/article/details/61616617 词向量 word2vec也叫word embeddings,中文名“词向量”, ...