如何确保 Tomcat 安装的安全?

spa*_*man 6 tomcat

我已经在我的Ubuntu Home 11.10系统上安装了tomcat,并且在我的路由器内的8080端口转发后可以成功在线访问测试页面。

我没有对路由器、Ubuntu 或 tomcat 安装进行任何其他更改,其他一切都保持标准。我打算用它来玩 Java Servlets 和基本的 Web 开发供我个人使用。

如果有的话,您会建议我采取哪些步骤来确保这是安全的?我应该更改 Tomcat 配置中的任何内容吗?这似乎是限制访问的好主意 - http://www.seankilleen.com/2010/09/how-to-allow-only-specific-ip-addresses_30.html

但我愿意接受任何其他建议。

Rin*_*ail 2

解决方案

使用 Tomcat 阻止除管理员 IP 地址(对我们来说是静态的且已知的)之外的所有连接。步骤

打开位于 [Tomcat]\conf\context.xml 中的 context.xml 文件,其中 [Tomcat] 是 Tomcat 服务器的基本位置。

如果您以前从未编辑过此文件,您应该会看到如下所示的行:

    <WatchedResource>WEB-INF/web.xml</WatchedResource>
Run Code Online (Sandbox Code Playgroud)

直接在标签后面添加以下行:

    <Valve className="org.apache.catalina.valves.RemoteAddrValve"    allow="IP1|IP2|IP3"/>

...where IP1, IP2, IP3, etc. are the IP addresses you would like to allow.
Restart the Tomcat server.
Run Code Online (Sandbox Code Playgroud)

关于它如何工作的注释

该阀门使用正则表达式,因此如果您决定喜欢它,您当然可以(只要您对 Java 正则表达式有所了解)。出于我们的目的,IP 地址之间的竖线(“|”)字符充当“或”运算符。如果远程地址值与这些完整字符串中的任何一个匹配,则允许。

请注意,默认情况下,这会拒绝所有其他连接。

如果您想允许除某些 IP 地址之外的所有连接,您可以将“允许”属性更改为“拒绝”;除拒绝属性中的连接外,所有连接都将被允许,该属性仍然使用 Java 正则表达式。

据我所知,这种“阀门”结构不能堆叠。也就是说,你不能做一个“拒绝所有”阀门,然后在其上面堆叠多种类型的“允许阀门”。如果有人知道这是否可行,请随时在评论中留言。

希望这可以帮助!

来源