介绍 Ubuntu 的默认防火墙配置工具是 ufw
,是为了简化 iptables
防火墙配置而开发, ufw
提供了一种友好的方式来创建基于IPv4或IPv6主机的防火墙。一般情况下系统默认禁用UFW。 Gufw 是一个 ufw 的图形界面版本。基本的语法和一些示例 默认规则适用于普通家庭用户
当您打开UFW时,它使用一组默认规则(配置文件),所有“传入”都被拒绝,然后用户再定义一些例外的端口或应用,就差不多了 启用和禁用 启用UFW 检查UFW的状态 请注意,默认情况下,deny正在应用于传入。有一些例外,可以在此命令的输出中找到: sudo ufw show raw
您也可以通过读取 /etc/ufw 中的规则文件(后缀名:.rules),来查看防火墙规则。 禁用UFW 允许和拒绝(特定规则) 允许 1 sudo ufw allow <port>/<optional: protocol>
示例 允许在端口53上传入tcp和udp数据包 允许端口53上的传入tcp数据包 允许端口53上的传入udp数据包 拒绝 1 sudo ufw deny <port>/<optional: protocol>
示例 拒绝端口53上的tcp和udp数据包 拒绝端口53上的传入tcp数据包 拒绝端口53上传入的udp数据包 删除现有规则 要删除规则,只需在原始规则前加上删除。 例如,如果原始规则是: 用这一条命令来删除它1 sudo ufw delete deny 80/tcp
服务 您也可以允许或拒绝服务名称,因为ufw会从从 /etc/services读取服务名称。
按服务名称允许 1 sudo ufw allow <service name>
示例 允许ssh 按服务名称拒绝 1 sudo ufw deny <service name>
示例 拒绝ssh Status 1 2 sudo ufw status Status: inactive
日志 要启用日志记录,请使用: sudo ufw logging on
要禁用日志记录,请使用:sudo ufw logging off
高级语法 您还可以使用更全面的语法,指定源和目标地址,端口和协议。
允许访问 按特定IP允许: 1 sudo ufw allow from <ip address>
示例 允许来自207.46.232.182的数据包1 sudo ufw allow from 207.46.232.182
允许子网你也许会使用网关来配置
1 sudo ufw allow from 192.168.1.0/24
允许特定端口,IP地址 1 sudo ufw allow from <target> to <destination> port <port number>
示例 允许使用TCP访问端口22的IP地址192.168.0.41 sudo ufw allow from 192.168.0.4 to any port 22
允许特定端口,IP地址和协议 1 sudo ufw allow from <target> to <destination> port <port number> proto <protocol name>
示例 允许使用 TCP 访问端口22的IP地址192.168.0.41 sudo ufw allow from 192.168.0.4 to any port 22 proto tcp
禁用 ping 默认允许ping,如果要禁用 ping, 您可以在 /etc/ufw/before.rules
里面删除以下行 1 2 3 4 5 6 -A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT -A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT -A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT -A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT -A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
或者把 ACCEPT 修改为 DROP
1 2 3 4 5 6 -A ufw-before-input -p icmp --icmp-type destination-unreachable -j DROP -A ufw-before-input -p icmp --icmp-type source-quench -j DROP -A ufw-before-input -p icmp --icmp-type time-exceeded -j DROP -A ufw-before-input -p icmp --icmp-type parameter-problem -j DROP -A ufw-before-input -p icmp --icmp-type echo-request -j DROP
拒绝访问 按特定IP拒绝 1 sudo ufw deny from <ip address>
示例 阻止来自207.46.232.182的数据包:1 sudo ufw deny from 207.46.232.182
通过特定端口和IP地址拒绝 1 sudo ufw deny from <ip address> to <protocol> port <port number>
示例 拒绝所有协议的端口22的IP地址192.168.0.1访问1 sudo ufw deny from 192.168.0.1 to any port 22
使用规则的编号进行管理 显示规则的顺序和ID号 1 sudo ufw status numbered
编辑编号规则 删除编号规则 然后,您可以使用该号码删除规则。这将删除第一个规则,规则将向上移动以填充列表。 插入编号规则 1 sudo ufw insert 1 allow from <ip address>
高级示例 阻止从192.168.0.1和192.168.0.7访问端口22,但允许所有其他192.168.0.x IP使用tcp访问端口22 1 2 3 sudo ufw deny from 192.168.0.1 to any port 22 sudo ufw deny from 192.168.0.7 to any port 22 sudo ufw allow from 192.168.0.0/24 to any port 22 proto tcp
这将特定规则放在第一位,将通用第二位放在第二位。一旦规则匹配,其他规则将不会被匹配. 因此您必须首先列出特定规则。 ‘’’随着规则的变化,您可能需要删除旧规则,以确保按照正确的顺序放置新规则。
阻止访问端口22到192.168.0.3以及192.168.0.1和192.168.0.7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 sudo ufw delete allow from 192.168.0.0/24 to any port 22 sudo ufw status Firewall loaded To Action From -- ------ ---- 22:tcp DENY 192.168.0.1 22:udp DENY 192.168.0.1 22:tcp DENY 192.168.0.7 22:udp DENY 192.168.0.7 sudo ufw deny 192.168.0.3 to any port 22 sudo ufw allow 192.168.0.0/24 to any port 22 proto tcp sudo ufw status Firewall loaded To Action From -- ------ ---- 22:tcp DENY 192.168.0.1 22:udp DENY 192.168.0.1 22:tcp DENY 192.168.0.7 22:udp DENY 192.168.0.7 22:tcp DENY 192.168.0.3 22:udp DENY 192.168.0.3 22:tcp ALLOW 192.168.0.0/24
如果你只是添加拒绝规则,那么 allow 的优先级就会超过它并被应用.
解释日志条目 根据对报文的回复 SPT和DPT值以及SRC和DST值通常是分析防火墙日志时要关注的值。
伪日志条目 1 Feb 4 23:33:37 hostname kernel: [ 3529.289825] [UFW BLOCK] IN=eth0 OUT= MAC=00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd SRC=444.333.222.111 DST=111.222.333.444 LEN=103 TOS=0x00 PREC=0x00 TTL=52 ID=0 DF PROTO=UDP SPT=53 DPT=36427 LEN=83
Date:查看日期和时间是一种很好的做法。如果事情发生故障或时间块丢失,那么攻击者可能会破坏您的日志。
hostname:服务器的主机名
uptime:正常运行的时间
Logged Event:记录事件的简短描述;例如[UFW BLOCK]
IN:如果有,则事件是传入事件
OUT:如果有,则事件是传出事件。
MAC: 这提供了目标MAC,源MAC和EtherType字段的14字节组合,遵循以太网II报头中的顺序。见 以太网帧 和 EtherType 了解更多信息。
[UFW BLOCK]:这是记录事件的描述开始的位置。在此例中,它表示阻止了连接。 IN:如果它包含一个值,那么代表该事件是传入事件 OUT:如果它包含一个值,那么代表事件是传出事件 MAC:目的地和源 MAC 地址的组合 SRC:包源的 IP DST:包目的地的 IP LEN:数据包长度 TTL:数据包 TTL,或称为 time to live。 在找到目的地之前,它将在路由器之间跳跃,直到它过期。 PROTO:数据包的协议 SPT:包的源端口 DPT:包的目标端口 WINDOW:发送方可以接收的数据包的大小 SYN URGP:指示是否需要三次握手。 0 表示不需要。 参见 UFW 本文标题: UFW 的简单使用
文章作者: IITII
发布时间: 2019年08月02日 - 12:08
最后更新: 2019年08月02日 - 13:08
原始链接: https://iitii.github.io/2019/08/02/1/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。