实例剖析开源系统中vsftpd的安全设置方法(二)

日期: 2011-12-14 作者:羽扇纶巾 来源:TechTarget中国

在《实例剖析开源系统中vsftpd的安全设置方法(一)》中,我们介绍到了用户访问权限管理中的使用nologin禁止FTP帐户登录Linux服务器,下面我们继续介绍如何安全配置开源系统中vsftpd。   3)使用chroot控制用户访问权限   假设FTP用户根目录在/ftproot/game,那我们就要在配置文件中添加local_root=/ftproot/game。然后激活chroot,编辑添加chroot_list_enable=YES,把允许访问FTP的用户加到/etc/vsftpd/chroot_list这个文件中去,即:chroot_list_file=/etc/vsftpd/ch……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

《实例剖析开源系统中vsftpd的安全设置方法(一)》中,我们介绍到了用户访问权限管理中的使用nologin禁止FTP帐户登录Linux服务器,下面我们继续介绍如何安全配置开源系统中vsftpd。

  3)使用chroot控制用户访问权限

  假设FTP用户根目录在/ftproot/game,那我们就要在配置文件中添加local_root=/ftproot/game。然后激活chroot,编辑添加chroot_list_enable=YES,把允许访问FTP的用户加到/etc/vsftpd/chroot_list这个文件中去,即:chroot_list_file=/etc/vsftpd/chroot_list。修改后的配置文件如图4:

使用chroot控制用户访问权限
图4

  值得注意的是:这里所介绍的/etc/vsftpd/chroot_list文件系统默认是没有的,需要手工创建,命令如下:

  #touch /etc/vsftpd/chroot_list
  #echo xiaowang > /etc/vsftpd/chroot_list
  #echo xiaowang1 >> /etc/vsftpd/chroot_list

  上述命令添加了两个用户,分别是xiaowang和xiaowang1。重新启动vsftpd服务即可。

  这个时候再从客户端来访问一下FTP服务器,发现需要输入用户名密码。如图5:

从客户端访问FTP服务器
图5

  下面进一步使用WinSCP这个传输工具来看看上传下载的情况如何。如图6:

使用WinSCP传输工具看上传下载情况
图6

  可以看到,本地的文件都传输到服务器上去了。如图7:

上传下载结果显示
图7

  以上需要说明一点的是:必须先确定FTP根目录没有权限问题,否则将会出现如下问题(见图8)。如果出现该问题,可以使用chmod 757 /ftproot/game这个命令来设定权限。

FTP根目录出现问题
图8

  (2)如何限制恶意占有带宽的用户

  如果所在公司或单位服务器性能够强,带宽够多,带宽限制这方面的需求可能不是特别地突出。然而,如果下载量特别大,人也特别多,就有必要进行一下安全的设置。

  在vsftp中,匿名用户和本地用户的速度限制是分开的。前者是anon_max_rate,后者是local_max_rate。 它们的单位都是byte(字节)。

  如果让匿名用户和本地的用户都以最高100KB的速度下载,所以这个数字应该是1024x100=102400。在vsftpd.conf文件末尾中加入下面的两行即可:

  anon_max_rate=102400
  local_max_rate=102400

  然后重启vsftpd服务即可。

  另外,还可以限制FTP的最大连接数和每个IP的最大连接数。这两个参数分别是Max_clients和Max_per_ip。和上面一样,也只需要在vsftpd.conf文件末尾添加参数即可,如下设成了最大连接数100,每个IP的最大连接数5个:

  max_clients=100
  max_per_ip=5

  (3)如何防止FTP密码被恶意嗅探

  由于vsftpd发送的数据是以明文方式传输,尤其是密码容易被恶意的嗅探(Sniffering)到,所以企业通常会采用SSL(Secure Sockets Layer,安全套接字层)技术,配置使得vsftpd支持SSL加密传输,以此来抵御恶意嗅探攻击。

  SSL是一种国际标准的加密及身份认证通信协议,用户采用的浏览器就支持此协议。SSL最初是由美国Netscape公司研究出来的,后来成为了Internet网上安全通讯与交易的标准。比如,当IE浏览器需要通过不可靠的互联网,与服务器安全地连接时,我们通常可以看到SSL技术被使用于其中。同样,这类技术也可以灵活地运用到邮件服务或FTP服务中去。SSL协议使用通讯双方的客户证书以及CA根证书,允许客户/服务器应用以一种不能被偷听的方式通讯,在通讯双方间建立起了一条安全的、可信任的通讯通道。它具备以下基本特征:信息保密性、信息完整性、相互鉴定。该协议主要使用Hash编码、加密技术。

  使用SSL技术,依赖于另外一个软件:OpenSSL,它是一个可以自由使用的SSL实现,首先需要安装这个软件。用户可以从网站http://www.openssl.org/source/上下载Linux下OpenSSL的稳定版本,比如:openssl-0.9.8e-7.el5.i686.rpm,然后执行命令生成密钥:

  # openssl req –new –x509 –nodes –out vsftpd.pem –keyout vsftpd.pem

  接着,把生成的vsftpd.pem复制到/usr/share/ssl/certs的目录中:

  #cp vsftpd.pem /usr/share/ssl/certs/vsftpd.pem

  然后,修改/etc/vsftpd/vsftpd.conf文件。在末尾添加SSL相关配置。如图9:

添加SSL相关配置 
图9

  保存后重启vsftpd服务。下面就可以用客户端来尝试进行SSL加密连接了。这里使用的客户端是Core FTP,选择SSL加密登录后,会出现如下提示,如图10:

客户端尝试进行SSL加密连接
图10

  选择Accept之后我们即可登入远程的ftp服务器。如图11:

登入远程的ftp服务器
图11

  若使用不支持SSL的客户端工具访问时有可能会出现:530 Non-anonymous sessions must use encryption.的错误提示。所以提醒用户尽量选择flashfxp或CoreFtp这类的多功能客户端。

  到这里为止,采用SSL机制保护下的vsftpd就算配置完成了。其中DES-CBC3-SHA是默认的加密方式,用户可以修改“ssl_ciphers=xxx”的方式来选择想要的加密方式。关于vsftpd对SSL的支持选项设置,可以参见表1。

主要选项

功能

ssl_enable       

是否启用 SSL,默认为no

allow_anon_ssl   

是否允许匿名用户使用SSL,默认为no

rsa_cert_file     

rsa证书的位置

dsa_cert_file    

dsa证书的位置

force_local_logins_ssl

非匿名用户登陆时是否加密,默认为yes

force_local_data_ssl   

非匿名用户传输数据时是否加密,默认为yes

force_anon_logins_ssl  

匿名用户登录时是否加密,默认为no

force_anon_data_ssl    

匿名用户数据传输时是否加密,默认为no

ssl_sslv2             

是否激活sslv2加密,默认no

ssl_sslv3              

是否激活sslv3加密,默认no

ssl_tlsv1            

是否激活tls v1加密,默认yes

ssl_ciphers           

默认是DES-CBC3-SHA

表1

作者

羽扇纶巾
羽扇纶巾

自由撰稿人。

相关推荐