CentOS7使用打开关闭防火墙与端口

该博客主要围绕CentOS7系统展开,介绍了在该系统中打开和关闭防火墙以及端口的相关操作,属于信息技术中操作系统运维方面的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed

----配置firewalld-cmd

查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息:  firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
 
----那怎么开启一个端口呢
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=80/tcp
删除
firewall-cmd --zone=public --remove-port=80/tcp --permanent

查看firewall是否运行,下面两个命令都可以

systemctl status firewalld.service

firewall-cmd --state


查看当前开了哪些端口

### 如果你发现你已经配置了80端口那你的nginx ftp还是不可以访问的到,这个时候可能就是你的http服务没有在firewalld中配置的问题了,别人都不能对你发http,那么坑定不可以访问nginx了
其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。

firewall-cmd --list-services


查看还有哪些服务可以打开

firewall-cmd --get-services

可以通过下面的命令添加一个服务到firewalld

firewall-cmd --add-service=http //http换成想要开放的service

这样添加的service当前立刻生效,但系统下次启动就失效,可以测试使用。要永久开发一个service,加上 --permanent

firewall-cmd --permanent --add-service=http

查看所有打开的端口: 

firewall-cmd --zone=public --list-ports

更新防火墙规则: 

firewall-cmd --reload
<think>好的,用户问的是在CentOS 7上如何开发防火墙的某一端口。首先,我需要确认用户的具体需求。这里的“开发”可能是指开放端口,可能是打字错误。用户可能是在部署应用时需要打开某个端口,比如Web服务器的80端口或者数据库的3306端口。 接下来,我需要回忆CentOS 7防火墙管理工具。CentOS 7默认使用的是firewalld,而不是iptables。所以应该使用firewall-cmd命令来管理端口。用户可能对firewalld不太熟悉,特别是如果他们之前使用的是旧版本的CentOS,可能会习惯iptables,所以需要明确说明使用firewalld。 然后,步骤方面,首先需要确认防火墙服务是否运行。用户可能没有启动firewalld,或者可能禁用了它,所以需要检查状态。如果未运行,需要启动并设置开机启动。这一步很重要,因为如果防火墙没开,端口默认是开放的,但用户可能已经启用了防火墙,所以需要确认。 接下来是添加端口使用firewall-cmd的--add-port参数,指定端口和协议。这里需要解释TCP和UDP的区别,用户可能不确定该用哪个,通常Web服务是TCP。临时添加和永久添加的区别也很重要,临时添加重启后会失效,所以必须提醒用户使用--permanent参数,并重载配置。 然后验证端口是否开放,用户可能需要确认操作是否成功,所以列出所有开放的端口或者检查特定端口是否在列表中是有必要的。这部分需要给出具体的命令示例。 可能用户还会遇到问题,比如服务没有运行,或者配置未重载,或者冲突的规则存在。需要考虑这些情况,并在注意事项中提到。另外,如果用户之前用的是iptables,可能需要禁用firewalld并安装iptables,但这种情况可能较少,不过还是应该提及。 最后,总结步骤,确保用户能够一步步跟着操作,同时提醒他们谨慎操作,避免安全风险。特别是开放端口可能带来的安全隐患,需要建议仅开放必要端口,并使用更严格的安全措施。</think>在 CentOS 7 中,防火墙默认使用 `firewalld` 服务管理。若需要开放某一端口(例如开放 TCP 端口 `8080`),可以按照以下步骤操作: --- ### **步骤 1:检查防火墙状态** 确认 `firewalld` 服务是否运行: ```bash systemctl status firewalld ``` - 如果未运行,启动并设置开机自启: ```bash systemctl start firewalld systemctl enable firewalld ``` --- ### **步骤 2:开放指定端口** #### 方法 1:直接添加端口 ```bash # 开放 TCP 8080 端口(临时生效,重启后失效) firewall-cmd --zone=public --add-port=8080/tcp # 永久开放端口(需重载防火墙配置) firewall-cmd --zone=public --add-port=8080/tcp --permanent ``` #### 方法 2:通过服务名称开放(如 HTTP/HTTPS) ```bash # 开放 HTTP (80) 和 HTTPS (443) 端口 firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --zone=public --add-service=https --permanent ``` --- ### **步骤 3:重载防火墙配置** 使永久规则生效: ```bash firewall-cmd --reload ``` --- ### **步骤 4:验证端口是否开放** ```bash # 查看所有已开放的端口 firewall-cmd --zone=public --list-ports # 检查指定端口是否开放 firewall-cmd --zone=public --query-port=8080/tcp ``` --- ### **注意事项** 1. **协议类型**:端口需指定协议(如 `tcp` 或 `udp`),例如 `3306/tcp`。 2. **临时 vs 永久**:未加 `--permanent` 的规则重启后会失效。 3. **安全风险**:开放端口可能带来安全隐患,建议: - 仅开放必要端口。 - 结合 IP 白名单限制访问(使用 `--add-rich-rule`)。 - 使用 SSH 密钥认证替代密码登录。 --- ### **扩展:其他常用命令** | 命令 | 说明 | |------|------| | `firewall-cmd --remove-port=8080/tcp --permanent` | 关闭指定端口 | | `firewall-cmd --list-services` | 查看已开放的服务 | | `firewall-cmd --get-active-zones` | 查看当前激活的防火墙区域 | --- ### **替代方案:使用 iptables** 如果不使用 `firewalld`,可改用传统 `iptables`: 1. 停止并禁用 `firewalld`: ```bash systemctl stop firewalld systemctl disable firewalld ``` 2. 安装 `iptables`: ```bash yum install iptables-services systemctl start iptables systemctl enable iptables ``` 3. 开放端口: ```bash iptables -I INPUT -p tcp --dport 8080 -j ACCEPT service iptables save ``` --- 通过上述步骤,即可在 CentOS 7 中安全地管理防火墙端口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值