Serv-U默认是以System组的身份运行的,对本机有完全操作的权限。所以如果攻击者利用Serv-U程序的漏洞而获得了可执行shell,那么他将可以操作系统里任何一个目录。
Liunx系统和Unix系统比Windows安全的一个重要原因在于:Linux和Unix的系统服务不使用root权限,而是使用权限比较低的另外一个单独用户,比如web服务使用了nobody这个用户。
为了提升Serv-U的安全级,我们为Serv-U创建一个独立的用户,并且让Serv-U用这个用户的身份来运行。这样即使Serv-U由于出现了漏洞而被进攻,也只能影响到有限的数据,不能影响到系统关键文件。
首先建立一个用户,名称可以任意定义,比如叫做ftpuser。进入开始 - 控制面板 - 管理工具 - 计算机管理,找到用户一项,点击右键选择添加。打开一个记事本,随便敲击一段密码,越复杂越好,16位以上为佳。把这段密码复制下来,贴到创建新用户的对话框里边去。
下边修改磁盘权限,首先修改Serv-U的安装目录。点击右键,选择属性。切换到安全标签。可以看到当前目录的权限是只有管理员和系统用户能够操作。点击添加,在用户名那里输入ftpuser,即刚才新建的那个用户。然后点击确定。将ftpuser的权限设置为“读取及运行”、“列出文件夹目录”、“读取”。进入目录,找到ServUAdmin.ini文件,点击右键,选择属性。点击安全的标签,可以看到当前的文件权限,和刚才设置的目录权限是一致的。我们给他添加“修改”和“写入”的许可权限。在“D:Serv-U”目录下找到ServUDaemon.ini这个文件,也给他添加“修改”和“写入”的许可权限。
接下来给站点目录添加Serv-U的读写权限。给你开设的所有站点分别给予ftpuser权限,并将其权限设置为除了完全操作之外的所有权限。
现在对C盘设置权限。为了不让Serv-U的运行用户ftpuser读写cmd.exe等文件,我们需要给其添加禁止写入的权限。找到C:WINNTsystem32cmd.exe,点击右键选择属性,进入安全,然后添加禁止任何操作的权限。通理,给C:WINNTexplorer.exe也设置禁止操作的权限。
另外,还需要在“本地安全设置”,设置禁止ftpuser用户本地登陆。进入控制面板 - 管理工具 - 本地安全策略 - 本地策略 - 用户权利指派 - 拒绝本地登陆。
设置都完成后,我们把Serv-U的启动身份切换到ftpuser。进入控制面板 - 管理工具 - 计算机管理,找到Serv-U的服务。双击它,打开“登陆”对话框。当前默认为“本地系统帐户”。修改为ftpuser用户,并且把刚才设置的复杂密码填写进去 。 点击确定,并且重新启动服务。
经过如此设置,ftpuser运行者将只能读写规定的站点目录,对其他目录没有写入权限。而其本身是非system身份的普通用户,降低了他对系统的潜在危险。