一、介绍
防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。
zone
Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别
drop: 丢弃所有进入的包,而不给出任何响应
block: 拒绝所有外部发起的连接,允许内部发起的连接
public: 允许指定的进入连接
external: 同上,对伪装的进入连接,一般用于路由转发
dmz: 允许受限制的进入连接
work: 允许受信任的计算机被限制的进入连接,类似 workgroup
home: 同上,类似 homegroup
internal: 同上,范围针对所有互联网用户
trusted: 信任所有连接
过滤规则
source: 根据源地址过滤
interface: 根据网卡过滤
service: 根据服务名过滤
port: 根据端口过滤
icmp-block: icmp 报文过滤,按照 icmp 类型配置
masquerade: ip 地址伪装
forward-port: 端口转发
rule: 自定义规则
其中,过滤规则的优先级遵循如下顺序
source
interface
firewalld.conf
二、启停命令
Linux中有两种防火墙软件,ConterOS7.0以上使用的是firewall,ConterOS7.0以下使用的是iptables
#安装防火墙
yum install firewalld #防火墙
yum install firewall-config #图形化界面
#启动防火墙
systemctl start firewalld
#设置开机自启
systemctl enable firewalld
# 查看防火状态
systemctl status firewalld 或 firewall-cmd --state
service iptables status
# 关闭防火墙
systemctl stop firewalld
service iptables stop
# 停止自启
systemctl disable firewalld #禁止开机自启
chkconfig iptables off
# 重启防火墙
firewall-cmd --reload
service iptables restart
# 查看版本
firewall-cmd --version
三、放行规则
#添加端口
firewall-cmd --zone=public --add-port=6666/tcp --permanent
#永久添加80端口
firewall-cmd --add-port=80/tcp --permanent
#永久移除80端口
firewall-cmd --remove-port=80/tcp --permanent
#刷新生效
firewall-cmd --reload
#查看已经开放的端口
firewall-cmd --list-ports
#查看防火墙放行列表
firewall-cmd --list-all
通过firewall-cmd命令放行UDP端口,示例如下:
sudo firewall-cmd –zone=public –add-port=[端口号]/udp –permanent
sudo firewall-cmd –reload
四、Debian/Ubuntu系统中安装和配置UFW
UFW 基本用法
首先,用如下命令来检查下系统上是否已经安装了 UFW 。
$ sudo dpkg --get-selections | grep ufw
如还没有安装,可以使用 apt 命令来安装,如下所示:
$ sudo apt-get install ufw
在使用前,你应该检查下 UFW 是否已经在运行。用下面的命令来检查。
$ sudo ufw status
如果你发现状态是: inactive , 意思是没有被激活或不起作用。
启用/禁用 UFW
要启用它,你只需在终端下键入如下命令,即可在系统启动时启用和激活防火墙
$ sudo ufw enable
要禁用,只需输入:
$ sudo ufw disable
列出当前UFW规则
在防火墙被激活后,你可以向里面添加你自己的规则。如果你想看看默认的规则,可以输入。
$ sudo ufw status verbose
输出样例:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
添加规则
允许入站(allow)
默认情况,没有允许就是拒绝(入站),使用 ufw allow <端口>
来添加允许访问的端口或协议。
ufw allow ssh #添加22端口
ufw allow http #添加80端口
ufw allow https #添加443端口
ufw allow 2333/tcp #添加2333端口,仅TCP协议
ufw allow 6666/udp #添加6666端口,仅UDP协议
ufw allow 8888:9999 #添加8888到9999之间的端口
拒绝访问(deny)
使用 ufw deny <端口>
来添加拒绝入站的端和协议,与添加允许的类似。
删除规则
先使用 ufw status
查看规则,再使用 ufw delete [规则] <端口>
来删除规则。
ufw delete allow 2333/tcp
如果你有很多条规则,使用 numbered
参数,可以在每条规则上加个序号数字。
然后使用 ufw delete <序号>
来删除规则。
root@p3terx:~# ufw status numbered #列出规则,并加上序号。
Status: active
To Action From
-- ------ ----
[ 1] 20,21,22,80,888,8888/tcp ALLOW IN Anywhere
[ 2] 39000:40000/tcp ALLOW IN Anywhere
[ 3] 8896/tcp ALLOW IN Anywhere
[ 4] 8896/udp ALLOW IN Anywhere
[ 5] 443/tcp ALLOW IN Anywhere
[ 6] 20,21,22,80,888,8888/tcp (v6) ALLOW IN Anywhere (v6)
[ 7] 39000:40000/tcp (v6) ALLOW IN Anywhere (v6)
[ 8] 8896/tcp (v6) ALLOW IN Anywhere (v6)
[ 9] 8896/udp (v6) ALLOW IN Anywhere (v6)
[10] 443/tcp (v6) ALLOW IN Anywhere (v6)
root@p3terx:~# ufw delete 4 #删除上面的第4条规则
Deleting:
allow 8896/udp
Proceed with operation (y|n)? y #最后会询问你是否进行操作
以上都是一些简单常用的一些命令,想要深入了解,可以输入 man ufw
查看 ufw 用户手册。
评论区