如何为在随机端口上运行的自定义程序启用Linux防火墙(ufw)

问题描述 投票:1回答:1

python中的书面程序,它选择可用于TCP和UDP通信的随机端口。如果我通过运行sudo ufw enable启用Linux防火墙(ufw)。我们可以通过以下方式允许任何端口sudo ufw allow port_number。由于程序可以在运行时获取任何随机端口,因此不能告诉ufw允许任何特定端口。有没有办法告诉ufw像Windows一样通过向ufw提供程序名称来允许prog访问任何随机端口。在Windows防火墙中,我们可以提供以下命令以允许访问myprog的所有端口

netsh advfirewall firewall add rule name=rule_name_udp dir=in action=allow protocol=UDP localport=any program=path/myprog.exe

是否可以通过启用ufw的自定义程序允许ufw访问udp / tcp通信?

感谢所有人。

linux ubuntu raspberry-pi firewall ufw
1个回答
0
投票

您可以将您的应用程序包装到systemd服务中,并使用启动后挂钩来调用额外的bash脚本,这会在防火墙上造成漏洞。

// path / to / python / app / assistant-ufw-hole-puncher

#!/bin/bash

#extra sleep for prespawn script
sleep 2

#punch holes for TCP ports
ports=`sudo netstat -ntlp 2>&1 |grep yourapp | sed -r 's/(.*:)([0-9]*)(\s.*)/\2/'|sort|uniq`
for port in $ports ; do
  sudo ufw allow $port
done

#punch holes for UDP ports
ports=`sudo netstat -nulp 2>&1 |grep yourapp | sed -r 's/(.*:)([0-9]*)(\s.*)/\2/'|sort|uniq`
for port in $ports ; do
  sudo ufw allow $port
done

另外,您可以在启动脚本之前生成此脚本,但您需要增加额外的睡眠时间以等待python脚本启动。

#!/bin/bash

/path/to/python/app/assistant-ufw-hole-puncher &
python ./your-app.py
© www.soinside.com 2019 - 2024. All rights reserved.