设为首页 收藏本站
查看: 1502|回复: 0

[经验分享] vsftpd+TLS+MySQL

[复制链接]

尚未签到

发表于 2018-10-3 09:39:55 | 显示全部楼层 |阅读模式
  操作环境(虚拟机):
  
rhel5.8(光盘源),  IP: 192.168.88.131
  
vsftpd-2.0.5-24.el5  (yum安装)
  
openssl-0.9.8e-22.el5  (yum安装)
  
db4-utils-4.3.29-10.el5_5.2  (yum安装,{可选,待笔者操作时解})
  
MySQL5.5.28.tar.gz  (源码编译安装)
  
pam_mysql-0.7RC1.tar.gz  (源码安装,必须项)
  
setenforce 0  (selinux对vsftpd的管制很严格,本文暂不细说selinux.临时关闭之)
  物理机(Win7 IP: 192.168.88.1),
  
测试软件: FlashFXP(windows软件...笔者就不细说了)
  一.  安装vsftpd.及配置文件一些注释
  
  
1.1 基本功能实现
  


  • yum install vsftpd –y
  • service vsftpd restart
  

  
  
1.2 简单配置解说:
  

  


  • grep –v ‘^#’ /etc/vsftpd/vsftpd.conf   #过滤vsftpd.conf的有效行
  • anonymous_enable=YES #允许匿名用户
  • local_enable=YES #允许系统有效用户登陆
  • write_enable=YES #允许用户写权限,全局
  • local_umask=022 #本地用户上传文件时的umask值
  • anon_upload_enable=YES #允许匿名用户上传
  • anon_mkdir_write_enable=YES #允许匿名用户创建目录
  • dirmessage_enable=YES   #登录时显示相关目录中,message_file文件的内容,自行创建
  • xferlog_enable=YES  #开启日志记录,默认日志文件/var/log/vsftpd.log
  • connect_from_port_20=YES #数据传输端口(vsftpd命令端口为21,此为数据传输端口.)
  • xferlog_std_format=YES  #使用标准日志记录格式
  • listen=YES #开启服务器后为监听状态(这不废话吗...)
  • chroot_local_user=YES  #开启此行,表示所有用户都限制在家目录
  • chroot_list_enable=YES  #控制用户锁定在家目录(同上行配可实现仅允许,仅限制)
  • chroot_list_file=/etc/vsftpd/chroot_list #上一行的控制用户写在此文件
  • pam_service_name=vsftpd #pam模块文件位置.(/etc/pam.d/vsftpd)
  • userlist_enable=YES  #写在/etc/vsftpd/user_list中的用户禁止登陆
  • tcp_wrappers=YES  #支持tcp_wrappers(就是/etc/hosts.{deny,allow} 的访问控制支持)
  

  1.3 不安全的vsftpd测试
  


  • useradd mos1  #创建一个普通测试用户(名: mos1 密码: redhat)
  • echo “redhat” |passwd –stdin mos1
  • tcpdump -i eth1 -nn -X tcp port 21 and host 192.168.88.131
  

  #使用抓包工具,抓取知道网卡IP的指定协议的指定端口数据:
  
使用物理机登陆ftp时,抓到如下图:
  

DSC0000.jpg

  二.   实现加密的ftp
  (PS:请先执行 ldd `which vsftpd`|grep libssl  保证有字符出现!若没有,安装openssl-0.9.8e-22.el5后在检查,这个必须有.)
  2.1 创建私有CA及其私有证书签发:
  

  证书的过程,笔者之前写过,不再罗嗦,超级传送门如下:

openssl个人笔记
  
  2.2 在配置文件vsftpd.conf中添加对tls的支持
  

  


  • ssl_enable=YES #支持加密的ftp
  • allow_anon_ssl=NO   #匿名用户不使用加密连接
  • force_local_data_ssl=YES  #强制所有本地用户数据加密传输
  • force_local_logins_ssl=YES  #强制本地用户登陆时账号和密码加密传输
  • ssl_tlsv1=YES  #支持tlsv1版本
  • ssl_sslv2=NO  #不支持sslv2版本
  • ssl_sslv3=NO   #不支持sslv3版本
  • rsa_cert_file=/etc/vsfpd/ssl/vsftpd.crt  #CA签署csr后的证书,用于传递给客户端
  • rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key   #私钥文件
  

  2.3 重启vsftpd服务,在物理机做测试即可,若出现下图,则OK.
DSC0001.jpg

DSC0002.jpg

  '
