科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道安全管理实例剖析开源系统中vsftpd的安全设置方法(二)

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍了如何安全配置vsftpd,从而限制恶意占有带宽的用户并防止FTP密码被恶意嗅探。

来源:TechTarget中国 2011年12月15日

关键字: VSFTPd

  • 评论
  • 分享微博
  • 分享邮件

  在《实例剖析开源系统中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

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章