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也是不通的
必须马上放开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