我已经在我的Ubuntu Home 11.10系统上安装了tomcat,在路由器内对8080进行端口转发后,可以成功在线访问测试页面。
我没有对路由器、Ubuntu 或 tomcat 安装进行任何其他更改,其他一切都保持标准。我打算使用它来玩 Java Servlet 和基本的 Web 开发,以供我个人使用。
您建议我采取哪些步骤(如果有的话)来确保安全?我应该在 Tomcat 配置中更改任何内容吗?限制访问似乎是个好主意 -http://www.seankilleen.com/2010/09/how-to-allow-only-specific-ip-addresses_30.html
但我愿意接受任何其他建议。
答案1
解决方案
使用 Tomcat 阻止除管理员 IP 地址(对于我们来说是静态的并且已知)之外的所有连接。步骤
打开位于 [Tomcat]\conf\context.xml 的 context.xml 文件,其中 [Tomcat] 是 Tomcat 服务器的基本位置。
如果您以前从未编辑过此文件,您应该会看到如下一行:
<WatchedResource>WEB-INF/web.xml</WatchedResource>
在标签后直接添加以下行:
<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.
工作原理说明
此阀门使用正则表达式,因此如果您决定尝试一下,您当然可以(前提是您对 Java 正则表达式有所了解)。就我们的目的而言,IP 地址之间的竖线(“|”)字符用作“或”运算符。如果远程地址值与这些完整字符串中的任何一个匹配,则允许该值。
请注意,默认情况下,这将拒绝所有其他连接。
如果您想允许除某些 IP 地址之外的所有连接,您可以将“允许”属性更改为“拒绝”;除拒绝属性中的连接外,所有连接都将被允许,拒绝属性仍然使用 Java 正则表达式。
据我所知,这种“阀门”结构无法堆叠。也就是说,您不能做一个“拒绝所有”阀门,然后在其上堆叠多种类型的“允许阀门”。如果有人知道这是否可行,请随时在评论中发表意见。
希望这可以帮助!