当前位置: > Linux服务器 > ftp >

如何配置vsftpd的ssl与ssh的sftp

时间:2019-04-27 15:33来源:linux.it.net.cn 作者:IT
通常我们需要更安全的ftp传输,我们有两种方式来确保ftp的安全传输,一个是ssl(tls)方式,一个是sftp方式。他们的主要区别就是ssl是对传输的数据进行安全打包,sftp是为数据建立一个安全的通道进行传输。

一、配置vsftpd的ssl

配置ssl方式的ftp比较简单,前提是我们已经配置好普通的ftp环境,这里拿vsftpd来进行说明。

首先,

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/ssl/vsftpd.pem -out /etc/vsftpd/ssl/vsftpd.pem
输入证书信息生成证书

开启ssl,配置/etc/vsftpd/vsftpd.conf,加入如下信息

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=NO

#以上两项若设置为YES,普通的ftp将被禁止,只能通过ssl进行
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem
ssl_tlsv1=YES
ssl_sslv2=YES

重启vsftpd即完成配置,然后以TLS/SSL方式登录ftp就可以了。

二、配置sftp

若不需要对权限进行配置,默认ssh已开启sftp,所以我们以root用户登录sftp就可以满足所需了。但若是对外提供sftp接口,那么就有必要对登录权限等做一下配置了。由于‍系统openssh是4.3版本的,openssh 4.8才开始提供ChrootDirectory的配置,所以我先对openssh 进行升级。虽然可以用rssh,Jailkit等来代替,但是弄了很久没成功就放弃了。建议还是升级openssh。

由于重装openssh可能导致一些现有应用出现问题,于是做如下无痛升级,适用于RHEL 4.x / 5.x   以及 CentOS 4.x / 5.x.

  wget http://openbsd.md5.com.ar/pub/OpenBSD/OpenSSH/portable/openssh-5.4p1.tar.gz
  tar zvxf openssh-5.4p1.tar.gz
  cd openssh-5.4p1
执行openssl version -a ,获取到openssl的路径OPENSSLDIR,我这里为"/etc/pki/tls",赋值给下行命令的--with-ssl-dir

  ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/etc/pki/tls --with-zlib --with-pam --with-md5-passwords --with-kerberos5
  make
  make install
  ssh -V 查看是否是最新的OpenSSH_5.4p1
  /etc/init.d/sshd restart

  我们再配置/etc/ssh/sshd_config文件

末尾部分改成:
  #Subsystem      sftp    /usr/libexec/openssh/sftp-server
  Subsystem  sftp internal-sftp
  Match group sftp
  X11Forwarding no
  ChrootDirectory /var/ftp/user001
  AllowTcpForwarding no
  ForceCommand internal-sftp

其中Match group sftp指定用户组。

然后执行如下命令,

  groupadd sftp
  useradd -g sftp -s /sbin/nologin -d / vsftpuser

  passwd vsftpuser
  <--输入密码-->
  service sshd restart
上面的-d / 为指定相对目录,这里直接指定为Chroot的根目录
值得注意的是ChrootDirectory为进入的根目录且其属主必须是root账户
   chown root.root /var/ftp/user001
   ll /var/ftp
   drwxr-xr-x 6 root root 4096 Mar 17 17:40 user001
目录权限为drwxr-xr-x(不能给同组其他用户分配权限即drwxrwxr-x,否则将会失败)
  由于/var/ftp/user001是root所拥有,vsftpuser对该目录的操作将受到限制,比较傻瓜化的解决方法可以在/var/ftp/user001目录里面建立新的目录分配权限给vsftpuser(望高人指点)
mkdir /var/ftp/user001/home
  chown vsftpuser.sftp /var/ftp/user001/home

  这样我们就可用加了限制的sftp登录了
sftp vsftpuser@serverip   (责任编辑:IT)
------分隔线----------------------------