What is a good firewall that can also block ports published with docker? I’d need it to run on the same host.

UFW does work with Docker, but requires some tweaking. IIRC you have to disallow Docker to modify IPTables and then add a rule to forward all traffic to the Docker network of your choice. It’s a little finicky but works.

But…why?

Project Calico is designed for segmenting network traffic between kubernetes workloads.

Right tool for the job.

Also if you are a Fortinet shop, supposedly you can manage rules with FortiManager. I haven’t tried that yet but it looks really cool.

I was specifically talking about Docker+UFW. Of course the possibilities are endless.

Interesting, I might have to read up on that next time. Thanks

I ran into this same situation, this repo helped me solve it.

https://github.com/chaifeng/ufw-docker#solving-ufw-and-docker-issues

Ufw should work, jus ufw block/limit/allow port number

I remember trying with ufw and the docker ports were still open. Iirc I’ve read somewhere that docker and ufw both use the same underlying software, so ufw cannot block docker (IP tables?)

Hmm, not sure. I know with docker you can “mock” ports for the container, where the port the container sees is different than the port on the system. Maybe you can do something with that?

I can configure the containers in ways that don’t require ports to be published for the real network, but that’s always possible. It would still be nice to have a firewall that can block even those containers that try to publish their ports to the whole (real) network.

You want a virtual firewall. Is this for profit or just your science project because that’s going to change the answer. You might hate me, but I’m still gonna say it, Cisco…

For my homelab, and I’ll only host OSS

Are your Docker containers connecting to the network (eg using ipvlan or macvlan)? The default bridge network driver doesn’t expose the container publicly unless you explicitly expose a port. If you don’t expose a port, the Docker container is only accessible from the host, not from any other system on the network.

They are Only in my docker bridge networks and have a few published ports

If you don’t want the Docker container to be accessible from other systems then just don’t publish the port.

Yeah of course, that’s what I’m doing anyways, but the purpose of a firewall would be defense in depth, even is something were to be published, the firewall got it.

It happened to me when I was configuring IP geoblocking: Only whitelist IP ranges are allowed. That was fetched from a trusted URL. If the DNS provider just happened to not be on that list, the whitelist would become empty, blocking all IPs. Literally 100% proof firewall; not even a ping gets a pass.

OPNsense has an anti-lock-out rule at the top for a reason 😁

CronyAkatsuki
link
fedilink
9
edit-2
7M

Happened to me, luckilly I kept an ssh connection up.

Now I make sure to enable the firewall rules before I enable ufw ( still happened to me 3 more times ).

MrPasty
link
fedilink
177M

Firewallcmd’s runtime-to-permanent is one of my favorite features of any software. Set everything up, make sure everything works before making the changes permanent. If not, just reboot!

Isn’t that just like it is on Cisco systems?

Yep, exactly the same. Has saved my ass on an occasion or two when changing the uplink config.

Happened to me in work once… I was connected via SSH to one of our test machines, so I could test connection disruption handling on a product we had installed.

I had a script that added iptables rules to block all ports for 30 seconds then unblock them. Of course I didn’t add an exception for port 22, and I didn’t run it with nohup, so when I ran the script it blocked the ports, which locked me out of SSH access, and the script stopped running when the SSH session ended so never unblocked the ports. I just sat there in awe of my stupidity.

the script stopped running when the SSH session ended

tmux
Always use tmux when possible for remote connections.

What does it do in this case?

Well, the script could keep running even after he would have detached from that tmux session due to losing ssh connection. And since that script would unblock all ports after 30 seconds…

(Same use case as nohup that they mentioned)

Tmux essentially creates a pseudo-shell that persists between sessions.

So you can start a process, detach the session, start something else, disconnect, come back next week, and check on it.

It does other things too. Like console tiling.

We’ve all experienced the walk of shame to the server room to hook up a monitor keyboard.

@Blackmist@feddit.uk
link
fedilink
English
397M

Ah, if only it was a server room and not a customer 3 hours drive away. And he’d closed and gone home for the night.

Fortunately it just needed a reboot, and I was able to talk him through that in the morning.

Oof… well you can just say “it must be some hardware problem or something… maybe a reboot will fix it.”

lol. When I get asked what went wrong at work. So. A solar flare can swap the bits…

@JasonDJ@lemmy.zip
link
fedilink
5
edit-2
7M

Oof I did a firmware upgrade on my main external firewall.

