/ firewall

firewall

firewall —— CentOS7 的防火墙

添加额外的端口

通常阿里云或是腾讯云会单独有一个安全组的东西,来充当第二层防火墙,例如服务器需要开放 Redis 的服务(端口 6379)必须在系统的 firewall 和 云的安全组都开放 6379 端口。请确保按如下步骤操作:

服务器端的配置:

  1. 确认防火墙状态 systemctl status firewalld.service,关闭 或者 开放需要的端口。
  2. 确认 6379 端口有监听 netstat -anp | grep 6379

正常应该显式如下:

netstat -anp | grep 6379
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      - 

客户端的配置:

  1. 确认服务端的 6379 端口是打开的:nmap 39.106.38.252 -p 6379
  2. nmap 默认只扫描常用端口,redis 的端口不在此列,需要显式指定端口来确认是否开放。

正常情况应该显示如下:

➜  ~ nmap 39.106.38.252 -p 6379                                             

PORT     STATE    SERVICE
6379/tcp open     unknown

然后通过 redis-cli 连接即可。

firewall 的操作方法

首先查看防火墙状态,

sudo systemctl status firewalld

如果没有运行,则启动它

sudo systemctl start firewalld

查看才当前开放的服务或端口:

➜  ~ sudo firewall-cmd --list-services
dhcpv6-client http ssh https
➜  ~ sudo firewall-cmd --list-ports   
80/tcp

如果没有开发相应的服务端口,可以使用 firewall-cmd 命令配置规则。

SSH

开放 ssh 默认端口(22):

sudo firewall-cmd --permanent --add-service=ssh

如果 ssh 端口被改为 4444,则执行:

sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --permanent --add-port=4444/tcp

HTTP

开放 http(80):

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

HTTPS

开放 https(443):

sudo firewall-cmd --permanent --add-service=https

其他常用服务端口

如果需要开启其他服务端口,可以查看可用的服务名:

sudo firewall-cmd --get-services

操作完成后,可以查看下当前启用的规则:

sudo firewall-cmd --permanent --list-all

应用新配置

如果一切 ok,则重启服务让规则生效;

sudo firewall-cmd --reload

如果经过测试,一切都如预期的那样工作,您应该确保防火墙将在启动时启动:

sudo systemctl enable firewalld

请记住,您必须显式地打开防火墙(包括服务或端口),以便以后可以配置任何附加服务。

如果用的 阿里云 或 腾讯云,还需要为相应端口额外添加安全策略。