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
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 是什么:
一般在操作系统层面上安装防火墙来处理网络连接,然而虽然防火墙有非常广泛的用途,但他却不是万能的,例如它无法处理类似的向连接发起者发送一些文本这样的任务。
TCP Wrappers扩展了inetd为受其控制的服务程序实施控制的能力,通过使用这种方法,它能够提供日志支持、返回消息给联入的连接、使得服务程序只接受内部连接,等等。
然而,由TCP-Wrappers提供的一些额外的安全功能,不应被视为好的防火墙的替代品,TCP Wrappers 应结合防火墙或其他安全加强设施一并使用,为系统多提供一层安全防护。
b. TCP Wrapper 系统概述
从上图可以看出tcp wrapper 在系统中的层级结构和应用程序的关系.
注意 : Netfilter(iptable) 是工作在网络层的 而 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的家目录。
实验结束.