通常我们需要更安全的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) |