

I talk fully about software. Add appropriate nftable rules to the container network and that’s it.
I talk fully about software. Add appropriate nftable rules to the container network and that’s it.
For me it’s not even about better or worse, but about different. For them it’s a nice iteration after many years, but for be it is one of the dozens of apps I use irregularly that suddenly behaves and works different and forces me to relearn things I don’t have any gain from. Since each of the different apps get that treatment every once in a while, I end up having to adjust all the damn time for something else.
I would really like we could go back to functional applications being sold as is without forced updates. I do not need constant changes all the time. WinAmp hasn’t changed in 20 years and still does exactly what it is supposed to. I could probably spin up an old MS Word 2000 and it would work just like it did 20 years ago.
Many modern apps however change constantly. No wonder they all lean towards subscriptions if they “have to” work on it all the time. But I, as a user, don’t even want that. I want to buy the thing that does what it’s supposed to and then I want it to stay that way.
Well, a big advantage of containers is, that you can isolate them pretty aggressively. So if you run a container that is supposed to serve content on a single HTTP port, expose only that port, mount no unnecessary volumes and run it on a network that blocks all outgoing traffic. Ideally the only thing left will be incoming traffic on the one port the service is supposed to serve.
Half off-topic, sorry: if you have some spare time on the weekend, you might want to take a look at nftables. AFAIK iptables is also just using nftables under the hood, so you are basically using a deprecated technology.
nftables is so much nicer to work with. In the end I have my custom rules (which are much saner to define than in iptables) in /etc/nftables.conf
, then I have a very simple systemd unit:
[Unit]
Description=Restore nftables firewall rules
Before=network-pre.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/nft -f /etc/nftables.conf
ExecStop=/usr/sbin/nft flush table inet filter
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
and finally if I push updates via ansible I simply replace the file and run nft -f /etc/nftables.conf
(via ansible; on-change event).
Edit: oh and as an example how the actual rules file looks like:
#!/usr/bin/nft -f
add table inet filter
flush table inet filter
table inet filter {
chain input {
type filter hook input priority 0;
# allow established/related connections
ct state {established, related} accept
# early drop of invalid connections
ct state invalid drop
# allow from loopback
iifname lo accept
# allow icmp
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
# core services
tcp dport {80, 443} accept comment "allow http(s)"
udp dport 443 accept comment "allow http3"
# everything else
reject with icmpx type port-unreachable
}
}
and with that I have my ipv4+6 firewall that allows pings and http
It kind of is, unfortunately. Games are often developed with a lot of pressure and the constant dangling of the budget being cut off. I don’t think the devs are incompetent and think what they produced (code quality wise) would be the best, but what could they do if they need a result to present to the publisher end of week and then don’t get money (aka time) to clean it up but instead they get the next deadline.
On the other hand I am also not sure I can blame publishers. Things can easily spiral out of control if managed badly in the other direction… see Cloud Imperium Games (i.e. Star Citizen).