最新活动 七周年庆典

产品

硅云帮助文档中心

搜索文档

热门搜索词:

Linux/centos如何开放端口,firewall、iptables防火墙管理

更新时间:2022-01-02 15:17  版本:v3.8
分享到:
我要反馈 
收藏 我的收藏

CentOS 7系统默认的防火墙是Firewall,CentOS 6系统默认的防火墙是iptables。

背景

CVM云服务器安装的Linux系统镜像默认已安装防火墙,当我们需要对外开放端口时,该如何操作?

概述

Linux系统包括CentOS、Ubuntu、Debian等多个发行版本,本文档是针对CentOS系统的防火墙开放端口的操作方法。

检查防火墙类型

因在CentOS 7中,Firewall防火墙取代了早前的iptables防火墙,防火墙的命令也不同,因此在实际操作前,我们需要先查询下到底使用的是哪种防火墙。


检查使用哪种防火墙,先尝试执行 firewall-cmd --state

[root@localhost ~]# firewall-cmd --state
-bash: firewall-cmd: command not found


如上执行结果显示 command not found(译为未找到命令),说明该系统并没有安装firewall版防火墙。


同样的,如果执行命令 service iptables status

[root@localhost~]# service iptables status
Redirecting to /bin/systemctl status iptables.service
Unit iptables.service could not be found.


如上执行结果显示 Unit iptables.service could not be found(译为未找到iptables服务),说明系统并没有安装iptables防火墙。


为了更好的演示,我们分别在已经安装了firewall防火墙、iptables防火墙的环境中进行如下操作演示。


Firewall防火墙命令(CentOS 7)

查看防火墙状态命令:

firewall-cmd --state


如上执行结果显示 running,即表示防火墙处于运行状态;如果显示not running,则表示已安装防火墙但处于关闭状态。(如果显示其他错误,则表示未安装firewall防火墙)


以上结果为防火墙已启用,我们就可以查看放行的端口了。


查看已开放端口命令:(示例中的zone表示信任级别,使用public即可)

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

如上执行结果,当前已开放TCP 20、TCP 21、TCP 22、TCP 80、TCP 8888、TCP 39000到40000 端口。


添加端口命令:

如果你需要新增放行一个端口,只需要执行如下命令,

firewall-cmd --zone=public --add-port=443/tcp --permanent

(以上示例为放行TCP 443端口,也就是用于https协议的端口,其中参数 permanent 表示永久生效,即重启系统后会继续生效)


移除端口命令:

如果你需要取消某个已放行的端口,输入命令:

firewall-cmd --zone=public --remove-port=443/tcp --permanent


重载服务命令:

添加/移除某个端口设置可能并不会立即生效(可以通过查看已开放端口命令核对),如果设置并未生效,我们可以执行一次重载防火墙服务(可以理解为刷新配置),输入命令:

firewall-cmd --reload


iptables防火墙命令(CentOS 6)

在CentOS6系中,默认安装的是iptables防火墙。


查看防火墙状态命令:

[root@localhost ~]# service iptables status
iptables: Firewall is not running.

如上执行结果 Firewall is not running 表示iptables防火墙已经安装但是没有开启。


开启iptables防火墙命令:

[root@localhost ~]# service iptables start
iptables: Applying firewall rules:                         [  OK  ]

如上执行结果,iptables防火墙开启成功。


查看已开放端口命令:

iptables -L -n


开放端口命令:

以下示例为开放80端口,常用于http协议(开放某个端口即添加了一条开放该端口的规则),

iptables -I INPUT -p tcp --dport 80 -j ACCEPT


删除端口(删除规则,即禁用端口):

首先我们需要知道对应规则的编号,每条规则都有一个编号,以下是查看已有规则编号命令:

iptables -L -n --line-number


如下为执行结果:

num target  prot opt source        destination
1  DROP    tcp -- 0.0.0.0/0      0.0.0.0/0      tcp dpt:3306
2  DROP    tcp -- 0.0.0.0/0      0.0.0.0/0      tcp dpt:21
3  DROP    tcp -- 0.0.0.0/0      0.0.0.0/0      tcp dpt:80

我们可以看到多了 num 这一列, 这样我们就可以看到刚才添加的规则是对应的是编号3(放行80端口入站规则)。


如果此时想要删除80端口入站规则(规则编号为3),那么我们就可以进行操作了

iptables -D INPUT 3


操作之后,务必执行保存命令

service iptables save


开启ping(CentOS) 

注:硅云官方提供的Linux系统镜像默认已开启PING协议(ICMP协议)。

检查系统是否开启ping的命令:

ping又称作ICMP协议

cat /proc/sys/net/ipv4/icmp_echo_ignore_all

如以上执行结果为0,表示已开启ping,如为1,表示未开启ping。


开启ping的命令:

echo "0" >/proc/sys/net/ipv4/icmp_echo_ignore_all


除了系统中开启ping外,安全组也需放行ICMP/ipv4协议,这样公网IP才能ping通。

您对该文档有什么建议?

您对该文档的评分:

本文导航

背景

概述

检查防火墙类型

Firewall防火墙命令(CentOS 7)

iptables防火墙命令(CentOS 6)

开启ping(CentOS) 

搜索文档