硅云给云服务器CVM提供的Linux系统镜像默认已安装防火墙,当我们需要对外开放端口时,该如何操作?
硅云提供Linux系统包括CentOS、Ubuntu、Debian,本教程是针对CentOS系统的防火墙开放端口的操作方法。
CentOS系统是Linux家族中非常流行的一个发行版本,CentOS7出来后,有部分命令跟之前CentOS6系有所不同,这里列举下开放端口的命令
在CentOS7中,Firewall防火墙取代了早前的iptables防火墙,防火墙命令也不同,因此在检查前,需要先查询下到底使用的是哪种防火墙
检查使用哪种防火墙,先尝试执行
[root@localhost ~]# firewall-cmd --state
-bash: firewall-cmd: command not found
如上结果(command not found),表示firewall防火墙命令无法找到,说明该系统并没有安装firewall版防火墙。
同样的,如果执行命令
[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防火墙。
为了更好的演示,我们分别在已经安装了firewall防火墙、iptables防火墙的环境中进行如下操作演示。
Firewall防火墙命令
查看防火墙状态命令: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
iptables防火墙命令
在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端口入站规则,那么我们就可以进行操作了
iptables -D INPUT 3
操作之后,务必执行保存命令:
service iptables save
Centos如何开启ping ?
检查系统是否开启ping(ICMP_ipv4协议)的命令:
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通。