温馨提示×

Tomcat与CentOS防火墙配置指南

小樊
42
2025-10-19 18:35:27
栏目: 智能运维

Tomcat与CentOS防火墙配置指南

一、CentOS防火墙基础配置

CentOS 7及以上版本默认使用firewalld作为防火墙管理工具,需先确保其运行正常,再配置Tomcat端口访问规则。

1. 检查防火墙状态

sudo firewall-cmd --state
  • 返回running表示防火墙正在运行;若未运行,启动防火墙:
    sudo systemctl start firewalld
    

2. 开放Tomcat默认端口(8080)

Tomcat默认使用8080端口,需将其添加到防火墙的public区域(对外提供服务):

sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
  • --permanent:永久生效(重启防火墙后仍保留);若需临时生效(重启后失效),可省略此参数。

3. 重新加载防火墙配置

添加端口后,需重新加载防火墙以使规则生效:

sudo firewall-cmd --reload

4. 验证端口是否开放

sudo firewall-cmd --zone=public --query-port=8080/tcp
  • 返回yes表示端口已开放;也可通过以下命令查看所有开放端口:
    sudo firewall-cmd --zone=public --list-ports
    

5. 限制访问IP(可选,增强安全性)

若需仅允许特定IP访问Tomcat,可使用富规则(Rich Rule)

# 允许单个IP(如192.168.1.100)
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8080" accept'

# 禁止单个IP(如192.168.1.200)
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.200" port protocol="tcp" port="8080" reject'

# 重新加载防火墙
sudo firewall-cmd --reload

6. 关闭防火墙(不推荐,仅测试用)

若需完全关闭防火墙(不安全,仅用于测试环境):

sudo systemctl stop firewalld
sudo systemctl disable firewalld  # 禁止开机启动

二、Tomcat配置优化(配合防火墙)

为进一步提升Tomcat安全性,需调整其自身配置,限制端口监听范围或访问权限。

1. 修改Tomcat端口(避免默认端口被扫描)

若默认8080端口易被攻击,可修改为其他端口(如8081):

  • 编辑conf/server.xml文件:
    sudo vim /usr/local/tomcat/conf/server.xml
    
  • 找到<Connector>标签(HTTP端口配置),修改port属性:
    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    
  • 保存后重启Tomcat:
    sudo systemctl restart tomcat  # 或使用Tomcat自带的脚本:./bin/shutdown.sh && ./bin/startup.sh
    
  • 更新防火墙规则(开放新端口):
    sudo firewall-cmd --permanent --zone=public --remove-port=8080/tcp
    sudo firewall-cmd --permanent --zone=public --add-port=8081/tcp
    sudo firewall-cmd --reload
    

2. 绑定本地回环接口(仅本地访问)

若Tomcat仅需本地访问(如作为后端服务),可将端口绑定到127.0.0.1,禁止外部访问:

  • 编辑conf/server.xml文件,修改<Connector>标签的address属性:
    <Connector port="8080" protocol="HTTP/1.1"
               address="127.0.0.1"  <!-- 仅绑定本地 -->
               connectionTimeout="20000"
               redirectPort="8443" />
    
  • 保存后重启Tomcat。

3. 配置Tomcat用户权限(限制管理访问)

若需通过浏览器访问Tomcat管理页面(如/manager/html),需在conf/tomcat-users.xml中配置用户角色,并限制访问IP:

  • 编辑conf/tomcat-users.xml
    sudo vim /usr/local/tomcat/conf/tomcat-users.xml
    
  • 添加用户及角色(如manager-gui,允许访问管理页面):
    <tomcat-users>
        <role rolename="manager-gui"/>
        <user username="admin" password="your_secure_password" roles="manager-gui"/>
    </tomcat-users>
    
  • 保存后,若需限制访问IP,可修改conf/server.xml中的<Host>标签,添加remoteAddr属性:
    <Host name="localhost" appBase="webapps"
          unpackWARs="true" autoDeploy="true"
          remoteAddr="192.168.1.100">  <!-- 仅允许该IP访问 -->
    
  • 重启Tomcat使配置生效。

三、常见问题排查

1. 外部无法访问Tomcat

  • 检查防火墙:确认Tomcat端口已在firewalld中开放,并已重新加载。
  • 检查Tomcat状态:确保Tomcat服务正在运行:
    sudo systemctl status tomcat
    
  • 检查端口占用:确认Tomcat端口未被其他进程占用:
    sudo netstat -tunlp | grep 8080
    

2. 本地能访问但外部无法访问

  • 检查SELinux:若SELinux启用,可能阻止外部访问。可临时关闭SELinux(不推荐):
    sudo setenforce 0
    
    或配置SELinux允许Tomcat网络访问:
    sudo setsebool -P httpd_can_network_connect 1
    

3. 防火墙规则不生效

  • 检查规则是否永久生效:若使用临时规则(未加--permanent),重启防火墙后会失效。
  • 检查规则顺序:firewalld规则按顺序匹配,确保没有更严格的规则(如reject)在accept之前。

通过以上配置,可实现Tomcat与CentOS防火墙的协同工作,既保证服务可用性,又提升系统安全性。

0