惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
V
V2EX
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
小众软件
小众软件
Vercel News
Vercel News
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
J
Java Code Geeks
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog
B
Blog
美团技术团队
量子位

博客园 - 飛雪飄寒

【共享】十步优化SQL Server中的数据访问 【推荐】SQL优化-索引 【推荐】SQL CookBook OLAP函数的使用 通过HttpModule、httpHandlers防止SQL注入式攻击 .net导出excel文件操作类续 【分享】.net1.1调用webservice返回二维数组时提示“XML 文档(1, 378)中有错误”的解决方法! .net页面之间传值方式小结 - 飛雪飄寒 - 博客园 在SQLServer中实现ORACLE的Sequence 【共享】将程序制作为服务运行的方法! 【推荐】.NET使用NPOI组件将数据导出Excel 【推荐】Quest.Central.For.Databases——Spotlight的使用 【推荐】[SQL优化工具]Quest.Central.For.Databases——SQL Tuning for SQL Server 【共享】解决“无法显示进程。没有正确安装调试器。请运行安装程序安装或修复调试器。”错误的方法。 【求助】使用SQL语句优化工具遇到的问题 【求助】软考报名即将开始,信息系统项目管理师、系统分析师、系统架构设计师——如何选择? 【探讨】索引视图如何提高性能 .net实现将Excel中的数据导入数据库 【学习】NeatUpload——支持大文件上传的控件
【分享】Tomcat服务器之安全设置
飛雪飄寒 · 2010-09-04 · via 博客园 - 飛雪飄寒

  tomcat是一个开源Web服务器,基于Tomcat的Web运行效率高,可以在一般的硬件平台上流畅运行,因此,颇受Web站长的青睐。不过,在默认配置下其存在一定的安全隐患,可被恶意攻击。另外,由于其功能比较单纯需要我们进一步地进行设置。本机将从安全和功能两方面谈谈基于Tomcat的Web服务器的部署,希望对大家有所帮助。
  环境描述
  OS:Windows Server 2003
  IP:192.168.1.12
  Tomcat:6.0.18
  1、安全测试
  (1).登录后台
  在Windows Server 2003上部署Tomcat,一切保持默认。然后登录Tomcat后台,其默认的后台地址为:
  http://192.168.1.12:8080/manager/html。在浏览器中输入该地址,回车后弹出登录对话框,输入默认的用户名admin,默认的密码为空,成功登录后台。
     
  (2).获得Webshell
  在Tomcat的后台有个WAR file to deploy模块,通过其可以上传WAR文件。Tomcat可以解析WAR文件,能够将其解压并生成web文件。我们将一个jsp格式的webshell用WinRar打包然后将其后缀改名为WAR(本例为gslw.war),这样;一个WAR包就生成了。最后将其上传到服务器,可以看到在Tomcat的后台中多了一个名为/gslw的目录,点击该目录打开该目录jsp木马就运行了,这样就获得了一个Webshell。
     
  (3).测试操作
  创建管理员
  Tomcat服务默认是以system权限运行的,因此该jsp木马就继承了其权限,几乎可以对Web服务器进行所有的操作。比如启动服务、删除/创建/修改文件、创建用户。我们以创建管理员用户为例进行演示。运行jsp木马的“命令行”模块,分别输入命令net user test test168 /add和net localgroup administrators test /add,这样就创建了一个具有管理员权限的test用户,其密码为test168。
     
  远程登录
  我们还可以进一步地渗透,比如通过“远程桌面”登录Web服务器。输入命令netstat -ano查看该服务器的3389端口是关闭的。我们可以利用webshell上传一个工具,利用其开启Web服务器的远程桌面。最后,我们就可以成功登录系统,至此整个Web沦陷。
     
  2、安全防范
  通过上面的测试可以看到,默认配置下的Tomcat服务器的安全性是非常差的。如何来加固Tomcat服务器的安全性呢?我们从以下几个方面来加强。
  (1).服务降权
  默认安装时Tomcat是以系统服务权限运行的,因此缺省情况下几乎所有的Web服务器的管理员都具有Administrator权限这和IIS不同,存在极大的安全隐患,所以我们的安全设置首先从Tomcat服务降权开始。
  首先创建一个普通用户,为其设置密码,将其密码策略设置为“密码永不过期”,比如我们创建的用户为Tomcat_lw。然后修改Tomcat安装文件夹的访问权限,为Tomcat_lw赋予Tomcat文件夹的读、写、执行的访问权限,赋予Tomcat_lw对WebApps文件夹的只读访问权限,如果某些Web应用程序需要写访问权限,单独为其授予对那个文件夹的写访问权限。
     
  “开始→运行”,输入services.msc打开服务管理器,找到Apache Tomcat服务,双击打开该服务,在其实属性窗口中点击“登录”选项卡,在登录身份下选中“以此帐户”,然后在文本框中输入Tomcat_lw和密码,最后“确定”并重启服务器。这样Tomcat就以Tomcat_lw这个普通用户的权限运行。
     
  有的时候,我们需要在命令行下运行Tomcat,这时候可以在命令下输入命令runas /user:tomcat_lw cmd.exe回车后并输入密码,这样就开启一个Tomcat_lw权限的命令行。最后定位到Tomcat的bin文件夹下,输入命令tomcat6.exe即以Tomcat_lw在命令行下启动Tomcat。
     
  这样普通用户Tomcat_lw运行的Tomcat其权限就大大地降低了,就算是攻击者获得了Webshell也不能进一步深入,从而威胁web服务器的安全。
  (2).更改端口
  Tomcat的默认端口是8080,攻击者可以据此运行扫描工具进行端口扫描,从而获取部署了Tomcat的Web服务器然后实施攻击。因此,为了安全期间我们可以修改此默认端口。在Tomcat的安装路径的conf目录下找到server.xml文件,用记事本打开然后搜索8080找到对应的字段,然后将8080自行修改为另外的数字。另外,需要说明的是connectionTimeout="20000"是连接超时,maxThreads="150"是最大线程类似这样的参数也可以根据需要进行修改。
     
  (3).禁止列表
  我们知道在IIS中如果设置不当,就会列出Web当前目录中的所有文件,在Tomcat也不例外。如果浏览者可以在客户端浏览Web目录,那将会存在较大的安全隐患,因此我们要确认Tomcat的设置中禁止列目录。设置文件是web.xml,也在conf目录下。用记事本打开该文件,搜索init-param在其附近找到类似如下字段:  
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>  
  确认是false而不是true。
     
  (4).用户管理
  Tomcat的后台管理员为admin并且默认为空密码,安全期间我们需要修改该默认的用户名并为其设置健壮的密码。其配置文件为tomcat-users.xml,用记事本打开该文件然后进行修改。其中role标签表示其权限,manager说明是管理员权限;user标签表示后台管理用户,可以看到用户名为admin,我们可以将其修改为一个陌生的用户;可以看到password后面为空密码,我们可以为其设置一个复杂的密码。最后修改配置完成的tomcat-users.xml文件为: 
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="gslw" password="test168" roles="admin,manager"/>
</tomcat-users>
    
  (5).错误页面
  Tomcat不像IIS提供了各种类型的错误页,如果Tomcat发生错误就会显示千篇一律的错误页面。其实我们可以通过修改其配置文件,从而自定义设置其错误页面的显示。打开web.xml文件,在最后一行的之前添加如下的语句:  
<error-page>
<error-code>401</error-code>
<location>/401.htm</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.htm</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.htm</location>
</error-page>
  当然,仅仅设置这样的语句还不行,需要创建相应的401.htm、404.htm、500.htm这样的文件才行。另外,要把错误页面文件放到webapps\manager目录中,否则需要在web.xml中指定其路径,最后的效果如下图所示
     
  总结:Tomcat不同于IIS,其配置没有图形界面,而是通过修改配置文件来完成的。不过,正因为如此用户有更多的自主性,可以根据自己的需要进行扩展。而且其与Apache可以无缝结合,打造安全、强大的Web服务器。

本文信息来源于:http://www.waitalone.cn/post/330.html