DSC0003.jpg

  三.  vsftpd, tls和MySQL整合.
  3.1 创建一个普通用户(用于做虚拟用户映射,指定特定目录,给shell为/sbin/nologin即可)
  

  


  • mkdir –pv /var/testuser

    • useradd -s /sbin/nologin -d /var/testuser guest

  • chown -R guest. /var/testuser
  

  
  
3.2 先做一个简单的不通过mysql认证的测试,不做可直接跳过3.2所有操作.
  
    3.2.1 安装文件数据库生成工具,并生成数据库文件
  


  • yum install db4-utils –y
  • echo -e 'demo1\n123\ndemo2\n456' > /etc/vsftpd/ulist.txt #数据库模板,奇数行用户名,偶数行密码
  • db_load -T -t hash -f /etc/vsftpd/ulist.txt /etc/vsftpd/ulist.db #生成数据库文件
  

  
  
    3.2.2 修改配置pam认证文件(里面的文件不用指定扩展名).
  


  • vim /etc/pam.d/vsftpd
  • #%PAM-1.0
  • auth required pam_userdb.so db=/etc/vsftpd/ulist
  • account required pam_userdb.so db=/etc/vsftpd/ulist
  

  
  
    3.2.3 修改vsftpd.conf支持虚拟用户
  


  • vim /etc/vsftpd/vsftpd.conf #追加如下两行
  • guest_enable=YES
  • guest_username=guest
  

  
     Ps:   重启服务,使用用户demo1,密码123 和用户demo2,密码456 登陆测试即可
  
  
3.3 使用基于MySQL的认证
  

  3.3.1 安装MySQL
  
   这里笔者偷个懒.笔者的里面第一个就是mysql的编译安装,而且笔者测试时也是使用的这个MySQL,因此,笔者便不再罗嗦啦,超级传送门如下:

LAMPX-AMPX编译安装篇:
  3.3.2 在MySQL中创建虚拟用户的数据
  

  


  • mysql>create database vsftpd;
  • mysql>GRANT SELECT ON vsftpd.* TO 'ftpuser'@'localhost' IDENTIFIED BY '123';
  • mysql>use vsftpd;
  • mysql>CREATE TABLE vusers (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(30) NOT NULL, Password CHAR(48) NOT NULL);
  • mysql>INSERT INTO vusers (Name,Password) VALUES ('demo1',password('123')),('demo2',password('123'));
  • mysq>FLUSH PRIVILEGES;
  • mysql>\q
  

  Ps:对上面几条数据库命令做个注释,按顺序:
  创建名为 vsftpd 的数据库
  创建一个用户ftpuser,允许其通过localhost使用123密码访问
  创建一个名字为vusers的表,id为主键,自增,不得为空,其后是Name和密码,都不得为空
  插入俩数据(测试用户),分别是demo1和demo2,密码123加密存放.
  刷新权限
  退出mysql
  3.3.3编译生成pam_mysql.so模块.
  
    (Ps: 笔者不推荐使用yum安装MySQL,笔者肯定不会说在其它虚拟机测试时使用yum安装的mysql,编译这个模块一直失败的......笑话,这种事儿能说吗.)
  


  • mkdir –pv /root/work
  • wget http://down1.chinaunix.net/distfiles/pam_mysql-0.7RC1.tar.gz
  • tar xf pam_mysql-0.7RC1.tar.gz
  • cd pam_mysql-0.7RC1
  • ./configure –with-mysql=/usr/local/mysql
  • make && make install #编译后请确认/lib/security/pam_mysql.so这个文件存在.
  

  
  

  
3.3.4 编辑pam认证文件
  

  


  • vim /etc/pam.d/vsftpd
  • auth required pam_mysql.so user=ftpuser passwd=123 host=localhost db=vsftpd table=vusers usercolumn=Name passwdcolumn=Password crypt=2
  • account required pam_mysql.so user=ftpuser passwd=123 host=localhost db=vsftpd table=vusers usercolumn=Name passwdcolumn=Password crypt=2
  

  Ps: 这两行中前面都好说,末尾的crypt加个注释:
  crypt=0: 明文密码
  
crypt=1: 使用crpyt()函数(对应SQL数据里的encrypt(),encrypt()随机产生salt)
  
crypt=2: 使用MYSQL中的password()函数加密 libmysqlclient_r.so.18.0.0



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-608527-1-1.html 上篇帖子: mysql 中uuid的问题 下篇帖子: mysql 修复表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表