介绍

  • Linux下使用的一款iptables规则管理工具,一般在非红帽系Linux上使用较多
  • 与红帽系OS上的firewalld服务功能相同
  • 这里有必要说明的一点就是无论是firewalld还是iptables服务,或者是这里说的ufw,它们自身都不具备防火墙的能力,而iptables才是真正的防火墙,是在Linux网络里本身就实现的,通过iptables规则进行工作.
    而firewalld、iptables服务、ufw等都是iptables规则的管理工具,也就是说即使没有这几个服务,系统里防火墙功能都是存在的
  • 综上,如果你熟悉使用iptables规则,那么完全可以不依赖上述工具,自己编写规则即可!!!

参考

UFW 简单防火墙安装、配置、禁 Ping
debian让ufw日志不要输出在messages和dmesg
在Ubuntu中用UFW配置防火墙

基本配置

  • 配置文件
    ufw的配置文件在/etc/ufw/目录下,所有的初始规则都在这里
    自身动作的配置在/etc/default/ufw文件里,这里可以配置是否管理ipv6等自身参数配置
    修改完成配置后需要重新加载进行生效
    ufw reload
  • 日志记录
    ufw默认会通过rsyslog日志分发服务以及dmesg中记录日志,而这个日志量是非常大的,尤其是网络比较繁忙的时候
    • 关闭syslog日志中的ufw日志打印
      将配置文件/etc/rsyslog.d/20-ufw.conf中的最后的& stop取消注释,然后通过下面命令重启rsyslog服务即可
      systemctl restart rsyslog
      close ufw log to rsyslog
    • 关闭整个ufw的日志
      上面的方法只能不让ufw输出日志到syslog里,但是dmesg还是会打印很多,这里参考网友的方式直接将ufw的日志关闭即可
      ufw logging off
      logging的参数有full high low medium off on
      默认打开的级别是low
  • 使能
    ufw enable
    这里要注意,ufw的默认规则中是没有打开22端口的,所以需要在打开前先配置ssh服务的规则,否则容易造成无法链接的情况
  • 查询状态
    ufw status
  • 关闭
    ufw disable
  • 重置
    ufw reset
  • 帮助
    ufw help

常用配置规则命令

添加规则

  • 允许22端口通过
    ufw allow 22
  • 将对应规则插入到第一条
    ufw insert 1 allow 22
  • 查看可以操作的服务
    ufw app list
  • 允许ssh服务通过
    ufw allow OpenSSH
    这里如何知道服务到底用的哪个端口呢?ufw是从/etc/services这个文件中获取的
  • 允许22-30的所有端口通过
    ufw allow 22:30
  • 放通ipv4的22端口的tcp协议
    ufw allow to 0.0.0.0/0 port 22 proto tcp
  • 放通从192.168.0.89的22端口的tcp协议
    ufw allow from 192.168.0.89 to any port 22 proto tcp
  • 放通从192.168.0.0/24网段的22端口的tcp协议
    ufw allow from 192.168.0.0/24 port 22 proto tcp
  • 禁止从192.168.0.123的ip到192.168.0.120的所有报文
    ufw deny from 192.168.0.123 to 192.168.0.120

删除规则

  • 按添加规则的命令进行删除
    就是在你添加规则命令的前面加个delete即可,例如删除22端口通过的规则
    ufw delete allow 22
    删除ssh服务通过的规则
    ufw delete allow OpenSSH
    当然如果你不知道这个规则添加的详细命令,可以自己撰写命令去删除,只要你这个命令能够添加这个规则,那么就能删除,自行体会!!!
  • 按照命令编号进行删除
    通过该命令显示每个规则的编号
    ufw status numbered
    然后通过编号进行规则的删除,例如删除1号规则
    ufw delete 1
  • 如果要全部删除,那么直接reset即可

日志详情

  • [UFW BLOCK]:这是记录事件的描述开始的位置。这里,它表示阻止了连接
  • IN:如果它包含一个值,那么代表该事件是传入事件
  • OUT:如果它包含一个值,那么代表事件是传出事件
  • MAC:目的地和源 MAC 地址的组合
  • SRC:包源的 IP
  • DST:包目的地的 IP
  • LEN:数据包长度
  • TTL:数据包 TTL,或称为 time to live。 在找到目的地之前,它将在路由器之间跳跃,直到它过期
  • PROTO:数据包的协议
  • SPT:包的源端口
  • DPT:包的目标端口
  • WINDOW:发送方可以接收的数据包的大小
  • SYN URGP:指示是否需要三次握手,0 表示不需要