如何配置CentOS Java防火墙
导读:一、前置准备:确认Java应用端口 在配置防火墙前,需先明确Java应用程序监听的端口(如Spring Boot默认的8080端口、Tomcat默认的8005/8080端口)。可通过以下方式获取: 查看应用配置文件(如applicatio...
一、前置准备:确认Java应用端口
在配置防火墙前,需先明确Java应用程序监听的端口(如Spring Boot默认的8080端口、Tomcat默认的8005/8080端口)。可通过以下方式获取:
- 查看应用配置文件(如
application.properties
中的server.port
、Tomcat的server.xml
); - 检查应用启动日志(通常会输出“Listening on port XXXX”);
- 使用
netstat -tuln | grep java
或ss -tuln | grep java
命令查看Java进程占用的端口。
二、安装与启动Firewalld(CentOS默认防火墙工具)
- 安装firewalld:
若系统未安装firewalld,执行以下命令安装:sudo yum install firewalld -y
- 启动并设置开机自启:
sudo systemctl start firewalld # 启动服务 sudo systemctl enable firewalld # 设置开机自动启动
- 验证状态:
sudo firewall-cmd --state # 应返回“running”(运行中) sudo firewall-cmd --get-active-zones # 查看当前活动的防火墙区域(如“public”)
三、配置Java应用端口规则
1. 开放单个端口(常用)
若Java应用运行在8080端口(TCP协议),执行以下命令:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
--zone=public
:将规则添加到“public”区域(适用于公网或外部访问);--add-port=8080/tcp
:允许TCP协议的8080端口通过;--permanent
:规则永久生效(重启系统后仍保留)。
应用规则:
sudo firewall-cmd --reload # 重新加载配置使新规则生效
2. 开放端口范围
若Java应用需要开放多个连续端口(如8080-8090),执行:
sudo firewall-cmd --zone=public --add-port=8080-8090/tcp --permanent
sudo firewall-cmd --reload
3. 验证端口规则
- 查看所有开放端口:
sudo firewall-cmd --list-ports
- 查看特定区域的详细规则:
sudo firewall-cmd --zone=public --list-all
- 测试端口连通性(从另一台机器执行):
curl http://your-server-ip:8080 # 若返回应用响应,说明端口开放成功
四、限制访问源(可选,提升安全性)
若仅需允许特定IP地址访问Java应用(如公司内网IP192.168.1.100
),可使用富规则(Rich Rule):
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8080" accept' --permanent
sudo firewall-cmd --reload
family="ipv4"
:针对IPv4地址;source address="192.168.1.100"
:允许的源IP;port protocol="tcp" port="8080"
:目标端口及协议;accept
:允许访问。
删除富规则:
sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="8080" accept' --permanent
sudo firewall-cmd --reload
五、配置SELinux(若启用)
若系统启用了SELinux(sestatus
返回“Enforcing”),需调整SELinux策略以允许Java应用使用指定端口:
-
查看SELinux状态:
sestatus
-
允许端口通过SELinux:
若Java应用使用8080端口(非默认的HTTP端口80),需将其添加到http_port_t
类型:sudo semanage port -a -t http_port_t -p tcp 8080
semanage
:SELinux管理工具;-a
:添加端口;-t http_port_t
:指定端口类型为HTTP服务;-p tcp
:协议类型;8080
:端口号。
-
验证SELinux端口配置:
sudo semanage port -l | grep http_port_t
输出应包含
8080/tcp
。
六、常见问题排查
- 防火墙未运行:确保
systemctl start firewalld
已执行,且状态为“running”; - 端口未开放:检查
firewall-cmd --list-all
是否包含目标端口,或netstat -tuln
是否显示Java应用在监听该端口; - SELinux阻止访问:若应用无法访问,尝试临时将SELinux设为“permissive”模式(
sudo setenforce 0
),测试是否解决问题,再调整SELinux策略。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何配置CentOS Java防火墙
本文地址: https://pptw.com/jishu/721450.html