服务-ftp服务

FTP:文件传输协议 跨平台 文件上传和下载
vsftpd:非常安全的一个ftp服务
tcp 21端口(命令端) 20端口(数据端口,主动模式下) 默认情况下,ftp是被动模式
主动模式:server——>主动的去连接客户端的数据端口
被动模式:server——>等待客户端来连接服务端所开启随机的数据端口

客户端工具:
Linux:lftp、ftp、sftp..
windows:Ie/firefox、FileZilla

1、
2、
3、软件三步曲

rpm -ql vsftpd

/etc/logrotate.d/vsftpd 日志轮转文件
/etc/pam.d/vsftpd 认证文件
/etc/rc.d/init.d/vsftpd 启动脚本
/etc/vsftpd 主目录
/etc/vsftpd/ftpusers 用户访问控制文件(黑名单)
/etc/vsftpd/user_list 用户访问控制列表文件(可黑可白)
/etc/vsftpd/vsftpd.conf 主配置文件
/usr/sbin/vsftpd 二进制命令

/var/ftp 默认匿名用户上传下载的数据目录
/var/ftp/pub 扩展目录
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS 虚拟用户相关的文档
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_HOSTS 虚拟主机相关的文档

4、了解配置文件

cat /etc/vsftpd/vsftpd.conf |grep -v ^#|grep -v ^$

anonymous_enable=YES 允许匿名用户访问
local_enable=YES 允许本地用户访问
write_enable=YES 可写
local_umask=022 本地用户的默认掩码
dirmessage_enable=YES 开启消息文件
xferlog_enable=YES 开启日志
connect_from_port_20=YES 支持主动模式(默认被动模式)
xferlog_std_format=YES 日志格式
listen=YES 独立模式
pam_service_name=vsftpd 认证名称
userlist_enable=YES 启用用户列表
tcp_wrappers=YES 支持tcp_wrappers功能,类似防火墙,但是没有防火墙强大

local:本地用户
anon:匿名用户

5、根据需求通过修改配置文件来完成服务的搭建
需求:给所有匿名用户共享文件(只允许查看,单不允许上传)
结论:不需要修改任何的配置文件

6、启动服务|开机自启动
7、测试验证

需求2:允许匿名用户上传并且可以删除、修改文件
anon_other_write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

lftp 10.1.1.1:~> ls
ls: Login failed: 500 OOPS: vsftpd: refusing to run with writable anonymous root
原因:
/var/ftp 777 o+w

解决:
o-w 755
在默认的数据根目录里再创建一个目录,并且给1777或者o+w

需求3:匿名用户下载别人的文件
anon_umask=022

需求4:更改匿名用户的默认数据根目录
/var/ftp ——> /data/anon
1、mkdir /data/anon -p
2、vsftpd.conf
anon_root=/data
chmod o+w /data/anon

需求5:更改本地用户的数据根目录
/data/local

local_root=/data/local

需求6:控制本地用户来回切换数据根目录
情况1:禁锢所有用户的数据根目录
chroot_local_user=YES

情况2:只允许user2用户可以切换,其他人不允许
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

情况3:只拒绝user2用户切换,其他人都可以切换

chroot_local_user=YES

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

需求7:ftp自身的访问控制
1、不允许user3用户访问ftp服务
echo user3 >> /etc/vsftpd/ftpusers

ftp 10.1.1.1

Connected to 10.1.1.1 (10.1.1.1).
220 (vsFTPd 2.2.2)
Name (10.1.1.1:root): user3
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp>

2、user_list 默认是黑名单

vsftpd userlist

If userlist_deny=NO, only allow users in this file

If userlist_deny=YES (default), never allow users in this file, and

do not even prompt for a password.

ftp 10.1.1.1

Connected to 10.1.1.1 (10.1.1.1).
220 (vsFTPd 2.2.2)
Name (10.1.1.1:root): user2
530 Permission denied. 说明用户在user_list文件里,该文件为黑名单
Login failed.
ftp>

需求8:开启消息提示
开启本地用户和匿名用户的消息提示:

echo welcome to user1 home > /data/local/.message

echo welcome to anon home > /data/.message

