1、系统环境和所需软件包
Redhat Enterprise-5.8、vsftpd、mysql、pam-mysql-0.7RC1
①、vsftpd安装
②、vsftpd配置文件的介绍
③、vsftpd服务器的基本实现和一般控制设置
④、虚拟用户vsftpd服务器的搭建、测试等
3、FTP服务器介绍
FTP服务器的连接分为两种:
控制连接:客户端向服务器端请求连接,而且一旦建立就不在断开,等到人为断开的时候此连接才会释放,此连接是
利用tcp的21 端口
数据连接:客户端和服务器之间进行数据传输的连接,是一种按需连接,一旦数据传输介绍,此连接就会断开,
此连接利用一种随机的端口。
FTP服务器常用的命令
get:下载文件
mget:下载多个文件
put:上传文件
mput:上传多个文件
lcd:切换本地目录
cd、ls等等众多的命令。
4、FTP服务器的安装
在红帽上面利用红帽自身的rpm包安装即可实现一个简单的ftp服务器架设
yum install vsftpd
anonymous_enable=YES//是否开启匿名用户访问
anonymous_enable=YES//是否开启本地用户既系统用户访问
write_enable=YES//是否开启本地用户的写权限:上传文件的权限
local_umask=022//系统用户上传文件时候的umask默认值
anon_upload_enable=YES//是否开启虚拟用户上传文件的权限
anon_mkdir_write_enable=YES//是否开启虚拟用户新建文件件的权限
chown_uploads=YES//是否开启上传文件的属主修改
chown_username=whoever//上传文件后所属主
xferlog_file=/var/log/xferlog
xferlog_std_format=YES//日志记录,需要开启上面两项才可以生效
idle_session_timeout=600//连接超时时间
data_connection_timeout=120//数据传输超时时间
ascii_upload_enable=YES
ascii_download_enable=YES//是否开启ascii码的上传、下载
chroot_list_enable=YES//是否锁定用户登录后的目录,配置文件在/etc/vsftpd/chroot_list,
表内定义了锁定的用户列表
chroot_list_file=/etc/vsftpd/chroot_list //用户登录以后把用户锁在那个目录下的定义
listen=YES//设置ftp服务是否为独立进程
pam_service_name=vsftpd//pam认证服务名称
userlist_enable=YES// 用户列表限定
用法(定义黑白名单)
定义黑名单:userlist_enable=YES、userlist_deny=YES
定义白名单:userlist_enable=YES、userlist_deny=NO
max_clients= // 单个IP最多发起几个请求的
max_per_ip=//最多允许几个IP链接FTP服务器
另外的两个vsftpd的配置文件:
/etc/vsftpd/ftpusers————内规定的用户都禁止登陆ftp服务
/etc/vsftpd/user_list———–规定了不能登陆ftp服务器的用户
5、设置环境实现测试:
测试之前需要保证本机的SElinux是关闭的,否则会造成失败的!
setenforce 0 立即关闭 SElinux
vim /etc/selinux/config 永久关闭 SElinux
新建两个用户:chris和chrislee,然后把chris锁定在家目录内。修改vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
新建chroot_list
vim /etc/vsftpd/chroot_list
增加chris
然后重启服务器
service vsftpd restart
②、为vsftp服务进行CA认证
mkdir /etc/vsftpd/ssl
cd /etc/vsftpd/ssl
生成私钥和认证的公钥
(umask 077;openssl genrsa -out vsftpd.key 2048);
openssl req -new -key vsftpd.key -out vsftpd.csr
签署证书
openssl ca -in vsftpd.csr -out vsftpd.crt
③、然后ftp配置使用加密的认证方式
vim /etc/vsftpd/vsftpd.conf
ssl_enable=YES//开启ssl功能
ssl_tlsv1=YES//开启支持tlsv1
ssl_sslv2=YES
ssl_sslv3=YES
allow_anon_ssl=NO//是否开启匿名用户利用ssl
force_local_data_ssl=YES//开启系统用户数据传输利用ssl
force_local_logins_ssl=YES//开启系统用户登录利用ssl
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt //指定证书位置
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key //指定私钥位置
④重启服务、验证
yum -y install mysql-server mysql-devel //安装数据库服务器软件和devel,devel包是为了后面编译pam的时候必须的软件包。不安装的话就无法实现其功能了。
启动mysql服务器,然后测试,保证mysql服务器运行正常,service mysqld start,mysql连接进入查看,如下图
授权定义
GRANT SELECT ON vsftpd.* to vsftpd@localhost identified by ‘work’;
GRANT SELECT ON vsftpd.* to vsftpd@127.0.0.1 identified by ‘work’;
⑤、配置vsftpd
建立pam认证所需的文件
vi /etc/pam.d/vsftpd.mysql–这个文件默认是不存在的,需要新建
添加如下两行
auth required /lib/security/pam_mysql.so user=vsftpdpasswd=workhost=localhostdb=vsftpd
table=usersusercolumn=namepasswdcolumn=passwordcrypt=0
account required /lib/security/pam_mysql.so user=vsftpdpasswd=workhost=localhost
db=vsftpdtable=usersusercolumn=namepasswdcolumn=passwordcrypt=0
建立虚拟用户映射的系统用户及对应的目录
#useradd -s /sbin/nologin -d /var/ftproot vuser //新建虚拟用户
#chmod go+rx /var/ftproot //为其他用户增加读和执行权限。
请确保/etc/vsftpd.conf中已经启用了以下选项
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选项的值如下所示
pam_service_name=vsftpd.mysql
然后配置完后重启服务器
备注:
配置vsftpd.conf为虚拟用户的默认权限为匿名用户的权限,若想单独定义每个用户的权限,则可以利用
# vim vsftpd.conf
添加如下选项
user_config_dir=/etc/vsftpd/vusers_dir
然后创建所需要目录,并为虚拟用户提供配置文件
mkdir /etc/vsftpd/vusers_dir/
cd /etc/vsftpd/vusers_dir/
touch chris
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,
可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。
fg:vim chris增加配置
anon_upload_enable=YES//是否开启数据上传
从而可以实现单独用户的权限控制,
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!