Windows下使用iis创建一个只写的ftp服务

这几天自己在折腾文件传输这方面的事情,因为安全性等原因,我希望创建一个只能写入,但是不能下载,不能修改现有目录结构的ftp,并且因为环境原因,需要在被动模式下,并且穿越内网。听说Linux下的vsftp很厉害,很安全,奈何本人没文化,试了七八次,没一回能够在被动模式下穿越内网成功连接,各种ftp连接错误让我崩溃。最后选择了iis,也许是因为我熟悉Windows吧。(就是没技术)

正文

win+X 然后按G键进入计算机管理控制台中,为ftp创建一个专用账户ftpuser(请不要直接使用ftp为账户名,ftp是保留字,创建之后会发生难以预料的结果,反正我用ftp创建之后直接不能访问ftp服务),密码自己设置,并将其隶属于users用户组(一般来说这里新建的用户都是隶属于users用户)。

Windows下使用iis创建一个只写的ftp服务Windows下使用iis创建一个只写的ftp服务Windows下使用iis创建一个只写的ftp服务

 

 然后打开“本地安全策略”。在本地策略→用户权限分配下面将ftpuser这个账户添加到这几个策略中:拒绝本地登录,拒绝通过远程桌面服务登录,拒绝以服务身份登录,拒绝作为批处理作业登录。不要配置拒绝从网络访问这台计算机这个策略哈,ftp就是从网络访问这台计算机。在Windows中,拒绝策略大于一切。

 Windows下使用iis创建一个只写的ftp服务Windows下使用iis创建一个只写的ftp服务

 

这里说一下,你也许没必要做这一步 ,我这个是为了安全考虑,ftp我没有配置ssl,账号密码是明文传输的。配置这些策略之后,就算你知道我的账户和密码,也不能登录到我的主机上做操作。并且该账户隶属于users组,本身权限就比较低。

这一步配置完成之后就可以配置ftp服务了。

进入iis,新建一个ftp站点,在ftp身份验证那儿我没有开启匿名访问,ftp授权规则那儿我只配置了ftpuser账号可读可写(可读是必须的在这里并不能配置账户只写)。

Windows下使用iis创建一个只写的ftp服务Windows下使用iis创建一个只写的ftp服务Windows下使用iis创建一个只写的ftp服务

 

 接下来就是最重要的,实现我需求的步骤了:FTP请求筛选

进入之后,选择命令选项卡。在右边选择添加拒绝命令,然后将下面这几条命令添加上去(顺序无影响):

RMD(Remove Directory,删除目录)命令
RNFR(Rename From,把…重命名)命令
RNTO(Rename TO,重命名为)命令
DELE(Delete,删除)命令
RETR是FTP协议中的下载命令

get和mget也是要添加上去的啦。但是我是被动模式,cmd的ftp好像是不支持这个模式的,我测试了一下,总是在150代码那儿停止了。至于使用Linux命令行来访问,我也测试了一下,会提示“这是Windows 的ftp”然后就断开连接了。至于其他的协议命令,是用来对付ftp通用客户端的。这些客户端一般都使用ftp协议命令来控制传输读写操作。

但是我还是加上去了,鬼知道有啥奇巧淫技呢。

Windows下使用iis创建一个只写的ftp服务Windows下使用iis创建一个只写的ftp服务Windows下使用iis创建一个只写的ftp服务Windows下使用iis创建一个只写的ftp服务

 

 到这里,大部分的操作都配置完成了,剩下的就是iis的被动模式配置了,这个比较简单,就不多说了。可以自行百度,记得配置防火墙规则就是,防火墙还是不要随便就关闭了。

 这是我尝试删除ftp上的文件的操作被拒绝的截图:

Windows下使用iis创建一个只写的ftp服务

另外就是要说的是,在防火墙上面要允许system32文件夹下的ftp.exe程序通过防火墙。不然可能会链接不上。

Windows下使用iis创建一个只写的ftp服务

Windows下使用iis创建一个只写的ftp服务

上一篇:.net webapi swagger读取不同项目实体模型的注释


下一篇:用pid 取主窗口 hwnd