banner_file=/etc/banner 指定消息文件(连接登录时显示

其他访问控制:
max_clients
max_per_ip
pasv_max_por
pasv_min_por
max_login_fails
local_max_rate
listen_port
anon_max_rate

网络访问控制:
tcp_wrappers 工具
/etc/hosts.deny
/etc/hosts.allow
先匹配allow再匹配deny;如果两个都没有,全部允许;如果两个都有allow优先

hosts.deny
vsftpd:all
vsftpd:172.16.0.0/255.255.255.0 EXCEPT 172.16.250.1
sshd,vsftpd:.uplooking.com
vsftpd:10.1.1.1

注意:不支持172.16.0.0/24写法

作业1:
搭建一个自己的ftp服务器,要求如下:
1、匿名用户可以上传下载文件,同时也可以下载其他人的上传的文件,并且所有匿名用户的文件都保存在/anon/data目录里
anon_upload_enable=YES
anon_umask=022
anon_root=/anon/data
2、创建一个本地用户zhagnsan(自己名字),可以访问你的ftp服务器,但是不能登录你的主机,并且只能在自己的家里面活动
useradd -s /sbin/nologin zhangsan
或者
useradd -r zhangsan
不允许zhangsan用户切换其他人可以
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

3、zhangsan用户可以上传下载文件,并且所有本地用户上传的文件都在/local/data目录里
local_root=/local/data
chmod o+w /local/data
4、在你的本地创建/tmp/zhangsan目录,并且在其下创建5个文件,通过客户端工具以匿名用户的身份将整个目录上传到10.1.1.1上的data目录里
lftp——>user xxx ftp ——>ftp
lftp 10.1.1.1
5、使用客户端工具(除了浏览器)用本地用户user1/123下载10.1.1.1上的“2017-04-26”目录到你的本地/tmp/zhangsan里
6、不允许10.1.1.2访问你的ftp服务,但是允许10.1.1.254访问
7、ftp服务的随机端口范围在2000~2050之间

作业2:将vsftpd服务托管给xinetd服务管理

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
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
log_on_failure += USERID
}

vim /etc/vsftpd/vsftpd.conf

listen=NO 将YES变为NO

基于IP的虚拟主机:
需求:
访问10.1.1.1时,提供匿名用户下载功能,限速500kbps,匿名用户的家目录是/data/anon
访问192.168.0.1时,提供用户user1/123上传下载文件功能,并且可以删除、修改、创建、只能在自己的家里活动

思路:
1、需要两个ip地址
2、根据需求去创建各自的配置文件
3、重启服务测试验证

步骤:
1、配置ip地址
eth0 10.1.1.1
eth0:1 192.168.0.1

2、创建各自的配置文件
1> vim vsftpd1.conf
anon_max_rate=512000
anon_root=/data/anon
listen_address=10.1.1.1

2> vim vsftpd2.conf
chroot_local_user=YES
listen_address=192.168.0.1

3、重启服务测试验证

基于端口的虚拟主机:
需求:
访问10.1.1.1的21端口时,提供匿名用户上传下载功能,并且最大连接数20,每个ip最大连接数为2
访问10.1.1.1的10021端口时,提供用户user1/123上传下载功能,默认数据目录为/data,并且最大登录失败次数为2

思路:
1、根据需求去创建各自的配置文件
2、重启服务测试验证

步骤:
1、环境还原
2、
anon_upload_enable=YES
max_clients=20
max_per_ip=2
listen_port=21

local_root=/data
max_login_fails=2
listen_port=10021

虚拟用户:
1006 vim logins.txt
1007 ll
1008 db_load -T -t hash -f logins.txt /etc/vsftpd/login.db
1009 ll
1010 chmod 600 /etc/vsftpd/login.db
1011 ll
1012 ll /etc/pam.d/vsftpd
1013 mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
1014 vim /etc/pam.d/vsftpd
1015 useradd -d /home/ftpsite virtual
1016 ls -ld /home/ftpsite
1017 cp /etc/hosts /home/ftpsite
1018 ll /home/ftpsite/
1019 chown virtual.virtual /home/ftpsite/hosts
1020 ll /home/ftpsite/
1021 vim vsftpd.conf
1022 service vsftpd restart
1023 vim vsftpd.conf
1024 service vsftpd restart
1025 cat vsftpd.conf

思考:怎么样让虚拟用户和本地用户同时使用?
Required:堆栈中的所有 Required 模块必须看作一个成功的结果。如果一个或多个 Required 模块失败,则实现堆栈中的所有 Required 模块,但是将返回第一个错误。

也就意味着,required需要所有内容都满足才行,当我们前两条配置虚拟用户登录验证通过后,继续向下面的配置条目进行验证,验证是否是本地用户时结果 发现不是,又因为,验证本地用户的control_flag(见上网址中解释)也为required,所以这时候,就会返回错误,也即验证不成功。

所以我们不能同时设置虚拟用户和本地用户的control_flag为required。按照上面的网址所说:
Sufficient:如果标记为 sufficient 的模块成功并且先前没有 Required 或 sufficient 模块失败,则忽略堆栈中的所有其余模块并返回成功。

我们可以把虚拟用户的验证配置放在最前面,且把control_flag设为sufficient。这样的话,如果遇到是虚拟用户,那么可以通过验证,如果是本地用户,忽略掉sufficient的两条配置规则,只要满足required就行,所以也能通过验证。

需求:
1、用户u1可以下载 限速200kbps /home/ftpsite/u1
2、用户u2可以上传 限速500kbps /home/ftpsite/u2
3、用户u3超级vip 不限速 可以上传下载 /home/ftpsite

思路:
1、创建相应的虚拟用户
2、根据需求创建不同的配置文件
3、测试验证

u1:
local_root=/home/ftpsite/u1
anon_max_rate=200000

u2:
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
local_root=/home/ftpsite/u2
anon_max_rate=500000

u3:

anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值