好吧,我是这方面的新手,我一直在寻找解决问题的方法,重置并再次执行,指定端口和协议,使用协议进行端口进出,但我做不到。
信息
问题:防火墙阻止了一些(不是全部)但确实阻止了部分进入我配置为允许进入的 TCP 和 UDP 端口的 IP,我在系统日志中看到带有标记的错误[UFW BLOCK] SPT=45000 DPT=1563
...
我想要的是:仅开放端口 ssh、http 以及范围从 1500 到 1600 的 tcp 和 udp...
我如何配置它
我的命令配置防火墙以允许传入和传出连接
ufw allow 22
ufw allow 80
ufw allow 1500:1600/tcp
ufw allow 1500:1600/udp
ufw 防火墙的状态
root@u19312139:~# ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
80 ALLOW Anywhere
1500:1600/tcp ALLOW Anywhere
1500:1600/udp ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
1500:1600/tcp (v6) ALLOW Anywhere (v6)
1500:1600/udp (v6) ALLOW Anywhere (v6)
系统日志
笔记:命令可实时查看系统日志中仅包含“UFW”的行
tail -f /var/log/syslog | grep "UFW"
我的输出
[UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=189.173.30.x DST=xx:xx:xx:xx LEN=52 TOS=0x00 PREC=0x00 TTL=53 ID=52308 DF PROTO=TCP SPT=52572 DPT=1557 WINDOW=1445 RES=0x00 ACK FIN URGP=0
[UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=189.173.30.x DST=xx:xx:xx:xx LEN=52 TOS=0x00 PREC=0x00 TTL=53 ID=52309 DF PROTO=TCP SPT=52572 DPT=1557 WINDOW=1445 RES=0x00 ACK FIN URGP=0
[UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=189.173.30.x DST=xx:xx:xx:xx LEN=52 TOS=0x00 PREC=0x00 TTL=53 ID=12518 DF PROTO=TCP SPT=62545 DPT=80 WINDOW=1445 RES=0x00 ACK FIN URGP=0
[UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=189.173.30.x DST=xx:xx:xx:xx LEN=52 TOS=0x00 PREC=0x00 TTL=53 ID=52310 DF PROTO=TCP SPT=52572 DPT=1557 WINDOW=1445 RES=0x00 ACK FIN URGP=0
[UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=189.173.30.x DST=xx:xx:xx:xx LEN=52 TOS=0x00 PREC=0x00 TTL=53 ID=12519 DF PROTO=TCP SPT=62545 DPT=80 WINDOW=1445 RES=0x00 ACK FIN URGP=0
[UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=189.173.30.x DST=xx:xx:xx:xx LEN=52 TOS=0x00 PREC=0x00 TTL=53 ID=52311 DF PROTO=TCP SPT=52572 DPT=1557 WINDOW=1445 RES=0x00 ACK FIN URGP=0
[UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=189.173.30.x DST=xx:xx:xx:xx LEN=52 TOS=0x00 PREC=0x00 TTL=53 ID=12520 DF PROTO=TCP SPT=62545 DPT=80 WINDOW=1445 RES=0x00 ACK FIN URGP=0
[UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=189.173.30.x DST=xx:xx:xx:xx LEN=52 TOS=0x00 PREC=0x00 TTL=53 ID=52312 DF PROTO=TCP SPT=52572 DPT=1557 WINDOW=1445 RES=0x00 ACK FIN URGP=0
[UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=187.237.167.x DST=xx:xx:xx:xx LEN=40 TOS=0x00 PREC=0x00 TTL=115 ID=2280 DF PROTO=TCP SPT=42542 DPT=1563 WINDOW=10880 RES=0x00 ACK URGP=0
[UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=189.173.30.x DST=xx:xx:xx:xx LEN=52 TOS=0x00 PREC=0x00 TTL=53 ID=12521 DF PROTO=TCP SPT=62545 DPT=80 WINDOW=1445 RES=0x00 ACK FIN URGP=0
[UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=187.210.142.x DST=xx:xx:xx:xx LEN=40 TOS=0x00 PREC=0x00 TTL=117 ID=6018 PROTO=TCP SPT=48744 DPT=1563 WINDOW=8160 RES=0x00 ACK URGP=0
笔记:
- SPT=是源端口?。
- DPT 是端口,对吗?但是它是 15xx 范围,而我放入防火墙允许 1500 到 1600。
- 我该怎么做才能解决这个问题,我想我做得对,但是显示
[UFW BLOCK]
ufw 阻止了来自某些 ips 的连接...
答案1
查看规则并将其与日志进行比较,会引发一些问题。看起来您正在尝试控制往返于接口的所有流量。这里的问题是,如果将阻止的数据包与防火墙列表进行比较,则必须找到数据包匹配的规则。所有被阻止的数据包的目标端口都在您的列表中,但源端口不在列表中。如果我的计算机发起与您计算机上的标准 http Web 服务器的通信,则我的目标端口是端口 80,而我的源端口是某个随机数,可能在 50,000+ 范围内。假设我的端口是 62545。当您的 Web 服务器尝试回复我时,需要允许它从您的接口的端口 80 发出,目的地是 62545。在您的允许输出列表中,哪个位置允许将数据包发送到 62545?如果不匹配,则数据包将被阻止。如果您查看显示的倒数第二个日志条目,就会发现这正是我刚刚解释的情况。您的列表中没有任何地方允许数据包发送到 62545。
这留下了两件事需要考虑。第一,防火墙是有状态的,这意味着如果您从接口向目标端口(例如 80)发起通信,则将允许返回数据包。如果不是首先从内部发起,则相同的数据包无法从外部进入您的接口。我认为您可能试图控制太多的出站流量。除非,第二件事,您正在控制接口之间的路由。如果是这种情况,则规则设置需要语法中的更多信息(从命令行输入“man ufw”以了解详细信息)。我通常输入详细规则,如前所述,但仅在传入端,因为我不在接口之间路由。如果出现有关 UFW 配置的问题,详细规则使以后重新评估规则变得更容易。如果您没有路由,请尝试删除允许规则,看看问题是否得到解决。我可能是错的,但这就是我解释 UFW 的方式以及我成功使用它的方式。祝你好运。希望这能有所帮助。
答案2
对于那些使用 iptables GPS 跟踪的人,我使用此解决方案解决了我的允许端口范围问题......
一些 GPS 跟踪在短时间内向服务器发送大量报告...并且它会生成无效数据包,但我们希望允许它们全部...
例子:
在文件中添加规则之前before.rules
我删除了允许范围端口ufw
ufw delete allow 1500:1600/tcp
ufw delete allow 1500:1600/udp
然后在添加所需的允许端口/etc/ufw/before.rules
之前进行编辑......drop INVALID Packets
# quickly process packets for which we already have a connection
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# these ports sometimes generate invalid packets, just accept everything for now
-A ufw-before-input -p tcp -m multiport --dports 1500:1600 -j ACCEPT
-A ufw-before-input -p udp -m multiport --dports 1500:1600 -j ACCEPT
# drop INVALID packets (logs these in loglevel medium and higher)
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
我添加了允许使用 tcp/udp 协议的 IP 范围的代码,之后执行
ufw reload
看看它是否会改变...iptables -S
看看iptables -L
注意:允许特定端口有问题,
例如:如果我想在特定端口上允许一系列端口,但 xx 端口显示标签UFW BLOCK
,syslog
则tail -f /var/logs/syslog | grep "UFW BLOCK"
需要在/etc/ufw/before.rules
和 中添加该端口/etc/ufw/before6.rules
仅补充您遇到的问题...不是全部...
UFW BLOCK
对于那些拥有诸如ACK FIN
和之类的标签的人来说RST