Centos vsftpd安全性设置,centosvsftpd安全性本文主要从基本安全,


许多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是什么:

一般在操作系统层面上安装防火墙来处理网络连接,然而虽然防火墙有非常广泛的用途,但他却不是万能的,例如它无法处理类似的向连接发起者发送一些文本这样的任务。


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 ~]# ftp192.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 -invsftpd.csr -outvsftpd.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

相关内容

    暂无相关文章