The upgrade went fine but when we added an ISP a month or so prior, I forgot to redistribute the ISPs routes. While all my ISPs were technically working, and the firewall came back up, nothing below it could get to the internet, so it was good as down.

Cue the 1.5 hour drive into the office…

Had that drive to think about what went wrong. Got into the main lobby, sat down, joined the wifi, and fixed it in 3 minutes.

Didn’t even get to my desk or the datacenter.

Out of curiousity, how would nohup make your situation different? As I understand, nohup makes it possible to keep terminal applications running even when the terminal session has ended.

@octopus_ink@lemmy.ml
link
fedilink
English
77M

If the script was supposed to wait 30 secs and then unblock the ports, running with nohup would have allowed the ports to be unblocked 30 secs later. Instead, the script terminated when the SSH session died, and never executed the countdown nor unblock.

Thanks for the elaborate answer!

@octopus_ink@lemmy.ml
link
fedilink
English
37M

Any time! :)

the script stopped running when the SSH session ended so never unblocked the ports

That moment when you forget to run sudo ufw allow ssh after enabling the firewall

You mean before?

Yeah sorry my brain is fried

Not exactly the same thing, but on one of my systems, eth0 and eth1 swapped position after a kernel update, so the IP was on the wrong interface. I had IPMI/BMC on the system so didn’t have to physically go to it and plug in a keyboard and monitor, but I still had to deal with manually typing a long randomly-generated password, twice (one to log in and once again for sudo).

I’m glad “predictable” interface names are supported now. Those eth0/eth1/etc names were dangerous since the numbers were just based on the order the kernel loaded the drivers and initialized them in, which can change across reboots. The predictable names are based on physical position in the system, so they’re consistent across reboots.

I know I forgot to reactivate my firewall yesterday, but I’m too scared of getting locked in to do it remotely. I have physical access to it, but gotta wait after work

Yeah, that’s my philosophy. Don’t mess with it unless I can get my ass in there and fix it in case it goes south.

But then that thing is going to be the single only thing I can think about and it keeps disrupting me from everything else, so I decide to risk it.

i have ssh configured on a different port,

more than one time i enabled ssh in ufw, restarted the service… and the connection dropped

Optional
link
fedilink
17M

deleted by creator

This literally happened to me yesterday. Fortunately ufw enable did not configure it as persistent across reboots 🤠

@uis@lemm.ee
link
fedilink
37M

UART it

TurboWafflz
link
fedilink
777M

I accidentally put all the interfaces on my router running openwrt into the wrong firewall zone so now I can’t access it via ssh or the web interface. I already had it configured though and it still works so I’m just ignoring the problem until something breaks

There is nothing more perminant than a temporary solution.

Ignotum
link
fedilink
24
edit-2
7M

“i’ll fix that later”
Narrator: “they never did”

@incogtino@lemmy.zip
link
fedilink
English
127M

I did the same thing, set up OpenWRT perfectly, then changed the local range from 192.168.1.0 to 192.168.0.0 to suit some legacy connections. Everything works, except I can’t change settings on the router, so for now I leave it alone

idunnololz
link
fedilink
307M

It’s super secure though, not even you have access!

Maybe you can put aside a day which has nothing else going on so you can sit down and fix it before it breaks.

Sounds like my Unifi experience with the old CloudKeys that liked to brick themselves if the wind blew in a way they disliked. Everything still ran fine, but I couldn’t manage any of it till I factory reset it all. I think it ran like that for 3mo before I could be bothered 😅

it’s become self aware and is always blocking ports 22 & 23.

Whistles and looks away

I have absolutely no idea what you’re talking about

😜

UFW is a software firewall. SSH is a way to remote into computers. The joke is they turned on UFW and got locked out of the machine.

I’m pretty sure it was a joke.

Everyone did this at some point, but nobody would admit such a silly thing happened to them.

Never done this to a single server.

Managed to write the “ufw enable, deny all” part of ansislbe script without the “allow 22” part and run it against all my homelab once.

Hehe. I was joking there.

Have done it randomly on my backup raspi 3 so many times 🤣

I’ve been bamboozled

Create a post

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

  • Posts must be relevant to programming, programmers, or computer science.
  • No NSFW content.
  • Jokes must be in good taste. No hate speech, bigotry, etc.
  • 1 user online
  • 120 users / day
  • 257 users / week
  • 744 users / month
  • 3.72K users / 6 months
  • 1 subscriber
  • 1.47K Posts
  • 32.2K Comments
  • Modlog