-
Notifications
You must be signed in to change notification settings - Fork 59
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
Firewall Management #26
Comments
ok discussed in the meeting today we discussed this item. We discovered we have quite a bit of investigation to do before we can really make a decision on this. Some obsverations/open questions from the meeting:
we'll need to have someone (or small group of people) look into these items and report back to the group with a recommendation. |
I'm not sure I agree with this. I still think the "platform python" approach could work. Or, if we wanted to make it a whole lot harder for external people to use it, we could randomize the location of the binary, e.g. (Walking over every python binary and rewrite the shebangs) |
i'm going to refrain from commenting on that subject. While it definitely has implications I think it warrants it's own card as to not derail the firewall discussion. Would you like to open a separate issue? |
He opened one here: #32 |
While it's not quite the same thing, note that systemd is working on bpf firewalling which is service-oriented rather than system oriented. |
blocked by discussion in #32 |
The latest versions of iptables use the nf_tables backend. So we can safely ship both. https://wiki.nftables.org/wiki-nftables/index.php/Legacy_xtables_tools As for firewalld, I don't think many people would be happy to see that thing in FCOS (bloated, stateful, complex, xml...). Cloud deployments usually don't need complex firewall configuration. It is handled elsewhere. BPF firewalling in systemd looks much more appealing. |
no longer blocked on #32 since that has been decided. removing blocked label |
First, I would like to split concern between static rules (that are immutable and attached to a node lifetime) and dynamic rules (that are environment-dependant, ephemeral, and require active management at runtime). In general, FCOS is only concerned with static rules that are configured at machine-creation time. This allow us to unify the “firewalling setup” flow under the usual “first-boot provisioning via Ignition-files” flow. As the landscape of Linux firewalling is currently evolving, we'd like to provide both plain iptables and nftables, and let users and software consumers pick the one relevant for their environment (and don’t rely on the alternative symlink). We can ship relevant At the moment I'd expect to not ship any distro-hardcoded static rules by default, leaving full ownership of both static and dynamic firewalling to the user. For the long term, we like the approach taken by systemd with per-slice eBPF filtering. For static rules, it already fits with Ignition provisioning of service dropins. For dynamic rules, there is likely some integration surface for delegation between systemd and (container) runtimes. It is however unclear if this approach can completely replace system-wide firewalling, or if it will just coexist alongside other *tables tools (e.g. for NAT and forwarding policies). As an additional note, a wish item for the medium-term future could be a tool similar to systemd-sysctl for static firewalling rules, capable of sourcing rule-snippet from multiple locations (under /usr, /run, and /etc) and merging them in order. However at this point we don’t expect having any hardcoded rules under /usr, so we won’t be actively working on designing and implementing such a tool (but we welcome experimentation in this area). |
so in TL;DR bullet point form for the "short term":
Did I miss anything? I'll add the meeting label so we can discuss tomorrow. |
Discussed this in the meeting today. We had no opposition to the current proposal (summarized here). Remaining action items for this ticket:
@lucab - can you handle those three bullet points ^^ |
I think this ticket is great and RHCOS should inherit this. One thing I want to add here is that Kubernetes changes the game around firewalling in a lot of ways, but an interesting specific point is that in my opinion, a lot of the idea of host-level firewalling is inherited from the original "classic Unix timesharing" model where you'd have unprivileged users ssh'ing into a big box. In Kubernetes, only admins ssh into machines. User applications are run in a "overlay network" - you shouldn't be able to e.g. talk to a host's sshd from the cluster. Further they are only exposed via ingress/router (well ok there's NodePort too). Admins can have a lot of power/control over exposed services; in traditional Unix any process can just call So TL;DR: I assert that Kubernetes clusters really don't have a strong need host-level firewalling by default. |
This summarizes firewalling directions, as discussed in coreos#26
This summarizes firewalling directions, as discussed in coreos#26
This summarizes firewalling directions, as discussed in coreos#26
This summarizes firewalling directions, as discussed in coreos#26
This summarizes firewalling directions, as discussed in coreos#26
This summarizes firewalling directions, as discussed in coreos#26
since coreos/fedora-coreos-config#40 and #103 have merged, I think we can close this. |
Sorry, catching up belatedly and @cgwalters said I should add my comments here... coreos/fedora-coreos-config#40 includes Possible fixes would include:
|
@danwinship I pretty much share those concerns. I think this followup mirror the discussion ongoing at https://bugzilla.redhat.com/show_bug.cgi?id=1667875 and your feedback would be valuable there (sorry if we keep bumping you). My personal hope was to get plain restore-only services (i.e. your first bullet item). |
@danwinship I cross-linked your feedback to bugzilla, you may want to subscribe yourself and watch for followups there. |
What is the desired firewall management method for FCOS at the moment? Atomic Host is using firewalld, Container Linux plain iptables. AFAIK Fedora 29 will switch over from iptables to nftables and set nftables as a default backend in firewalld. FCOS, with a strong desire to not ship Python, plans to stay with iptables, switch to plain nftables?
The text was updated successfully, but these errors were encountered: