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. 使用PL/SQL连接Oracle时报错ORA-12541: TNS: 无监听程序

    因公司需求,安装oracle数据库,oracle数据库用账号密码可以登录,然后在pl/sql里面不能登录,显示无监听程序. 这就说明可能有些服务没有启动,开始运行services.msc ,进入后寻找 ...

  2. java.util (Collection接口和Map接口)

    1:Collection和Map接口的几个主要继承和实现类                  1.1  Collection接口 Collection是最基本的集合接口,一个Collection代表一 ...

  3. IntelliJ IDEA使用教程(非常全面)

    这个编辑器我就不再多做介绍了.直接开始新建maven hello world 的Java web项目啦 你电脑上得有jdk1.7,或者1.8,然后就是maven3.x吧,再有就是tomcat7以上吧. ...

  4. 【纪录】Hash about

    backup a easy implement # coding: utf-8 def add(k, v): pass def get(target): pass class LinearMap(ob ...

  5. linux audit审计(5)--audit规则配置

    audit可以配置规则,这个规则主要是给内核模块下发的,内核audit模块会按照这个规则获取审计信息,发送给auditd来记录日志. 规则类型可分为: 1.控制规则:控制audit系统的规则: 2.文 ...

  6. kubernetes常用命令

    #.查询信息 kubectl get [需要查询的服务]   node 节点componentstatuses 简写 cs 组件状态namespaces 简写 ns 名命空间pod pod信息 添加  ...

  7. 关于PHP函数传参的注意点

    PHP的实参在传递过程中是顺序传递的,不支持指定参数名传递.怎么理解呢?看下面的代码: function test($name,$age){ echo '姓名:'.$name,' 年纪:'.$age; ...

  8. Python学习之路——Day02

    今日内容: 1.编程语言介绍(***) 2.python介绍(***) 3.安装cpython解释器(多个版本)(****) 4.运行python程序的两种方式(****) 4.1 交互式 4.2 命 ...

  9. Spring MVC 使用介绍(一)—— 概述

    一.Web MVC简介 1.经典的MVC架构 存在的问题:1.控制器负责流程控制.请求数据整理与校验.模型与视图选择等功能,过于复杂.2.模型层没有进行分层设计 2.改进的MVC设计 1)控制器功能拆 ...

  10. Keepalived+LVS高可用负载均衡集群

    概述 Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(HeathChecking)功能——判断LVS负载调度器.节点服务器的可用性,及 ...