赞
踩
由于官方尚未发布Tomcat 7的强化指南,ERNW便总结了相关的设置,并制作出本文中列出的清单。尽管有大量的设置可以被应用,但本文旨在提供一些加固方法的基础。可能对操作系统功能造成严重影响的并且需要进行进一步大量测试的设置并未列在该清单中,或者被标记为可选。
我们用“强制”或“可选”标记了此清单中的每个推荐设置,用以清楚的表达从我们的角度来看哪个设置是必须的(强制)或者是应该的(可选)。“可选”也意味着我们推荐你应用此设置,但这可能会影响系统的必需功能。
必须及时安装与安全相关的Tomcat更新:
必须在10天内安装高危或重要优先级的更新和补丁。
必须在发布后30天内安装中等优先级的更新和补丁。
必须在发布后90天内安装低优先级更新。
有关补丁的可用性和严重性的信息,请参见tomcat.apache.org/lists.html#…
更新可能会影响功能。关于核心/业务方面的Tomcat的更新可能带来的副作用,请查看tomcat.apache.org/lists.html#…
在系统上以低权限运行Tomcat应用程序。创建一个专门的 Tomcat服务用户,该用户只能拥有一组最小权限(例如不允许远程登录)。必须检查以最小特权用户身份使用操作系统资源库安装程序的行为,以确保Tomcat不以root /管理员身份运行。必须在配置启动机制的操作系统层级上确保这一点(例如Microsoft Windows上的Windows服务或Unix上的rc脚本):
图一:Windows服务配置
关于安全的服务配置,请参考ERNW Windows加固指南
图二:FreeBSD rc脚本
具体配置与Unix系统和Tomcat版本有关。例如FreeBSD上的Tomcat 7已经不支持配置rc.conf中的用户帐户,因此用户名被硬编码在启动脚本中—这是不推荐的。在FreeBSD上,web和应用服务器应该是以www用户身份运行,可参考www.freebsd.org/doc/en/book…
以低权限用户身份运行Tomcat可能会影响Tomcat的某些功能。例如,特权端口不可被设置为监听端口。为了解决该问题,可以在系统上使用本地HTTP代理(例如使用Apache的mod_jk模块)或者定义包转发规则,使得进入流量被转发到Tomcat监听的非特权端口。
Tomcat文件夹只能由tomcat用户本身访问,尤其是对于目录tomcathome/conf/和{tomcat_home}/conf /和tomcathome/conf/和{tomcat_home}/webapps。
当不需要通过应用程序服务器自动部署时,标准配置就是将所有Tomcat文件的所有者设置为root,并且所属群组设置为Tomcat。然后用chmod 740仅允许root用户编辑文件并允许Tomcat用户读取文件。例外是,临时和工作目录的所有者应该是Tomcat用户而不是root用户。
该设置会影响自动部署。(参见第8.5小节)
Tomcat的主要管理界面被称为Manager应用程序。尽管保护该应用程序对于Tomcat服务器的安全至关重要,但是该应用程序在许多环境中被发现是非常的暴露的(例如,没有部署网络级限制以及使用弱/默认登录信息)。如果可能的话,管理性质的任务应该是在操作系统级别执行(例如使用RDP或SSH),并且避免使用Manager应用程序(另见第8.3小节)。如果无法做到,下面小节描述的设置(或许还要考虑跳板机)应该与安全认证机制(另请参见第4小节)和加密传输(参见第6.3小节)结合使用。
如果要使用Manager应用程序,应该只允许从授权的IP地址访问其管理界面。
这可以通过在CATALINA_HOME/webapps/manager/META-INF/context.xml文件中的做以下设置来实现。以下设置只允许从本地主机和特定IP地址或IP地址段访问管理界面:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\\.\\d+\\.\\d+\\.\\d+|::1|0:0:0:0:0:0:0:1|172\\.16\\.16\\.\\d{1,3} "/>
也可使用主机名:
<Valve className="org.apache.catalina.valves.RemoteHostValve"
allow=".*\\.admins\\.domain\\.com" />
allow和deny都支持正则表达式(使用java.util.regex)
根据给定的任务,只能赋予相应角色的权限给用户。角色如下,并且要记得只赋予最小权限:
manager-gui:可以访问web界面
manager-status:只可以访问“Server Status”页面
manager-script: 可以脚本文本界面和“Server Status”页面
manager-jmx:可以访问JMX代理界面和“Server Status”页面
以下设置一般适用于基于Tomcat的身份验证。但是在大多数环境中,主要是针对Manager应用程序,因此以它来做例子。如果部署的应用程序使用基于Tomcat的认证,那么该应用程序也适用这些设置。
如果要使用Manager应用程序,则还应该附加额外的身份认证机制。认证机制优先级如下:
1 LDAPS或客户端证书
2 本地(基于消息摘要)
另外,认证过程和与Manager应用程序的通信必须使用SSL来保护(见下文)。
对于本地和基于证书的身份验证,必须部署账户锁定机制(对于集中式认证,目录服务也要做相应配置)。为防止暴力破解,使用的认证域必须放在做了如下配置的锁定域中:
编辑CATALINA_HOME/conf/server.xml文件,并添加配置如下的锁定域:
<Realm className="org.apache.catalina.realm.LockOutRealm"
failureCount="5" lockOutTime="30">
<!\-\- AUTHENTICATION REALM -->
</Realm>
200多本网络安全系列电子书
网络安全标准题库资料
项目源码
网络安全基础入门、Linux、web安全、攻防方面的视频
网络安全学习路线图
有几个域不适合用作生产用途,这些域必须被禁用。
打开文件CATALINA_HOME/conf/server.xml,搜索MemoryRealm并禁用之。JDBCRealm也必须被禁用,改用DataSourceRealm。使用大规模安装时,请勿使用UserDatabaseRealm并也将其禁用。
所有的web应用程序的会话超时必须设置为20分钟。
可通过编辑CATALINA_HOME/conf/web.xml文件并做以下配置来实现:
<session-config>
<session-timeout>20</session-timeout>
</session-config>
Tomcat 7对会话cookie自动启用HttpOnly cookie标记,查看配置以确保该选项为被禁用。
要启用HttpOnly,必须在CATALINA_BASE/conf/context.xml中做如下设置,使之全局应用于所有应用程序:
<Context useHttpOnly=‘true’ …/>
在需要通过JavaScript访问会话cookie的情况下,使用HttpOnly可能会影响应用程序功能。如果应用程序需要通过JavaScript访问HttpOnly cookie,可以在METAINF/context.xml中一个单独的Context中定义一个异常。
为保护应用程序,必须启用Tomcat的跨站请求伪造防护。Tomcat 7提供了基本的CSRF防护。可以在CATALINA_BASE/conf/web.xml中配置一个全局过滤器。该过滤器可以被每个使用WEB-INF/web.xml文件的应用程序覆盖。
必须做以下设置:
<filter-mapping>
<filter-name>CSRFPreventionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
有关详细说明和其他选项,请参阅Tomcat手册:tomcat.apache.org/tomcat-7.0-…
使用CSRF防护可能会影响程序功能,必须要牢记这一点,尤其是在应用程序大量使用异步请求的情况下。
不要让连接器(connector)监听服务器上所有可用的网络接口和IP地址,而要让连接器监听指定的网络接口和IP地址。
编辑CATALINA_HOME/conf/server.xml,查看每个Connector并指定正确的IP地址:
<Connector port="TCP\_PORT" address="LISTEN\_IP_ADDRESS"…
这样可以防止应用程序意外地运行在某个开放的网络接口上。
只开放必须要的Tomcat端口。默认TCP端口是8080和8443。确保在Tomcat和可安装在系统上的现有的包过滤器中正确配置这些端口。
打开CATALINA_HOME/conf/server.xml文件,查看每个Connector的端口配置。移除不需要的端和Connector。
为了保护敏感的应用程序(比如Manager应用程序),必须使用并配置SSL(对于处理敏感数据或提供登录功能的应用程序也是必需的)。第一步是创建可信的证书,以避免证书警告,并向终端用户提供一种验证可信连接的方法。
第二步是创建一个证书密钥库(keystore),其中包含CA、服务器证书和相应的私钥。密钥库的密码应按照之前的“保障密码安全”小节中建议来创建。
要启用SSL支持,可以使用以下配置(实际配置取决于给定的平台和要求),并且必须放在CATALINA_HOME/conf/server.xml中:
<Connector protocol="org.apache.coyote.http11.Http11Protocol" port="8443" scheme="https"
secure="true" SSLEnabled="true" sslProtocol="TLS" keystoreFile="path to keystore file"
keystorePass="keystore password"/>
通过添加以下密码套件(cipher suite)至SSL Connector来指定可用的SSL加密方式:
<Connector ciphers="SSL\_RSA\_WITH\_RC4\_128\_SHA, TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA,
TLS\_DHE\_RSA\_WITH\_AES\_128\_CBC\_SHA, TLS\_DHE\_DSS\_WITH\_AES\_128\_CBC\_SHA,
SSL\_RSA\_WITH\_3DES\_EDE\_CBC\_SHA, SSL\_DHE\_RSA\_WITH\_3DES\_EDE\_CBC\_SHA,
SSL\_DHE\_DSS\_WITH\_3DES\_EDE\_CBC_SHA" …
为了使托管在Tomcat上的所有web应用程序强制使用HTTPS,必须在每个CATALINA_HOME/webapps/$WEBAPP/WEB-INF/web.xml文件里每个security-constraint标签关闭(标签)之前包含以下内容:
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
<user-data-constraint>
可用Java SecurityManager限制单个应用程序的功能。$CATALINA_HOME/conf/catalina.policy文件包含了Java SecurityManager使用的安全策略的配置。一旦配置了catalina.policy文件,便可以使用SecurityManager和–security选项启动Tomcat。想了解全面的配置介绍,请参阅官方的Tomcat SecurityManager教程:tomcat.apache.org/tomcat-7.0-…
因为基本上所有的权限类型(比如访问单个文件和目录或Java包)都应该根据每个应用程序进行单独配置,所以这会大大增加操作成本。另外,限制过于严格的策略文件会影响应用程序的功能。
Tomcat可限制对某些Java包的访问。如果检测到受限制的包被访问,将抛出安全异常。
对Java包做访问限制,打开$CATALINA_BASE/conf/catalina.properties文件并添加不允许访问的包至package.access列表。
分析Java import可以列出哪些应用程序需要哪些包。在Unix系统上,可以使用以下例子来实现:
grep –R import ${tomcat_home}/webapps/WEBAPP
200多本网络安全系列电子书
网络安全标准题库资料
项目源码
网络安全基础入门、Linux、web安全、攻防方面的视频
网络安全学习路线图
检查几个默认值以防出现潜在的漏洞。参考第9小节列出的不能更改的默认配置。
如果必须要开启使用本地Tomcat系统上的网络端口关闭Tomcat的功能,必须使用难以被猜解出的强密码。
编辑CATALINA_HOME/conf/server.xml文件并设置关闭密码:
如果不需要该功能,必须要将其停用,设置如下:
本地管理脚本可将服务器关闭,即使在关闭端口被禁用的情况下。
Tomcat可能自带一些默认的web应用程序。如果不是一定需要,必须将它们移除。
移除${tomcat_home}/webapps中所有的默认的web应用程序。必须要移除的应用程序有:ROOT、Documentation、Examples、Host Manager和Manager。
Manager应用程序提供管理性质的功能,比如部署应用程序和检索日志信息。这些功能应该使用本地服务器上的命令行来运行。但是,如果这个应用程序是绝对需要的,那它必须用SSL保护起来。
由于默认的错误页面会泄露一些内部信息(比如版本号和堆栈轨迹),所以应该用包含一般错误信息(比如处理您的请求时出错了)的自定义错误页面取而代之。
每个web应用程序的web.xml文件里应包含以下配置,该文件位于CATALINA_HOME/webapps/$WEB_APP/WEB-INF:
<error-page>
<error-code>500</error-code>
<location>/errorpages/error.html</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type> <location>/errorpages/error.html</location>
</error-page>
此外,如果Manager应用程序没被移除,必须手动将位于CATALINA_HOME/webapps/manager/WEB-INF/jsp/的错误页面里的“Tomcat 7“版本信息移除。
Tomcat允许在Tomcat运行时自动部署应用程序。这个功能必须被禁用,因为它可能允许部署恶意或未经测试的应用程序。
自动部署由autoDeploy和deployOnStartup属性控制。如果两者是false,只有在server.xml中定义的Context将被部署,并且任何更改都需要重启Tomcat。要禁用自动部署,请在$CATALINA_HOME/conf/server.xml文件中做以下配置:
autoDeploy=”false”
deployOnStartup=”false”
在托管环境中Web应用程序可能不受信任,也可以设置deployXML属性为false来忽略context.xml,以防给该web应用程序提高权限。
以下列出了不能更改的默认设置,默认情况下这些设置被认为是安全的:
server.xml中每个Connector的allowTrace的值要么为空或要么被设为false。
在所有的context.xml文件中,将privileged属性设置为false,除非像Manager应用程序那样需要权限:
<Context ... privileged =“false”/>
<Context ... crossContext =“false”/>
<Context... allowLinking =“false”/>
在web.xml文件中设置DefaultServlet的read-only为true。如果该值是false,将会允许客户端删除或修改服务器上的静态资源并上传新的资源。一般在没有认证的情况下不应该修改该值。
设置DefaultServlet的listings为false。这不仅仅是因为允许显示目录列表被认为是不安全的,而且还因为生成具有数千个文件的目录列表会消耗大量的CPU资源,相当于被DDoS攻击。
-Dorg.apache.catalina.connector.RECYCLE_FACADES = false
确保正在使用的启动脚本不包含以下内容:
-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH = FALSE
-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = FALSE
确保使用的启动脚本不包含以下内容:
-Dorg.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER = false
-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = FALSE
¬ 确保使用的启动脚本不包含以下内容:
-Dorg.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER = false
初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:
2023届全国高校毕业生预计达到1158万人,就业形势严峻;
国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。
一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。
6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。
2022届大学毕业生月收入较高的前10个专业
本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。
具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。
“没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。
1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!
2、人才缺口大,就业机会多
2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。
行业发展空间大,岗位非常多
网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…
职业增值潜力大
网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。
随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。
从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。