CentOS配置FTP服务器
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