一、图形化添加
从安全中心,网络保护,高级配置,新建规则,建议只定义端口和协议,其它保持不动即可;
二、命令行添加
1、先以下命令看有没有冲突规则,有的话解决需解决冲突
sudo iptables --list-rules | grep '50001'
2、添加规则并查询是否添加成功
sudo iptables -A KSC_IN_PUBLIC_ALLOW -p udp -m multiport --dports 50001 -j ACCEPT
sudo iptables -A KSC_IN_PRIVATE_ALLOW -p udp -m multiport --dports 50001 -j ACCEPT
sudo iptables -A KSC_OUT_PRIVATE_ALLOW -p udp -m multiport --sports 50001 -j ACCEPT
sudo iptables -A KSC_OUT_PUBLIC_ALLOW -p udp -m multiport --sports 50001 -j ACCEPT
sudo iptables --list-rules | grep '50001'
3、备用命令------删除规则
sudo iptables -D KSC_IN_PRIVATE_ALLOW -p udp -m multiport --dports 50001 -j ACCEPT;
sudo iptables -D KSC_IN_PUBLIC_ALLOW -p udp -m multiport --dports 50001 -j ACCEPT;
sudo iptables -D KSC_OUT_PRIVATE_ALLOW -p udp -m multiport --sports 50001 -j ACCEPT;
sudo iptables -D KSC_OUT_PUBLIC_ALLOW -p udp -m multiport --sports 50001 -j ACCEPT;
此时,应用程序已经能通过防火墙并正常使用了,但是按照iptables 规范重启后防火墙规则自动失效。
三、防火墙规则自启动有效
麒麟官网给了以下方案:
实际上测试后发现依然无效,原因是iptables-restore未生效,查询debian相关内容后得出根本原因是:系统的网络管理转向了networkmanager作为网络服务导致,而这个是network服务的配置,目前放在/etc/NetworkManager/dispatcher.d/pre-up.d/里。
将图中第二步的/etc/network/if-pre-up.d/的路径变在/etc/NetworkManager/dispatcher.d/pre-up.d/里新建iptables脚本文件,最后放上iptables-restore < /etc/iptables/rules.v4并赋予可执行权限。
重启后发现默认该文件有执行权限,又被"麒麟安全授权认证"默认拦截,又用以下命令加白。
kysec_set -r -n exectl -v verified 文件路径
总结:加白规则对外不统一,任重而道远。