文章目录
  1. 1. Linux下的Vsftpd配置篇

Linux下的Vsftpd配置篇

linux vsftpd

Linux下的Vsftpd配置篇

2010-10-12 22:59:02

1.         主动与被动模式
1)         主动模式(PORT方式)
连接过程为:客户端向服务器FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:我打开了XX端口,你过来连接我,于是服务器从20号端口向客户端的XX端口发送连接请求,建立一条数据链路来传送数据。
2)         被动模式(PASV方式)
连接过程为:客户端向服务器FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:我打开了XX端口,你过来连接我,于是客户端向服务器的XX端口发送连接请求,建立一条数据链路来传送数据。
2.         安装
1)         查看是否安装
打开命令行,输入rpm -q vsftpd,出现:
Ø 已经安装
-68.jpg

Ø 还没安装
-69.jpg

2)         安装
Ø 载入光盘
-70.jpg

Ø 设置光盘
-71.jpg

单击虚拟机右下角的光盘图标,选择Settings,在Device status中将Connected勾选,在Connection中选择Use ISO image file,然后单击Browse选择Linux的安装包,单击OK
Ø 安装
-72.jpg

安装完成
3.         文件结构与配置文件
1)         文件结构
|配置文件名
|功能
|
|———-|—-|

|/usr/sbin/vsftpd
|vsftpd的主程序
|
|—————-|————–|

|/etc/rc.d/init.d/vsftpd
|启动脚本
|
|———————–|——–|

|/etc/vsftpd/vsftpd.conf
|主配置文件
|
|———————–|———-|

|/etc/pam.d/vsftpd
|PAM认证文件
|
|—————–|———–|

|/etc/vsftpd.ftpusers
|禁止使用vsftpd的用户列表文件
|
|——————–|—————————-|

|/etc/vsftpd.user_list
|禁止或允许使用vsftpd的用户列表文件
|
|———————|———————————-|

|/var/ftp
|匿名用户主目录
|
|——–|————–|

|/var/ftp/pub
|匿名用户的下载目录
|
|————|——————|

|/etc/logrotate.d/vsftpd.log
|vsftpd的日志文件
|
|—————————|—————-|

2)         配置文件
Ø 查看
-73.jpg

 

-74.jpg

以#号开头的为注释,这里把非配置参数注释都去掉了
Ø 参数含义
|参数
|含义
|
|—-|—-|

|anonymous_enable=YES
|是否允许使用匿名账户
|
|——————–|——————–|

|local_enable=YES
|是否允许本地用户登录
|
|—————-|——————–|

|write_enable=YES
|是否允许写入
|
|—————-|————|

|local_umask=022
|本地umask值为022
|
|—————|—————-|

|#anon_upload_enable=YES
|匿名用户是否可上传文件
|
|———————–|———————-|

|#anon_mkdir_write_enable=YES
|匿名用户是否可建立目录
|
|—————————-|———————-|

|dirmessage_enable=YES
|进入每个目录显示欢迎信息,在每个目录下建立.message文件在里面写欢迎信息
|
|———————|———————————————————————-|

|xferlog_enable=YES
|上传/下载文件时记录日志
|
|——————|———————–|

|connect_from_port_20=YES
|是否使用20端口传输数据(是否使用主动模式)
|
|————————|—————————————-|

|#chown_uploads=YES
|修改匿名用户上传的文件,文件的拥有者
|
|——————|————————————|

|#chown_username=whoever
|
|———————–|

|#xferlog_file=/var/log/xferlog
|日志文件
|
|——————————|——–|

|xferlog_std_format=YES
|使用标准文件日志
|
|———————-|—————-|

|#idle_session_timeout=600
|会话超时,客户端连接到ftp但未操作
|
|————————-|———————————|

|#data_connection_timeout=120
|数据传输超时
|
|—————————-|————|

|#nopriv_user=ftpsecure
|指定vsftpd服务的运行帐户,不指定时使用ftp
|
|———————-|—————————————–|

|#async_abor_enable=YES
|是否允许客户端使用sync等命令
|
|———————-|—————————-|

|#ascii_upload_enable=YES
|是否允许上传/下载二进制文件
|
|————————|—————————|

|#ascii_download_enable=YES
|
|————————–|

|#ftpd_banner=Welcome to blah FTP service.
|登录提示语
|
|—————————————–|———-|

|#deny_email_enable=YES
|拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登录的匿名用户。即,当匿名用户使用banned_email_file文件中所列出的e-mail进行登录时,被拒绝。
|
|———————-|——————————————————————————————————————————————————–|

|#banned_email_file=/etc/vsftpd/banned_emails
|
|——————————————–|

|#chroot_list_enable=YES
|锁定登陆用户在其主目录,将用户名一个一行写在/etc/vsftpd/chroot_list文件里,使用此方法时必须chroot_local_user=YES
|
|———————–|—————————————————————————————————————-|

|#chroot_list_file=/etc/vsftpd/chroot_list
|
|—————————————–|

|#ls_recurse_enable=YES
|是否允许使用ls -R等命令
|
|———————-|———————–|

|listen=YES
|开启ipv4监听
|
|———-|————|

|#listen_ipv6=YES
|开启ipv6监听
|
|—————-|————|

|pam_service_name=vsftpd
|使用pam模块控制,vsftpd文件在/etc/pam.d目录下
|
|———————–|———————————————|

|userlist_enable=YES
|与其他中userlist_deny=YES共同控制访问用户,详见userlist_deny=YES参数含义
|
|——————-|————————————————————————|

|tcp_wrappers=YES
|是否允许tcp_wrappers管理
|
|—————-|————————|

|其他
|
|—-|

|listen_address=ip address
|指定侦听IP
|
|————————-|———-|

|listen_port=port_value
|指定侦听端口,默认21
|
|———————-|——————–|

|chroot_local_user=YES
|限制所有的本地用户在自家目录
|
|———————|—————————-|

|userlist_deny=YES
|决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable选项启动后才生效。YES为默认值,禁止文件中的用户登录,同时也不向这些用户发出输入密码的提示。NO表示只允许在文件中的用户登录FTP服务器
|
|—————–|————————————————————————————————————————————————————————————————————————-|

|local_root=/home/ftp
|所有用户的根目录,对匿名用户无效
|
|——————–|——————————–|

|anon_max_rate=value
|匿名用户的最大传输速度,单位是Byts/s
|
|——————-|————————————|

|local_max_rate=value
|本地用户的最大传输速度,单位是Byts/s
|
|——————–|————————————|

|download_enable=YES
|是否允许下载
|
|——————-|————|

3)         连接信息
|代码
|含义
|代码
|含义
|
|—-|—-|—-|—-|

|110
|重新启动标记应答
|120
|服务在多久时间内ready
|
|—|—————-|—|———————|

|125
|数据链路埠开启,准备传送
|150
|文件状态正常,开启数据连接端口
|
|—|————————|—|——————————|

|200
|命令执行成功
|202
|命令执行失败
|
|—|————|—|————|

|211
|系统状态或是系统求助响应
|212
|目录的状态
|
|—|————————|—|———-|

|213
|文件的状态
|214
|求助的信息
|
|—|———-|—|———-|

|215
|名称系统类型
|220
|新的联机服务ready
|
|—|————|—|—————–|

|221
|服务的控制连接埠关闭,可以注销
|225
|数据连结开启,但无传输动作
|
|—|——————————|—|————————–|

|226
|关闭数据连接端口,请求的文件操作成功
|227
|进入passive mode
|
|—|————————————|—|—————-|

|230
|使用者登录
|250
|请求的文件操作完成
|
|—|———-|—|——————|

|257
|显示目前的路径名称
|331
|用户名称正确,需要密码
|
|—|——————|—|———————-|

|332
|登入时需要账号信息
|350
|请求的操作需要进一部的命令
|
|—|——————|—|————————–|

|421
|无法提供服务,关闭控制连结
|425
|无法开启数据链路
|
|—|————————–|—|—————-|

|426
|关闭联机,终止传输
|450
|请求的操作未执行
|
|—|——————|—|—————-|

|451
|命令终止:有本地的错误
|452
|未执行命令:磁盘空间不足
|
|—|———————-|—|————————|

|500
|格式错误,无法识别命令
|501
|参数语法错误
|
|—|———————-|—|————|

|502
|命令执行失败
|503
|命令顺序错误
|
|—|————|—|————|

|504
|命令所接的参数不正确
|530
|未登录
|
|—|——————–|—|——|

|532
|储存文件需要账户登录
|550
|未执行请求的操作
|
|—|——————–|—|—————-|

|551
|请求的命令终止,类型未知
|552
|请求的文件终止,储存位溢出
|
|—|————————|—|————————–|

|553
|未执行请求的的命令,名称不正确
| 
| 
|
|—|——————————|-|-|

4.         配置
1)         匿名用户登录FTP
Ø 配置
-75.jpg

安装完成后,service vsftpd start启动服务
Ø 测试
-76.jpg

在XP下连接FTP,可以看到登陆成功,用户名为ftp,即为匿名用户,anonymous也为匿名用户,vsFTP默认的配置匿名用户就可登录
2)         实名用户登录FTP
Ø 配置
-77.jpg

mkdir -p /var/ftp/pub/zwb:建立用户登录根目录
useradd -G ftp -d /var/ftp/pub/zwb -M zwb:建立实名用户
passwd zwb:设置实名用户登录密码
Ø 测试
-78.jpg

3)         只允许匿名登录,不允许实名登录
Ø 配置
l 修改配置文件
-79.jpg

 

-80.jpg

将local_enable=YES改为NO,保存退出
l 重启服务
-81.jpg

Ø 测试
-82.jpg

4)         不允许匿名登录,只允许实名登录
Ø 配置
l 修改配置文件
-83.jpg

 

-84.jpg

将local_enable=NO改为YES,anonymous_enable=YES改为NO,退出保存
l 重启服务
-85.jpg

Ø 测试
-86.jpg

5)         黑、白名单
Ø 黑名单
l 配置
u 修改配置文件
-87.jpg

 

-88.jpg

anonymous_enable=NO改为anonymous_enable=YES,还原初始配置
u 添加黑名单
-89.jpg

将zwb用户追加进黑名单
l 测试
-90.jpg

zwb用户登录失败
Ø 白名单
l 配置
u 还原设置
-91.jpg

 

-92.jpg

将上面追加进黑名单的用户zwb移除并保存退出
u 设置白名单
-93.jpg

 

-94.jpg

添加userlist_deny=NO与userlist_file=/etc/vsftpd/user_list这2行
u 添加白名单
 -95.jpg

除user_list里的用户外,都不可登陆
u 重启服务
-96.jpg

l 测试
-97.jpg

6)         限制客户数
Ø 配置
l 还原设置
u 还原白名单
-98.jpg

 

-99.jpg

将上面追加进黑名单的用户zwb移除并保存退出
u 还原配置文件
-100.jpg

 

-101.jpg

去掉userlist_deny=NO与userlist_file=/etc/vsftpd/user_list
l 修改配置文件
-102.jpg

 

-103.jpg

添加max_clients=1,指明最大客户连接数量为1
l 重启服务
-104.jpg

Ø 测试
-105.jpg

ftp用户登录成功,不要退出,再次开启一个命令行
-106.jpg

在才开启的命令行上连接FTP,错误代码421,提示There are too many connected users,please try later(有太多的用户连接,稍后再试),使用zwb用户登录Connection closed by remote host(远程主机连接关闭)
7)         速率限制
Ø 匿名用户与实名用户速率限制
l 配置
u 还原设置
-107.jpg

 

-108.jpg

去掉max_clients=1
u 修改配置文件
-109.jpg

 

-110.jpg

单位为bytes,local_max_rate表示实名用户的下载速度,anon_max_rate表示匿名用户的下载速度
u 重启服务
-111.jpg

l 测试
u 创建测试文件
-112.jpg

dd if=/dev/zero of=get_test bs=126k count=1创建一个大小为126k的文件,用0填满,作为测试文件,实际创建了一个129k的文件
u 测试
-113.jpg

