在 conf/server.xml 文件中修改Connector配置:
<Connector port="8080" protocol="HTTP/1.1"
address="127.0.0.1"
connectionTimeout="20000"
redirectPort="8443" />
或者
<Connector port="8080" protocol="HTTP/1.1"
address="localhost"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3"
address="127.0.0.1"
redirectPort="8443" />
# 允许本地回环访问
iptables -A INPUT -i lo -j ACCEPT
# 允许本地访问Tomcat端口
iptables -A INPUT -s 127.0.0.1 -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -s ::1 -p tcp --dport 8080 -j ACCEPT # IPv6
# 拒绝其他所有对Tomcat端口的访问
iptables -A INPUT -p tcp --dport 8080 -j DROP
# 保存规则(根据系统不同)
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables
# 新建入站规则,仅允许本地IP
New-NetFirewallRule -DisplayName "Tomcat Local Only" -Direction Inbound `
-LocalPort 8080 -Protocol TCP -Action Allow -RemoteAddress 127.0.0.1
# 或使用高级安全防火墙
# 1. 创建允许规则:源IP=127.0.0.1,端口=8080
# 2. 创建阻止规则:源IP=任何,端口=8080
在 bin/catalina.sh 或 bin/catalina.bat 中:
# Linux catalina.sh
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
export JAVA_OPTS
rem Windows catalina.bat
set "JAVA_OPTS=%JAVA_OPTS% -Djava.net.preferIPv4Stack=true"
配置后通过以下方式验证:
# 检查端口监听状态
netstat -an | grep 8080
# 应该看到类似输出
# tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN
# 测试本地访问
curl http://localhost:8080
# 测试远程访问(应该失败)
# 从其他机器访问服务器IP:8080
::1 替代 127.0.0.1
多个接口:如果服务器有多个网络接口,确保只绑定到回环接口
管理需求:如果还需要通过本地访问管理界面,确保相关端口也做了同样限制
根据实际需求选择合适的方法,通常修改Tomcat配置是最直接的方式。