在linux服务器上搭建相对安全的FTP服务器
一、如何在Linux服务器上安装vsftp不在多说,直接介绍如何进行安全性配置;
二、编辑vsftp.conf文件
关键配置项如下:
anonymous_enable=NO /禁止匿名用户登录
local_enable=YES /允许本地用户登录
write_enable=YES /允许登陆后写
local_umask=022
xferlog_enable=YES /记录日志
xferlog_file=/var/log/xfer log /日志文件
userlist_enable=YES /限制userlist里面的本地用户不能访问,userlist里面可以把root等禁止ftp登录的本地账号写进去
所有配置项的注释可参考:
http://blog.csdn.net/chenhongqian/article/details/50462382
三、创建FTP账号
# useradd –d /home/myftp myftp
# passwd myftp
# usermod -s /sbin/nologin myftp //限定用户myftp不能本地登录
四、创建一个文件夹(scripts)只能下载,不能上传
# mkdir scripts /home/myftp
#chmod 555 scripts
五、创建一个文件夹(results)只能上传,不能下载和删除
这个有点难度,因为用户不能对自己上传的文件进行下载和删除,需要使用特殊的方法。
# mkdir results /home/myftp
#chmod 755 results
#chattr +i /home/results
六、配置SSL加密
1、通过rpm -qa | openssl 查看是否已安装openssl,未安装请先安装
2、新建目录,为了放置证书,有可能certs文件夹已经存在,但要确认已存在的文件夹是否仅是个链接。
- mkdir -p /etc/ssl/certs
- chmod 700 /etc/ssl/certs
3、执行生成证书的命令:
- openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/certs/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem
4、上述证书生成过程中需要填写信息,按提示添加国家、省份、邮箱等即可,可以随便填,信息后续用不到;
5、然后进到/etc/ssl/certs目录下看证书有没有生成
6、然后我们修改vsftpd的配置文件在最后添加如下信息
- # Turn on SSL
- ssl_enable=YES
- # Allow anonymous users to use secured SSL connections
- allow_anon_ssl=YES
- # All non-anonymous logins are forced to use a secure SSL connection in order to
- # send and receive data on data connections.
- force_local_data_ssl=YES
- force_anon_data_ssl=YES
- # All non-anonymous logins are forced to use a secure SSL connection in order to send the password.
- force_local_logins_ssl=YES
- force_anon_logins_ssl=YES
- # Permit TLS v1 protocol connections. TLS v1 connections are preferred
- ssl_tlsv1=YES
- # Permit SSL v2 protocol connections. TLS v1 connections are preferred
- ssl_sslv2=NO
- # permit SSL v3 protocol connections. TLS v1 connections are preferred
- ssl_sslv3=NO
- # Disable SSL session reuse (required by WinSCP)
- require_ssl_reuse=NO
- # Select which SSL ciphers vsftpd will allow for encrypted SSL connections (required by FileZilla)
- ssl_ciphers=HIGH
- # This option specifies the location of the RSA certificate to use for SSL
- # encrypted connections.
- rsa_cert_file=/etc/ssl/cert/vsftpd.pem
7、配置修改完成后,重新vsftpd服务。
备注:如服务启动失败,请确认证书存储的位置与下面填写的是否符合 sa_cert_file=/etc/ssl/cert/vsftpd.pem
8、登陆查看是否已加密
状态:
正在连接 172.20.100.XX:21...
状态: 连接建立,等待欢迎消息...
状态: 初始化 TLS 中...
状态: 正在验证证书...
状态: TLS 连接已建立。
状态: 已登录
状态: 读取目录列表...
备注:需要使用工具链接,如FileZilla等,直接通过浏览器可能无法正常登陆。