-
-
Notifications
You must be signed in to change notification settings - Fork 305
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Restore old Portmaster Incoming Rules behavior #905
Comments
Hey there, thanks for voicing your concerns and thoroughly documenting your case. I am very sorry this broke your use case and has been frustrating for you! This is not what we intended.
Let me start by pointing out that you are using Portmaster outside of the currently officially supported use cases: #166.
Network Noise holds incoming connections that no process is listening for.
I believe it still is.
Adapting to different environments will be solved in a different way in the future.
The global incoming rules still apply. You just have to disable Force Block Incoming Connections on the apps where you need it.
Yes, this is helpful for most people. Please elaborate on your use case how you intend to use this feature.
Portmaster is still in "Alpha", even if it feels that way. This lets us move forward quickly. There was a migration warning on the upgrade to make you aware of the change.
Can't follow here. Please elaborate.
We actually took a decent amount of time to think about and think this change will benefit a lot of users who are not technically adept enough to easily understand how rules work.
Consumer apps and most professional apps do not need incoming connections.
Referencing #166 again.
I believe it actually makes using these features a lot more secure, as it is harder to misuse them. If you allow one app to have incoming connections, this is what you want. If the app is LAN only, just flip the Force Block Internet Access switch. This is a lot easier to do than using rules and will make most users make more secure settings.
I'm sorry this has been a frustrating experience for you. We had hoped that our prominent use of the "Portmaster is in Alpha" label would have created more caution for such cases.
If you take a moment to reflect on that, you will quickly realize that this is a childish threat and we don't owe you shit. Neither do you owe us shit. If Portmaster is not a good fit for you anymore, this is unfortunate. I'm sure your friends can evaluate this themselves. In Closing: This change was done to help non-technical users to more easily work with Portmaster and improve their experience, ultimately making them safer and more private, which is our dedicated goal. We are sorry this change has negatively affected you. |
Here's a proposal for a way to fix the
Here's how I was using Portmaster: For incoming connections, I only used global rules. For outgoing connections, I used per-app blocking of certain domains to prevent certain apps calling home, but I only did that for 1 app, so it was manageable. With the proposed system, people could enjoy both workflows: Go into an app and do a blanket "allow all incoming connections" if they want. Go into an app and add specific rules if they want. Or go global and write global incoming rules that apply to the entire system if they prefer working the way all other firewalls do (that's me). Looks like win-win in my opinion. Do you have any other solutions except the one I just proposed, which would achieve the same solution of making it easy to manage "Network Noise" and allowing port/IP traffic in a proper fashion? Since this is Alpha software, there needs to be iterations on the design. The new system doesn't feel good at all. It's very limiting and clunky. A system which allows global and per-app rules to co-exist and allows global rules to be truly global (always active) would be the best solution. That way, Portmaster is both a normal firewall (global rules) and an application-level firewall (per-app blocking). It's clear that the new design needs iterations and reworking until it's convenient. At the moment, Portmaster is too much of a hassle. By the way, I know that my tone was bad in my original message, and I apologize. But calling it a "childish threat and we don't owe you shit" and brushing off the situation as "you're using it wrong" didn't help restore any faith. Perhaps you just misunderstood what the issue is. What did help though, is that you tried to give a detailed reply, so I'll say overall I haven't gained or lost any faith in Safing. I'll wait and see if this can be solved in any way with your new system. For now, I'll disable Portmaster and enable firewalld again, but I've kept the app and config if there will be a way to fix it. |
@dhaavi Here's a look at my global Incoming Rules. It was an elegant way to configure Portmaster. I only used the per-app clunkiness when blocking outgoing connections from specific applications (exactly what an application-level firewall is useful for). The rules, especially the Upon further reflection, I realize that it will probably take a long time for Portmaster to resolve the concepts of a traditional global firewall vs per-application toggles and rules, and which should have priority over which, etc. The old system you had worked really well. But the new state is a mess, with global rules basically being dead. Perhaps the easiest solution would be to allow professionals to do the following:
I think those two steps would restore the behavior of previous Portmaster versions... I am going to try it now. |
Alright, I am trying the following. Hopefully this brings back the great old system where global rules took effect for all applications, and per-application rules were added after the global rules to allow per-app changes. If this works, then the only remaining awful thing is the weekly nagging. Edit: This seems to work. It may be killing per-app incoming rules since the |
We realize that and there will be a change in the near future.
I'm ready to listen (or read, in this case).
I understand. Thank you for elaborating.
The toggles set the scene, the rules specify the details.
Well. I think finding out which ports an app needs is a lot of work for non-technical people. They can just use the toggle and whatever port the app needs is allowed. This is just thinking about the problem the other way around. And yes, it is different that other firewalls. But we're not building yet another boring firewall after all. ;)
I see we have different opinions on this.
This breaks with the model how all these settings are inherited and will be very confusing.
Yes, this would be a nice thing to do, but we currently don't have a way to do that easily.
If you are configured your rules just for the VMs, can't you just add them all to the "Network Noise" app, as their connections will never be attributed anyway?
As stated before, this breaks the inheritance model and would cause confusion.
I think what you described below is a good solution.
Global rules are active, but the force blocks still serve as an override or safeguard.
I did not mean to "brush off the situation" - sorry if this is what you interpreted. I did and am still trying to get to the bottom of the issue.
I think this is a good approach.
Correct. This will effectively get you the behavior from before the change. |
By default, KVM creates a virtual network adapter called a "Bridge", and creates a DHCP+NAT server on that adapter, which the guests then use as "their router". This is done for security, since it means that the guests cannot connect directly to the physical network. Everything is translated via NAT so that the guest is isolated and cannot be seen or talk to the real network, and can only access the internet (via the host translating things for the guest). :) In Portmaster, that's what shows up as "Network Noise" on the Here's the bridge adapter KVM uses (on the host):
The only alternative is to still use a bridge adapter, but removing the NAT/DHCP server, and instead bridging it directly onto the physical network, so that the guest talks directly to the real router and is visible to all real machines on your real network. Doing that might bypass Portmaster's rules, but I am not sure about that. It's undesirable though, since it breaks guest isolation and opens up risks. So I'll stick with the default NAT bridge. :)
That's true... when I think about it more, you have a point that writing rules is difficult for people who don't know much about networking. Which is probably why Fedora/RedHat Enterprise Linux ships with that I realize that this is just the first version of several steps towards an easier firewall for most people. I overreacted because my system broke pretty severely and it took hours to figure out that it was from Portmaster... so I was in a terrible mood. But I can see uses for your ideas too, and I think that your design ideas will appeal to a lot more people than the ones who want a "professional firewall" like me. :P Furthermore, since we have figured out a workaround, it looks like I can still stay with Portmaster and just configure it in "pro mode". :)
Yes, please! That would help a lot. Getting system notifications to "disable your rules please" once a week would annoy me so much. ;) Speaking of the Developer Interface mode, I'm not sure if it's fixed now, but I'll just casually mention that there were a lot of problems with switching modes when I first installed Portmaster (2 months ago now, I guess). The issue was as follows:
Anyway, back to the topic... :)
That is great news! I have tried it and the VMs got their internet connection back. The global rules are active. I like it! I have a few small concerns:
Hopefully this architecture (or a similar one) would solve everything. Portmaster could then be "for everyone" and satisfy all needs from basic to advanced... Edit if you already read the email before my changes: I changed the flow example, to handle the per-app catch-all rules ( |
I'm going to second the request to disable the notification nagging: it's important to remember that Portmaster is just one layer of firewall, and that other layers are likely already applying similar blocks on incoming traffic. |
I had to uninstall Portmaster yesterday because of the bug where it uses 100% CPU. I've suffered that bug for over a month now (ever since version 1.0.0, and also in version 1.0.2) and across two fully updated versions of Fedora (36 and 37) and I've been unable to fix it. Most of the time I had to kill |
I think it makes sense that if I go into global rules, allow an IP It works when I disable force block incoming connections on the app specific rule and allow a single IP there and block everything else. IMHO The current way of doing it seems rather unintuitive. |
This issue has been stale for some time. Rules and how they will look like in the future is a topic @dhaavi and i are in active conversation about. |
The recent change to how incoming connections work have broken Portmaster for me:
https://docs.safing.io/portmaster/settings#filter/blockInbound
I have lots of system features such as KVM Virtual machines which I cannot "just allow the application, bruh" for because Portmaster just sees them as Network Noise without application association.
Before your change, Portmaster was perfect. I allowed the exact ports I needed to have open incoming in the global rules. Everything worked perfectly. And the "block everything" setting even worked perfectly, by disallowing my incoming rules while on untrusted public networks like WiFi.
After your change, I see that all incoming global rules are totally ignored and pointless, and that all connections are always blocked systemwide now, and that the intended way is to allow certain apps to have incoming connections per app. The global incoming rules have no purpose anymore since you have killed the feature.
The only thing I can do is to disable your global blocking and set a default rule of "block everything else". But you helpfully decided to make Portmaster nag if I do that.
I am annoyed that the change wasn't better thought through and was pushed and broke systems without warning.
There are plenty of applications that Portmaster will never identify, and with your new system there is no way to allow their incoming connections. They will forever be blocked. Since Portmaster never allows so-called "Network Noise" connections anymore.
Please revert the change and think about a better solution. A change like this will only work if you can figure out the "Network Noise" problem of how to classify traffic with an unknown app. And since you are unlikely to figure that out (for obvious reasons), there is no way that your new "block all traffic not associated with any apps" will ever be a good idea or ever work. Having a per-app "allow/disallow all incoming connections" feature is very good, but you ALREADY HAD THAT. It was ALREADY possible to go to each app and just allow that entire app. You didn't have to break your Global Incoming Rules feature! This change was so shoddy that if there is no revert or improvement of this breaking change then I am gonna uninstall Portmaster and switch back to firewalld. I lost a lot of confidence in Portmaster after seeing such a sloppy change. It should be very obvious to you too that blocking all traffic is a bad idea when so much traffic is identified as "Network Noise" and therefore no longer possible to allow/unblock via your new system.
Edit: Alternatively, change the whole code of the "block everything" flag so that the Global Incoming Rules override it. Because the whole issue is that it thinks that it knows better than the global rules, and just blindly blocks everything even if global rules have been added. That behavior is of course a relic from the fact that you have repurposed the "lockdown all rules on unsafe networks" feature, which made sense as a feature on unsafe networks, but makes no sense on trusted home networks where users WANT to have their global Incoming Rules.
It looks like you have just repurposed the "ignore global rules and block everything while on untrusted networks" feature into "block on home networks too", which was an improper change. This doesn't just break professionals. Plenty of consumer apps break.
Example: I am sure that Boxes virtual machines on GNOME will no longer work either, since they use KVM internally. Now all of their connections are helpfully blocked by Portmaster, due to being "Network Noise" at the kernel level, and therefore all your VMs will not have any internet connection anymore.
Furthermore: Because you decided to permanently block incoming connections and removed the Global Rules feature, you have now made it impossible to secure your computer on unsafe networks. Everything is now permanently allowed on all networks if you go into an app and just allow all of its connections. So this was such a bad change on so many levels.
TL;DR: Portmaster was already perfect. Users could already do a combination of Global Incoming Rules for all apps, or selecting specific apps and choosing "Allow All Incoming" for specific apps without having to write rules if they didn't want to. So it makes no sense why you basically just deleted the Global Incoming Rules feature even though tons of network connections are never gonna be identified as belonging to apps in Portmaster, and are therefore permanently blocked now. Systems have broken as a result of this, and if the change stays, I am out of here and will stop recommending Portmaster. Yes it's that serious. Portmaster is no longer a serious firewall.
Sorry for not holding back my words. It probably hurts to read this. But it also hurt that I have wasted hours migrating to Portmaster and setting it up perfectly and was loving the app and recommending it to so many people, but then suddenly getting a severely broken machine thanks to a very badly implemented change. That is a serious issue for a firewall, and I hope that you look at the two proposed solutions. Either reverting the change (best since it was done for no good reason, broke Incoming Rules, broke Network Noise traffic, and broke Unsafe Network Blocking), or at least make rules take precedence over the silly, repurposed "lock down all rules" checkbox which no longer works intuitively and was broken for no reason, since Portmaster already had the exact feature you tried to implement. You already HAD the ability to allow all connections per app with a simple toggle without having to write any rules.
Your reaction will determine whether I uninstall Portmaster and apologize to everyone that I recommended it to, or if faith in your company can be restored.
The text was updated successfully, but these errors were encountered: