vsftpd
主动模式 由服务器创建连接
命令
Client <PORT> ---> Server 21/tcp
数据
Server 20/tcp ---> Client <PORT> + 1
被动模式 由客户端发起连接
命令
Client <PORT> ---> Server 21/tcp
数据
Client <PORT> + 1 ---> Server <random PORT>
ftp服务器软件
Server
wu-ftpd
proftpd
pureftp
vsftpd
ServU
File Zilla Server
Client
ftp
lftp lftpget
wget
curl
filezilla
gftp
flashfxp
cuteftp
响应吗
1XX 信息
2XX 成功
3XX 提示命令未完整
4XX 客户端错误
5XX 服务端错误
用户认证
虚拟用户
仅用于访问某特定服务中的资源
nsswitch 名称解析框架
配置文件 /etc/nsswitch.conf
模块 /lib64/libnss*, /usr/lib64/libnss*
pam 用户认证框架
配置文件 /etc/pam.conf, /etc/pam.d/*
模块 /lib64/security/
系统用户
/etc/passwd
匿名用户
anonymous
软件包文件
用户认证配置文件
/etc/pam.d/vsftpd
服务脚本
/etc/rc.d/init.d/vsftpd
主配置文件
/etc/vsftpd/vsftpd.conf
用户权限控制
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
主应用程序
/usr/sbin/vsftpd
匿名用户资源路径
/var/ftp
# vsftpd不允许更改此目录权限
系统用户资源路径
~/
虚拟用户资源路径
指定映射某个系统用户的家目录
vsftpd配置文件解析
# man vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
# 是否启动匿名用户
anonymous_enable=YES
# 默认不允许匿名用户上传
#anon_upload_enable=YES
# 默认不允许匿名用户创建文件、文件夹
#anon_mkdir_write_enable=YES
# 默认不允许匿名用户删除文件、文件夹
#anon_other_write_enable=YES
# 是否允许系统用户
local_enable=YES
# 默认允许本地用户拥有写权限
write_enable=YES
# 本地用户上传文件的默认权限
local_umask=022
# 默认不限制本地用户只能在家目录活动
#chroot_local_user=YES
# 默认不限制本地用户列表中的所有用户只能在家目录活动
#chroot_list_enable=YES
# 指定本地用户列表路径
#chroot_list_file=/etc/vsftpd/chroot_list
# 默认开启用户进入目录下会发出提示信息
# 在指定目录下编辑 .message,将指定信息分行填入
dirmessage_enable=YES
# 默认打开FTP上传下载日志记录
xferlog_enable=YES
# 传输日志是否开启默认记录格式
xferlog_std_format=YES
# 默认日志文件路径
#xferlog_file=/var/log/xferlog
# 是否更改用户上传文件后的属主属组
#chown_uploads=YES
#chown_username=whoever
# 定义空闲回话超时时长
#idle_session_timeout=600
# 定义数据连接超时时长
#data_connection_timeout=120
# 是否更改默认上传下载以二进制传输
#ascii_upload_enable=YES
#ascii_download_enable=YES
# 是否开启ftp登录欢迎信息
#ftpd_banner=Welcome to blah FTP service.
# pam用户认证使用哪个文件名
# 默认/etc/pam.d/目录下
pam_service_name=vsftpd
# auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
# 是否启用用户登录列表文件
userlist_enable=YES
# YES代表黑名单、NO代表白名单
userlist_deny=YES|NO
# 最大并发连接数
max_clients xxx
# 每个IP可同时发起的并发请求数
max_per_ip x.x.x.x
# 匿名用户的最大传输速率,Byte/s
anon_max_rate
# 本地用户的最大传输速率
local_max_rate
# 虚拟用户会映射为指定的系统账号,目录为系统账号家目录
# 虚拟用户能定义不同的访问权限
# 通过匿名用户的权限控制参数进行指定
# 虚拟用户账号的存储方式
# 文件
# 奇数行为用户名
# 偶数行为密码
# 需要被编译成二进制文件
# 关系型数据库表
# 查找数据库完成用户认证
# 如果使用mysql,则依赖于pam-mysql模块,需要自己编译安装
# yum install pam_mysql
# 如下文配置
ftp服务器 + pam_mysql 模块做用户认证
FTP服务器和mysql服务器不在一个节点上
ftp 192.168.180.128
mysql 192.168.180.130
1. 准备数据库及相关表
create database vsftpd;
grant select on vsftpd.* to vsftpd@192.168.180.128 identified by '123456';
flush privileges;
use vsftpd;
create table users (
-> id int AUTO_INCREMENT NOT NULL;
-> name char(20) binary NOT NULL;
-> password char(64) binary NOT NULL;
-> primary key(id)
-> );
2. 添加测试的虚拟用户
# 密码为了安全,使用password函数加密后存储
insert into users(name, password) values('tom', password('123456'));
insert into users(name, password) values('bob', password('123456'));
3. 配置vsftpd
# 建立pam认证所需文件
vim /etc/pam.d/vsftpd.mysql
auth requried /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=192.168.130 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
account requried /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=192.168.130 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
# 修改vsftpd的配置文件,使其适应mysql认证
# 建立虚拟用户映射的系统用户对应的目录
useradd -s /sbin/nologin -d /var/ftproot vuser
chmod go+rx /var/ftproot
# 修改vsftpd配置文件参数
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.mysql
4. 启动vsftpd服务
service vsftpd start
chkconfig vsftpd on
5. 验证
ftp 127.0.0.1
6. 配置虚拟用户具有不同的访问权限
vim vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_config
mkdir /etc/vsftpd/vusers_config
cd /etc/vsftpd/vusers_config
touch tom bob
vim tom
# 默认不允许匿名用户上传
anon_upload_enable={YES|NO}
# 默认不允许匿名用户创建文件、文件夹
anon_mkdir_write_enable={YES|NO}
# 默认不允许匿名用户删除文件、文件夹
anon_other_write_enable={YES|NO}
axel工具使用
axel是通过打开多个 HTTP/FTP 连接来将一个文件进行分段下载,从而达到加速下载的目的的软件
下载源码包编译安装
tar xvzf axel-2.4.tar.gz
cd axel-2.4
./configure --strip=0
make
make install
cp axel /bin
简单使用
1 axel -n 3 -o /root <OBJ_URL>
安全ftp服务器(密文传输)(未完待续)
ftps SSL
sftp SSH