对于FTP服务,他很特别:它属于复合FTP服务一方面它开放TCP的21端口作为数据控制,用来键入命令
另一方面它开放TCP的20号端口作为数据传输用来上传或是下载数据
FTP的主动传输模式与被动传输模式的区别
在主动模式下,客户端会用一个大于1024的端口与服务器的21号端口发起控制连接,并打开端口N+1,同时像服务器发出port=N+1的命令,服务器收到后,与客户端的N+1端口建立连接(用本地的20端口)此时服务器主动连接客户端 此时注意防火墙是否允许主动连接
在被动模式下,客户机会用一个大于1024的端口与服务器的21号端口发起控制连接,然后客户端用自己的一个大于1024的端口与服务器上大于1024的端口建立数据连接,然后服务器会回应数据
都是客户端始作俑者 而主动被动全部针对服务器在客户端建立控制连接后所采取的态度来确定
试验步骤
1注意到此时是禁止匿名上传的,我们把注释删除,此时即可通过匿名用户上传
同时注意在上传时候/var/ftp/pub是不可写的我们必须为其增加w权限
2我们再ftp下/root下创建文件ftp.txt,用作试验的文件
2
其中lcd是切换本地的路径,而cd是切换登录到ftp后的路径
小细节:需要为/root目录增加other的x权限否则是无法成功切换目录的
3我们同时注意到刚上传完的文件属性
4也就是说除了ftp用户,其他所有用户对其既不能读,也不能修改包括其本组用户 ---change it !
在主配置文件中并为找到关于匿名用户的umask设置,不过发现了local用户的umask设置,
补上对于匿名用户的umask,并尝试对其验证,删除原有文件后,重新上传以做对比
OK
5那么我们如何通过配置来增强其安全性呢?
1我们可以为用户设置笼环境让其困在宿主目录中
6再上去登陆一下看有神马效果呢
我们用本地用户试一下
无法切换目录并且显示为当前目录为/
7然而,如上所述,笼环境的设置,还需要另外一个参数
以上,意思就是如果chroot_list启用,那么里面存放的就是那些无需被限制为笼环境的用户,
8与此同时,我们还可以通过ftpusers来限制用户即:将用户加入黑白名单来限制用户进行ftp登陆
a 将kk用户加入ftpusers 事实上这个ftpusers黑名单的功能是怎么实现的呢
安装好vsftpd之后,我们打开pam文件即 vim /etc/pam.d/vsftpd
意思就是我会参考ftpusers这个文件中的item user【针对user的,实际上也可以针对组】 如果满足我就sense deny ,如果遇到错误即用户名不存在那么就认为onerr(success)认为它成功 <<---实际上它是黑名单
可以看到,有些用户天生就无法访问ftp ,比如说root。。大概是权力太大了吧?将kk加入上面之后,重新登陆,它仅仅提示loginincorrect
如上是一种启用黑名单的方式
那么还有一种稍微复杂一点的
在userlist_enable=YES的基础上若userlist_deny=YES为黑名单 反之
打开 /etc/user_list说的非常清楚
9OK kk直接被拒绝比在ftpuser还快些,用户名一输完就over了
同时ftp还可以控制并发连接数,控制上传与下载速度
比如说我将 max_per_ip设置为2(控制它的并发连接数)
OK
注意事项 为了图方便曾把/var/ftp更改为777的权限 结果出现了 vsftpd:refusing to run writable
annonymous root /var/ftp规定不允许没有限制
ftp binary【二进制包模式】/ascall(两种方式)