许多INTERNET爱好者最先接触的东西就是FTP,它带来的文件共享的便利(可以跨平台访问等),但是明文传输的ftp的安全性,成为一个很大的问题。本文主要从基本安全,tcp-wrapper,ftps,虚拟用户四个方面来聊聊ftp的安全性。
1、基本安全 a、限制匿名用户使用指定邮箱作为密码: #vim /etc/vsftpd/vsftpd.conf deny_email_enable=YES # (default follows) banned_email_file=/etc/vsftpd/banned_emails #vim /etc/vsftpd/banned_emails a@qq.com
b、限制本地用户登录后,切换目录 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list #vim /etc/vsftpd/chroot/_list 编辑文件,将user1加入其中 user1
3.禁止本地某些用户登录: #vim /etc/vsftpd/vsftpd.conf userlist_enable=YES (默认值) 将用户加入/etc/vsftpd/ftpusers或/etc/vsftpd/user_list文件中,user_list的安全性更高些,
2、tcp-wrapper a.先聊聊 TCP Wrapper 是什么:
一般在操作系统层面上安装防火墙来处理网络连接,然而虽然防火墙有非常广泛的用途,但他却不是万能的,例如它无法处理类似的向连接发起者发送一些文本这样的任务。 b. TCP Wrapper 系统概述
从上图可以看出tcp wrapper 在系统中的层级结构和应用程序的关系.
从上图可以清楚的看出 /etc/hosts.allow 和 /etc/hosts.deny 配置文件规则关系 #yum install vsftpd 默认配置文件tcp_wrappers=YES, 要查看vsftp是否支持tcp_wrapper, #ldd $(which vsftpd) linux-gate.so.1 => (0x009e8000) libssl.so.6 => /lib/libssl.so.6 (0x00b44000) libwrap.so.0 => /lib/libwrap.so.0 (0x00ce2000) libnsl.so.1 => /lib/libnsl.so.1 (0x00c98000) libpam.so.0 => /lib/libpam.so.0 (0x00110000) libcap.so.1 => /lib/libcap.so.1 (0x007c6000 ........ 是支持tcp_wrapper的, vim /etc/hosts.allow vsftpd:192.168.2.0/255.255.255.0:allow (允许192.168.2.0网段的访问) vim /etc/hosta.deny vsftpd:all:deny (禁止其他网段其用户访问) [root@mail ~]# ftp 192.168.2.1 Connected to 192.168.2.1. 220 (vsFTPd 2.0.5) 530 Please login with USER and PASS. 530 Please login with USER and PASS. KERBEROS_V4 rejected as an authentication type Name (192.168.2.1:root): [root@mail ~]# ftp 127.0.0.1 Connected to 127.0.0.1. 421 Service not available. ftp>
3、ftps配置 ftp-server 192.168.2.1 ftp-client 192.168.2.100 CA服务器配置 #vim /etc/pki/tls/openssl.cnf 43 [ CA_default ] 44 45 dir = /etc//pki/CA #CA自定义路径 87 [ policy_match ] 88 countryName = optional 89 stateOrProvinceName = optional 90 organizationName = optional 根据配置文件创建相关的目录与文件,并且私钥为cakey.pem,根证书为cacer.pem #cd /etc/pki/CA #mkdir crl certs newcerts #touch index.txt serial #echo "01">serial #openssl genrsa 1024 >private/cakey.pem #chmod 600 private/* openssl req -new -key private/cakey.pem -x509 -out cacer.pem ftp-server产生私钥,及证书: mkdir -pv /etc/vsftpd/certs openssl genrsa 1024 > vsftpd.key openssl req -new -key vsftpd.key -out vsftpd.csr openssl ca -in vsftpd.csr -out vsftpd.cert 编辑vsftp的配置文件 #vim /etc/vsftpd/vsftpd.conf force_local_data_ssl=YES #指定vsftpd强制非匿名用户使用加密的数据传输 force_local_logins_ssl=YES #指定vsftpd强制非匿名用户使用加密登录 ssl_enable=YES #指定vsftpd支持加密协议 ssl_sslv2=YES #指定vsftpd支持安全套接字层v2 ssl_sslv3=YES #指定vsftpd支持安全套接字层v3 ssl_tlsv1=YES #指定vsftpd支持tls加密方式v1 rsa_cert_file=/etc/vsftpd/certs/vsftpd.cert #指定ftp-server的证书路径 rsa_private_key_file=/etc/vsftpd/.sslkey/vsftpd.key #指定ftp-server的私路径 # service vsftpd restart #重启vsftp服务 是针对本地用户使用ftps,无法使用浏览器或命令行来实现访问了,需要使用标准的客户端软件,如:flashfxp
通过抓包,密文传输:
4、虚拟用户
通过本地数据文件实现虚拟用户访问,首先需要建立一个文件,将所有用户和密码保存到该文件中,这种方法主要适用于用户比较少及变化不频繁的情况下, 1)需要安装生成数据库的软件包db4-utils; yum install db4-utils; 2)生成虚拟用户文件,在该文件中用户及密码各一行。本章中是建立/etc/vsftpd/ftpuser.txt test1 #虚拟用户1 123 #虚拟用户1密码 test2 #虚拟用户2 456 #虚拟用户2密码 3)生成虚拟用户数据文件,处于安全考虑应修改生成的用户数据文件权限: #db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/ftpuser.db #chmod 600 /etc/vsftpd/ftpuser.db 4)修改PAM认证文件/etc/pam.d/vsftpd,将原有内容注释并加入以下内容,通过以下两行的配置可以将认证用户及用户其他 检查的工作的数据来源改变为本地数据文件(/etc/vsftpd/ftpuser.db) 需要使用模块/lib/security/pam_userdb.so 查看该模块的手册: #vim /usr/share/doc/pam-0.99.6.2/txts/README.pam_userdb,用法如下图例子:
#vim /etc/pam.d/vsftpd auth required /lib/security/pam_userdb.so db=/etc/vsftpd/ftpuser account required /lib/security/pam_userdb.so db=/etc/vsftpd/ftpuser
5)使用如下命令创建本地映射用户: #useradd -d -s /sbin/nologin redhat 6)修改/etc/vsftpd/vstpd.conf文件,内容如下:(查看man手册,man 5 vsftpd.conf) #vim /etc/vsftpd/vsftpd.conf guest_enable=YES #允许虚拟用户 guest_username=redhat #将虚拟用户映射为本地的reahat用户 pam_service_name=vsftpd #pam认证文件(默认就是vsftpd) 7)重启vsftpd,登录测试,
8)修改redhat家目录权限,#vim /etc/vsftpd/vsftpd.conf chmod o+r redhat
#vim /etc/vsftpd/vsftpd.conf anon_upload_enable=YES (开启匿名上传,) anon_umask=073 (并设定上传文件的权限值为704,允许其他用户可以下载)
#vim /etc/vsftpd/vsftpd.conf anon_other_write_enable=yes (就可以重命名,删除等操作了)
9)测试成功,虚拟用户登录的均是ftp服务器上的同一个目录,即建立的本地映射用户vuser的家目录。 实验结束.
本文出自 “刘园的博客” 博客,请务必保留此出处http://liuyuan51.blog.51cto.com/5971950/1092639 |