zwb用户用时为0.77Seconds,速率为168.44Kbytes/sec。ftp用户用时为6.20Seconds,速率为20.80Kbytes/sec
Ø 不同实名用户分等级下载限制
l 配置
u 还原设置
-114.jpg

 

-115.jpg

去掉local_max_rate与anon_max_rate

u 添加用户

-116.jpg

建立zzj用户的用户根目录,添加zzj用户,设置zzj用户密码
u 修改配置文件
-117.jpg

 

-118.jpg

添加user_config_dir=/etc/vsftpd,设置用户配置目录
u 添加用户配置文件
n 为zwb用户添加配置文件
-119.jpg

 

-120.jpg

n 为zzj用户添加配置文件
-121.jpg

 

-122.jpg

u 重启服务
-123.jpg

l 测试
-124.jpg

zwb用户用时为0.78Seconds,速率为165.20Kbytes/sec。zzj用户用时为6.20Seconds,速率为20.80Kbytes/sec
8)         上传
Ø 匿名用户上传
l 配置
u 还原设置
-125.jpg

 

-126.jpg

把user_config_dir=/etc/vsftpd去掉
u 修改配置文件
%!(EXTRA markdown.ResourceType=, string=, string=)

 

%!(EXTRA markdown.ResourceType=, string=, string=)

取消anon_upload_enable=YES与anon_mkdir_write_enable=YES前的注释,添加anon_other_write_enable=YES,表示允许文件改名、删除
u 权限配置
%!(EXTRA markdown.ResourceType=, string=, string=)

chmod -R 777 pub:
将pub目录改为777的权限
chcon -R -t public_content_rw_t pub:
将pub目录的文件类型改为public_content_rw_t
getsebool -a | grep ftp:
查看sebool值中关于ftp的值
setsebool -P allow_ftpd_anon_write on:
修改sebool中allow_ftpd_anon_write的值为on
u 重启服务
%!(EXTRA markdown.ResourceType=, string=, string=)

l 测试
u 创建测试文件
%!(EXTRA markdown.ResourceType=, string=, string=)

u 测试
%!(EXTRA markdown.ResourceType=, string=, string=)

匿名用户需要上传在pub目录下
Ø 实名用户上传
l 配置
u 还原设置
n 还原配置文件
%!(EXTRA markdown.ResourceType=, string=, string=)

%!(EXTRA markdown.ResourceType=, string=, string=)

将anonymous_enable=YES注释
%!(EXTRA markdown.ResourceType=, string=, string=)

将anon_upload_enable=YES与anon_mkdir_write_enable=YES注释
n 还原sebool值
%!(EXTRA markdown.ResourceType=, string=, string=)

u 设置sebool值
%!(EXTRA markdown.ResourceType=, string=, string=)

u 设置用户根目录权限
%!(EXTRA markdown.ResourceType=, string=, string=)

将用户主目录/var/ftp/pub/zwb改成777的权限
u 重启服务
%!(EXTRA markdown.ResourceType=, string=, string=)

l 测试
%!(EXTRA markdown.ResourceType=, string=, string=)

9)         更改默认共享目录
Ø 配置
l 还原设置
%!(EXTRA markdown.ResourceType=, string=, string=)

 

%!(EXTRA markdown.ResourceType=, string=, string=)

l 修改配置文件
%!(EXTRA markdown.ResourceType=, string=, string=)

 

%!(EXTRA markdown.ResourceType=, string=, string=)

l 重启服务
%!(EXTRA markdown.ResourceType=, string=, string=)

l 创建实名用户根目录
%!(EXTRA markdown.ResourceType=, string=, string=)

l 修改目录类型
%!(EXTRA markdown.ResourceType=, string=, string=)

Ø 测试
l 创建文件
%!(EXTRA markdown.ResourceType=, string=, string=)

l 测试
%!(EXTRA markdown.ResourceType=, string=, string=)

实名用户登录后ls可以看到文件A,证明在/home/zwb文件目录下,或者可以使用pwd命令,查看当前所在目录
%!(EXTRA markdown.ResourceType=, string=, string=)

匿名用户ftp登录后,ls可以看到文件B,证明在/home文件目录下

文章目录
  1. 1. Linux下的Vsftpd配置篇