简易vsftp搭建

一直以来都想总结一下关于vsftp搭建ftp的相关内容,今天历尽辛苦终于算是完成了一些基本的配置,在此记下以留作以后参考。 首先,讨论一下ftp协议的主动模式和被动模式: 下面的内容主要参考一篇洋文: 主动模式: 1)客户端随即开启一个大于1024的端口连接服务器端的21号端口建立连接1,连接成功就可以下达命令。 2)当需要传送数据时,客户端通过连接1告诉服务器,客户端在端口N上监听。 3)服务器通过20号端口与端口N连接建立连接2。 4)客户端与服务器用这两个连接传送命令和数据。 被动模式: 1)客户端随即开启一个大于1024的端口连接服务器端的21号端口建立连接1,连接成功就可以下达命令。 2)当需要传送数据时,客户端通过连接1告诉服务器要通过被动模式建立连接2。 3)服务器启动特定范围内的一个端口S监听并告知客户端。 4)客户端通过大于1024的随进端口,连接服务器的端口S,从而建立连接2。 5)客户端与服务器用这两个连接传送命令和数据。 为什么有主动没动模式之分? 问题的关键就在防火墙上,防火墙一般是阻止外部端口主动连接的。所以可以看出主动模式基本上都被客户端的防火墙做掉了,而被动连接会被服务器的防火墙解决 掉(如果不采取措施)。但是在服务器上下手总比在客户端上下手合理,它本来就是为客户端服务的嘛。所以就采用被动模式,服务器端的解决办法,就是让防火墙 允许连接向特定端口的数据包通过。 接下来把重点放在vsftp上,我这里搭建的一个很小的环境内的ftp服务器,只有基础设置的一些特别需要注意的地方,更为复杂的设置暂时用不到也就不去学习了,学以致用嘛。 组件安装? (1)安装:#sudo apt-get install vsftpd (2)软件主要组成:/etc/vsftpd.conf /usr/sbin/vsftpd   /etc/pam.d/vsftpd   /etc/init.d/vsftpd start|stop|restart|reload} 匿名登录,支持下载上传的配置文件? anonymous\_enable=YES write\_enable=YES anon\_umask=022 anon\_upload\_enable=YES anon\_mkdir\_write\_enable=YES anon\_other\_write\_enable=YES dirmessage\_enable=YES xferlog\_enable=YES connect\_from\_port\_20=YES xferlog\_std\_format=YES listen=YES pam\_service\_name=vsftpd userlist\_enable=YES tcp\_wrappers=YES 关于目录权限? 默认vsftpd是不允许根目录有写的权限的,所以要自己建立一个对ftp(匿名用户的权限用户)有写的权限的目录。如下所示: drwxr-xr-x 2 ftp ftp 4096 Apr 11 11:26 pub-writable 注意:关于配置匿名上传和下载的几个注意点:1)ftp的匿名用户在linux系统内是ftp用户;2)匿名用户的默认umask是077,这说明 如果你要上传一个目录上去,连你自己都看不到你自己上传的东西,所以必须将它改成022;3)selinux策略也会影响到匿名用户的上传功能(/etc/selinux/config中把enforcing修改成disabled)。总之,权 限方面的设置是一个很关键的问题,包括selinux规则,系统用户权限和vsftpd配置,必须仔细考虑才能成功。 本地用户登录配置文件? local\_enable=YES write\_enable=YES local\_umask=022 dirmessage\_enable=YES xferlog\_enable=YES connect\_from\_port\_20=YES xferlog\_std\_format=YES chroot\_local\_user=YES   //限制本地用户根目录 local\_root=/var/ftp/pub    //限制本地用户根目录到特定目录 chroot\_list\_enable=YES chroot\_list\_file=/etc/vsftpd/chroot\_list   //这两项设置不再限制范围内的用户 listen=YES pam\_service\_name=vsftpd userlist\_enable=YES tcp\_wrappers=YES 注意:本地用户需要设置的很少,为了安全需要把本地用户限制在其家里或者特定目录下,chroot\_list\_enable,local\_root,chroot\_list\_enable三个设置项相当重要。 Selinux的权限设置 发现vsftpd和系统权限设置均没有问题,但是无法列举目录下的内容,google了一下有了思路,selinux的默认权限不允许ftp传输,这里直接修改/etc/selinux/config文件内容如下: SELINUX=disabled 参考文档: (很全面)
Show Comments