Linux下使用vsftp搭建ftp服务器
Linux下FTP Server评估(vsftpd、pure-ftpd、proftpd)
PureAdmin 0.3 (PHP) PureFtp 后台管理工具
http://www1.yiyou.org/60PureAdmin_03_php.html
1.安装vsftp,yum install vsftpd,我用的是ubuntu,直接apt-get就完了
2.配置vsftpd.conf, vim /etc/vsftpd.conf
下面说说里面比较重要的选项
1 anonymous_enable=NO #不允许匿名用户 2 3 local_enable=YES #允许使用本地用户账号登陆 4 5 write_enable=YES #允许ftp用户写数据 6 7 connect_from_port_20=YES #通过20端口传输数据 8 9 chroot_local_user=YES #将用户锁定在自己的主目录,如 /home/ftpuser,这样ftpuser这个用户就不能访问除此目录之外的目录 10 11 chroot_list_enable=YES #启用不锁定用户在主目录的名单 12 13 chroot_list_file=/etc/vsftpd.chroot_list #当 chroot_list_enable 启用时,此列表生效,列表中的用户将不受锁定限制,格式为一行一个用户名
3.创建用户组合用户
1 groupadd ftpgroup 2 3 useradd ftpuser -g ftpgroup -d /home/XOX/ftproot -M #创建一个group为ftpgroup,-d 为指定home目录,-M为系统不创建home目录,ftp用户一般是指定一个文件目录为主目录,不会像普通系统用户那样指定/home/xxx为home目录,所以这个目录之前一般是存在的 4 5 usermod -s /sbin/nologin ftpuser #将ftpuser设为不可作为普通用户登录
4.启动vsftp
1 /etc/init.d/vsftpd start
5.使用客户端(filezilla、flashfxp等)或者直接在浏览器上输入你的ftp服务器ip,登录即可使用
后记
6.安全
1. 什么是PASV模式和PORT模式?
ftp port模式(主动模式)
主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口(即tcp 21端口)。紧接着客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。最后服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1),这样客户端就可以和ftp服务器建立数据传输通 道了。
ftp pasv模式(被动模式)
在被动方式FTP中,命令连接和数据连接都由客户端。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
ftp port模式只要开启服务器的21和20端口,而ftp pasv需要开启服务器大于1024所有tcp端口和21端口。重网络安全的角度来看的话似乎ftp port模式更安全,而ftp pasv更不安全,那么为什么RFC要在ftp port基础再制定一个ftp pasv模式呢?其实RFC制定ftp pasv模式的主要目的是为了数据传输安全角度出发的,因为ftp port使用固定20端口进行传输数据,那么作为黑客很容使用sniffer等探嗅器抓取ftp数据,这样一来通过ftp port模式传输数据很容易被黑客窃取,因此使用pasv方式来架设ftp server是最安全绝佳方案。
结论:如果只是简单的为了文件共享,完全可以禁用pasv模式,解除开放大量端口的威胁,同时也为防火墙的设置带来便利。
2. vsftpd如何设置pasv模式?
pasv_enable=yes (Default: YES ) 设置是否允许pasv模式
pasv_promiscuous=no (Default: NO ) 是否屏蔽对pasv进行安全检查,(当有安全隧道时可禁用)
pasv_max_port=10240 (Default: 0 (use any port) ) pasv使用的最大端口
pasv_min_port=1024 (Default: 0 (use any port) ) pasv使用的最小端口
pasv_address (Default: (none - the address is taken from the incoming connected socket) ) pasv模式中服务器传回的ip地址
几点疑问:
我在centos 6.7版本上yum安装的vsftpd ,版本是2.2.2-14
这个版本似乎默认就是pasv模式? 理由:如果不在配置文件中显性指定pasv_enable=no,那么客户端在默认为port连接模式的情况下,首先尝试port模式连接,会提示失败,然后会自动改为pasv模式连接却能成功,我的测试情况是,port模式没连成功过,都是pasv模式,而且防火墙只需要做一个端口的nat,并不像本文档上面所说的,用pasv模式的时候,服务器会产生随机端口来传输数据,造成不好配防火墙,以我的测试来看,这种做数据传输的随机端口不需要做防火墙nat也能成功,所以,不管vsftp 2.2.2这个版本支不支持port模式,主要pasv模式能更简单配置起来就可以了,安全性还更高。
我的配置文件
cat /etc/vsftpd/vsftpd.conf |grep -v ^#
anonymous_enable=NO
local_enable=YES
write_enable=YES
file_open_mode=0777 #这两项决定上传的文件权限
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
listen_port=2222
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
reverse_lookup_enable=NO
#pasv_enable=YES————————若设置为YES使用PASV模式,设置为NO使用PORT模式
参数说明:
anonymous_enable=NO————————是否允许匿名登录
local_enable=YES————————设定本地用户是否可以登录(主要针对虚拟用户)
write_enable=YES————————设定是否可以进行写操作
local_umask=022————————设定上传后文件的权限掩码
dirmessage_enable=YES——————设定开启目录标语功能
connect_from_port_20=YES————————设定端口20进行数据连接
xferlog_file=/var/log/vsftpd.log——————————设定端口使用标准的记录格式
xferlog_enable=YES————————设定开启日志记录功能
log_ftp_protocol=YES——————————是否将所有FTP请求和相应记录到日志中。启动此项时xferlog_std_format不能被启动。
ascii_upload_enable=YES——————————设定支持ASCII模式的上传功能
ascii_download_enable=YES——————————设定支持ASCII模式的下载功能
listen=YES————————设定该vsftpd服务在STANDALONE模式下工作
pam_service_name=vsftpd——————设定PAM服务下Vsftpd的验证配置文件名
tcp_wrappers=YES————————设定支持TCP Wrappers.
chroot_list_enable=NO——————————是否设定chroot_list_file配置制定的用户列表文件。
chroot_local_user=NO——————————用于指定用户列表文件中的用户是否允许切换到上级目录.
pasv_enable=YES————————若设置为YES使用PASV模式,设置为NO使用PORT模式
浙公网安备 33010602011771号