实现更加安全的文件传输服务
2020-06-20河南许红军
■ 河南 许红军
限制登录次数
在Windows Server 2012中打开管理工具窗口,然后双击Internet Information Service(IIS)管理器,在IIS管理器窗口左侧选择服务器名,在窗口中部的“FTP”栏中双击“FTP登录尝试限制”项,在弹出界面中勾选“启用FTP登录尝试限制”项,在“最大登录尝试失败次数”栏中设置登录失败上限值,默认为4次。在“时间段”栏中设置判断周期,单位为秒,默认为30秒。选择“基于登录尝试失败次数拒绝IP地址”项,在右侧的操作栏中点击“应用”链接,激活该功能。
这样,当在连续的时间段中登录尝试的测试失败的次数超过预设值,FTP服务器就会拒绝来其登录企图。如果选择“仅写入日志”项,则仅仅将黑客的可疑登录行为写入到FTP日志文件中,而不会对其非法连接进行限制。
为了提高灵活性,可以将该功能和系统的密码策略配合起来使用。点击“Windows+R”键,执行“gpedit.msc”程序,在组策略窗口左侧依次选择“计算机配置→Windows设置→安全设置→账户策略→密码策略”项,在其中可以设置很多和密码的相关安全规则。例如设置密码的复杂度、长度最小值、最长最短使用期限及强制密码历史等。
利用筛选功能,限制客户端行为
出于安全性的考虑,FTP管理员希望对用户的操作进行合理的限制。例如,禁止其浏览、上传、下载具有潜在风险的文件,禁止其执行文件删除等危险的命令的。这就可以利用FTP请求筛选功能来实现。
在IIS管理器中选择服务器名(或者选择具体的FTP主机名),在窗口中部的“FTP”栏中双击“FTP请求筛选”项,在弹出界面的“文件扩展名”面板的右键菜单中点击“拒绝文件扩展名”项,在打开的编辑栏中输入需要限制文件扩展名。例如,“.exe”等,点击“确定”按钮,将其添加到文件扩展名列表中。
这样,当客户端使用CuteFTP等工具连接到本FTP服务器上后,就无法显示FTP存储目录中所有的EXE文件。当用户试图上传EXE文件时,FTP服务器会对其进行拦截。
按照同样的方法,可以添加任意文件类型,拒绝客户端对其进行浏览、上传下载等操作。
在FTP目录中,往往存在很多文件和目录,当管理员不希望客户端查看某些文件,进出某些目录时,可以对其进行限制。
在“隐藏段”面板的右键菜单中点击“添加隐藏段”项,在弹出窗口中输入文件名或者目录名(如“机密”等)。这样,客户端虽然可以连接FTP服务器,但是却无法查看指定的文件或者目录,当然无法进入该目录进行各种操作。
同理,可以添加任意多个文件名和目录名,禁止客户端对其进行浏览。对于FTP目录中的有些文件夹来说,管理员希望禁止用户对其进行更名操作,或者禁止其进入该目录。
为此,可以在“拒绝的URL序列”面板的右键菜单中点击“添加URL序列”项,在弹出窗口中输入具体的目录名(如“共享文档”等),点击“确定”按钮保存设置。这样,客户端试图对该目录进行更名或者访问时,会遭到FTP服务器的拦截,并显示警告信息。
为了控制客户端的具有危险性操作,可以对其操作命令进行拦截。在“命令”面板的右键菜单中点击“拒绝命令”项,在弹出窗口中输入具体的命令(例如,“dele”“list” “mkd”等),点击“确定”按钮保存配置。
这样,当客户端试图删除FTP服务器上的文件时,就会遭到服务器的拦截,同时会收到FTP服务器发来的警告信息。
利用规则分配访问权限
为了提高FTP安全性,是不允许采取匿名登录的。这就需要对用户的访问进行授权,即只能允许用户使用特定的账户来访问FTP服务器。
例如,可以在CMD窗口中执行“net user ftpuser1 p[]123qwe/add”命令,创建名为“ftpuser1”的账户。之后在FTP站点主目录的属性窗口中打开“安全”面板,在其中点击“添加”按钮,在选择用户和组窗口中点击“高级”按钮,在弹出面板中点击“立即查找”按钮,搜索本机中所有账户信息。然后选择“ftpuser1”账户,将其添加到FTP目录的“组或用户名”列表中。选择该账户后,在权限列表中选择合适的权限,例如读取、写入及修改等。
在为其设置了合适的权限后,在IIS管理器中的“FTP”栏中双击“FTP授权规则”项,在右侧的“操作”栏中点击“添加允许规则”项,在弹出窗口中选择“指定的用户”项,输入“ftpuser1”账户名,可以输入多个账户,彼此之间以顿号分隔。在“权限”列表中选择“读取”和“写入”项。
注意,因为FTP的权限是在Windows用户权限的基础上的实现的,所以仅仅在这里开访问权限是不够的。
必须按照上述方法针对FTP目录为具体的账户添加对应的权限,否则,在访问FTP服务器时会出现权限不足的问题,点击“确定”按钮保存配置信息。这样客户端就可以利用该账户登录FTP服务器,按照预设的权限执行浏览、上传及修改等操作。
当然,也可以在添加允许授权规则窗口中选择所有用户、所有匿名用户、指定的角色或用户组等对象,为其设置合理的访问权限。
对应地,如果点击“添加拒绝规则”链接,那么其作用刚好与上述功能相反,可以限制指定的用户对FTP服务器的访问权限。
限制IP地址,拒绝非法访问
在某些情况下,限制FTP服务器只允许来自特定的IP进行访问,可以有效防范黑客的袭扰。在IIS管理器中选择服务器名(或者选择具体的FTP主机名),在中部的“FTP”栏中双击“FTP IP地址和域限制”项,在弹出界面右侧的“操作”栏中点击“添加允许条目”链接,在弹出窗口中可以输入单个的IP或者指定的IP范围。点击“确定”按保存配置。
这样,当这些IP访问FTP服务器时,可以正常连接。
对应地,点击“添加拒绝条目”链接,可以设置禁止访问本FTP服务器的IP或者IP范围。点击“编辑功能设置”链接,在弹出窗口中的“未指定的客户端的访问权”列表中如果选择“拒绝”项,那么当非允许IP范围外的主机访问本FTP服务器时,将禁止其进行连接。如果选择“允许”项,则情况刚好相反,只要不是禁止列表中的IP,都可以正常访问本FTP服务器。如果选择“启用域名限制”项,那么在执行上述“添加允许条目”和“添加拒绝条目”操作时,可以输入允许或者禁止的域名信息。例如,在“添加拒绝限制规则”窗口中选择“域名”项,输入“*.xxx.com”的域名,那么本FTP服务器将拒绝所有后缀为“xxx.com”的主机访问操作。
管理身份验证方式
在“FTP”栏中双击“FTP身份验证”项,在弹出界面中显示基本身份验证和匿名身份验证两种验证方式。其实在IIS8.0中用来验证用户名称和密码的方法不止于此,还包括摘要式身份验证和Windows身份验证。
对于FTP服务器来说,一般只使用上述两种验证方式。不同的身份验证方式使用顺序是不同的,因为匿名访问风险较大,最好禁止该身份验证方式。在“FTP身份验证窗口”中选择“基本身份验证”项,在右侧点击“启用”项,激活该身份验证方式。当客户端使用该验证方式连接FTP服务器时,需要输入对应的账户名和密码,其安全性有所提高。
当然,这需要管理员在本地安全数据库或者Active Directory数据库中创建好对应的账户信息,并针对FTP目录为不同的账户分配不同访问权限,同时在“FTP授权规则”窗口将其添加进来,客户端才可以利用对应的账户顺利访问FTP服务器。
不过,客户端发送给FTP服务器的用户名和密码没有经过复杂的加密处理,很容易被黑客利用各种嗅探工具拦截。
因此,使用该种身份验证方式应该和SSL安全连接配合使用,来提高数据传输的安全性。
使用SSL加密传输数据
为了防止黑客拦截数据,需要使用安全加密传输,来保证数据的安全性。
Windows Server 2012中的FTP服务支持FTP Over SSL工具,允许FTP客户端使用SSL安全连接与FTP服务器进行通讯。当然,前提是必须为FTP服务器申请和安装SSL安全连接证书。
当创建了所需的证书后,在IIS管理器中选择FTP服务器,在窗口中部双击“FTP SSL设置”项,在弹出界面中的“SSL证书”列表中选择合适的证书。
选择“允许SSL连接”项,表示允许客户端利用SSL方式来连接本FTP服务器。选择“将128位加密用于SSL连接”项,表示客户端需要采用128位加密方式。点击右侧的“应用”链接,激活该功能。如果选择“需要SSL连接”项,表示客户端必须使用SSL连接FTP服务器。选择“自定义”项,然后点击“高级”按钮,在高级SSL策略窗口中可以针对控制通道和数据通道,来进行合适的调整操作。
例如,选择“允许”项,表示允许使用SSL连接,选择“要求”项,表示必须使用SSL连接。选择“拒绝”项,表示拒绝SSL连接。选择“只有凭证才需要”项,表示当客户端传送账户名和密码时才使用SSL加密,该功能只针对控制通道发挥作用。
上述两个通道针对的是在客户端和FTP服务器之间存在防火墙而言的。
在这种情况下,客户端和服务器之间需要建立两个连接来建立两个通道:一条通道用来发送操作命令,称为控制通道;另一条通道用来发送数据,称为数据通道。
控制通道在服务器端使用的是21端口,数据通道则根据FTP的连接模式存在不同。当激活了SSL加密功能后,客户端就可以使用CuteFTP等工具来连接SSL FTP服务器,在传输过程中,数据处于加密状态,可以有效防御黑客的嗅探操作。
隔离FTP用户,保证数据安全
为了安全起见,可以使用FTP用户隔离功能,让不同的用户拥有其专属主目录。这样,当用户登录后,会自动进入其专属目录,并且会被限制在其专属目录内,这就有效降低了FTP服务器面临的安全风险。
在FTP站点主目录中针对不同的用户,分别创建与之同名的文件夹或或者虚拟目录,这称为用户主目录。
在IIS管理器中的“FTP”栏中双击“FTP用户隔离”项,在弹出界面选择“用户名目录(禁用全局虚拟目录)”项,表示用户拥有自己的专属主目录,而且会隔离用户,即用户登录后会被导入到其专属主目录中,并且会被限制在其中,无法切换到其他用户的主目录中。
假设FTP站点主目录为“C:ftproot”,那么对于匿名用户来说,可以创建名为“C:ftprootLocalUserPublic”的目录。
本地用户“ftpuser1”可以建立名为“C:ftprootLocalUserFtpuser1”的目录,对于名称为“cklxxx”域中的用户“ftpyonghu”用户来说,可以创建名为“C:ftprootcklxxxFtpyonghu”目录等。可以根据用户性质的不同,分别按照特定的规则创建与之同名的目录,即对匿名用户和普通用户在FTP主目录下创建名为“LocalUser”的目录,在其中分别创建与之同名的目录。
对于匿名用户来说,其目录名必须为“Public”。域账户需要先在FTP主目录下创建和域名相同的目录,在其中分别创建域各自账户同名的目录。
在默认情况下,用户对其主目录拥有读取权限。当用户登录FTP服务器后,会自动进入各自的主目录,虽然可以查看其专属目录下的虚拟目录,但是却无法查看FTP站点之下的虚拟目录(即全局虚拟目录)。当然,可以在对应目录的属性窗口中打开安全面板,针对不同的用户设置更多的访问权限。在上述界面中选择“用户名物理目录(启用全局虚拟目录)”项,其功能特点与上述“用户名目录”基本相同。
所不同的是,这里选择是用户名称物理目录,即用户专属主目录必须使物理目录,不能是虚拟目录。用户可以访问FTP站点内的全局虚拟目录,但是却无法访问其专属主目录中的虚拟目录。选择“在Active Directory中配置的FTP主目录”项,则仅仅针对Active Directory域用户有效,用户拥有专属主目录,而且会隔离用户,即用户登录后会自动进入其专属主目录,并且会被限制在目录中,无法进入其他用户的主目录中。
保护FTP日志安全
针对FTP服务,Windows提供了详细完美的日志跟踪记录功能。当黑客侵入FTP服务器后,必然会在系统日志中留下踪迹,据此,管理员可以分析黑客的行踪,及时修补系统漏洞。在IIS管理器中的“FTP”栏中双击“FTP日志”项,在“目录”栏中点击“浏览”按钮,可以更改自定义日志文件路径。
虽然修改了日志存放位置,但是只要访问者拥有足够的权限,仍然可以轻松的清除日志信息。我们必须通过Windows文件保护机制,来捍卫日志安全。当然,前提条件是日志文件必须存储在NTFS格式分区中。
选择日志存放文件夹,在其属性窗口中打开“安全”面板,点击“编辑”按钮,在弹出窗口中点击“删除”按钮,清除除了“Users”和“SYSTEM”之外的所有账户。
如果有些账户不能删除,可以点击“高级”按钮,在弹出窗口中点击“禁止继承”按钮,在弹出窗口中选择“将已继承的权限转换为此对象的显式权限”项,并取消“从父项继承那些可以应用到自对象的权限项目”,在弹出对话框中点击“删除”按钮,就可以清除所需的账户。
之后选择“Users”组,在“允许”栏中只勾选“读取”项,让其只拥有读取日志的能力。选择“SYSTEM”账户,在“允许”栏中勾选除了“完全控制”和“修改”之外的所有权限。之后点击“确定”保存。当以后进入事件查看器窗口,试图删除日志信息时,系统就会弹出无法删除日志信息的警告信息。