CentOS7

firewalld(默认安装) 和 iptables 都不是防火墙,它们只是防火墙的管理程序

1. 防火墙的开启、关闭、禁用命令

  • 设置开机启用/禁用防火墙:systemctl enable/disable firewalld.service
  • 启动/关闭防火墙:systemctl start/stop firewalld
  • 检查防火墙状态:systemctl status firewalld

2. 使用firewall-cmd配置端口

  • 查看防火墙状态:firewall-cmd --state
  • 重新加载配置:firewall-cmd --reload
  • 查看开放的端口:firewall-cmd --list-ports
  • 开启防火墙端口:firewall-cmd --zone=public --add-port=9200/tcp --permanent
  • 命令含义:
  • –zone #作用域
  • –add-port=9200/tcp #添加端口,格式为:端口/通讯协议
  • –permanent #永久生效,没有此参数重启后失效
  • 注意:添加端口后,必须用命令firewall-cmd --reload重新加载一遍才会生效
  • 关闭防火墙端口:firewall-cmd --zone=public --remove-port=9200/tcp --permanent

Ubuntu

ubuntu的ufw与iptables 在Ubuntu系统进行安装的时候默认安装了ufw防火墙,如果没有安装可以使用命令sudo sudo apt-get install ufw进行安装

1. 查看防火墙的状态

sudo ufw status

系统提示: “Status: inactive”状态:不活跃。表示没有开启防火墙,并不是没有安装防火墙;开启后提示Status: active并显示开放的端口

2. 关闭防火墙

sudo ufw disable

PS:sudo ufw default deny 拒接所有外来访问,本机能正常访问外部

3. 开启防火墙

sudo ufw enable

注意:Command may disrupt existing ssh connections. Proceed with operation (y|n)?

表示:命令可能会中断现有的ssh连接。继续操作(y|n)?

在这里通常会有些错觉,22端口没有开放,但是依然是连接状态,这是系统做的人性化优化,便于远程管理服务器,虽然22端口没有开放,但是用户通过当前的连接开启防火墙后,该连接依然处于连接状态,只要不关闭当前连接还是可以在当前连接中正产操作的。如果是重新开启一个连接是连不上的

在windows上进行telnet也是不通的

虚拟机的redis怎么关闭自启动 虚拟机如何关闭端口_加载


必须马上放开22端口

4. 开放/关闭普通端口

SSH端口无需指定协议

#开放22端口
sudo ufw allow 22
#重启防火墙生效
sudo ufw reload
#查看22端口的监听状态
sudo netstat -tunlp | grep 22
#关闭22端口
sudo ufw delete allow 22
#重启防火墙生效
sudo ufw reload

5. 开放/关闭指定协议的端口

sudo ufw allow 8080/tcp
sudo ufw reload
sudo ufw status
sudo ufw delete allow 8080/tcp
sudo ufw reload
sudo ufw status

6. 开放限定ip地址端口

以下操作均需要重启防火墙 sudo ufw reload

  • 开放指定ip所有操作 sudo ufw allow from 192.168.121.1
  • 关闭指定ip所有操作 sudo ufw delete allow from 192.168.121.1
  • 开放指定ip对应端口操作 sudo ufw allow from 192.168.121.2 to any port 3306
  • 关闭指定ip对应端口操作 sudo ufw delete allow from 192.168.121.2 to any port 3306