vsftpd(ftp)服务详解,案例讲解,参数说明

 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


测试验证



人生是条无名的河,是浅是深都要过; 人生是杯无色的茶,是苦是甜都要喝; 人生是首无畏的歌,是高是低都要唱。