this post was submitted on 14 Aug 2023
391 points (96.7% liked)

Selfhosted

39947 readers
463 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS
 

In the past two weeks I set up a new VPS, and I run a small experiment. I share the results for those who are curious.

Consider that this is a backup server only, meaning that there is no outgoing traffic unless a backup is actually to be recovered, or as we will see, because of sshd.

I initially left the standard "port 22 open to the world" for 4-5 days, I then moved sshd to a different port (still open to the whole world), and finally I closed everything and turned on tailscale. You find a visualization of the resulting egress traffic in the image. Different colors are different areas of the world. Ignore the orange spikes which were my own ssh connections to set up stuff.

Main points:

  • there were about 10 Mb of egress per day due just to sshd answering to scanners. Not to mention the cluttering of access logs.

  • moving to a non standard port is reasonably sufficient to avoid traffic and log cluttering even without IP restrictions

  • Tailscale causes a bit of traffic, negligible of course, but continuous.

top 50 comments
sorted by: hot top controversial new old
[–] Decronym@lemmy.decronym.xyz 115 points 1 year ago* (last edited 4 months ago) (2 children)

Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I've seen in this thread:

Fewer Letters More Letters
DNS Domain Name Service/System
HTTP Hypertext Transfer Protocol, the Web
IP Internet Protocol
SSH Secure Shell for remote terminal access
UDP User Datagram Protocol, for real-time communications
VPN Virtual Private Network
VPS Virtual Private Server (opposed to shared hosting)
nginx Popular HTTP server

7 acronyms in this thread; the most compressed thread commented on today has 8 acronyms.

[Thread #42 for this sub, first seen 14th Aug 2023, 15:55] [FAQ] [Full list] [Contact] [Source code]

[–] sircac@lemmy.world 24 points 1 year ago
load more comments (1 replies)
[–] James@lemmy.ca 55 points 1 year ago (3 children)

Public key auth, and fail2ban on an extremely strict mode with scaling bantime works well enough for me to leave 22 open.

Fail2ban will ban people for even checking if the port is open.

[–] bitsplease@lemmy.ml 8 points 1 year ago

Yeah fail2ban has worked great for me

load more comments (2 replies)
[–] notabot@lemm.ee 44 points 1 year ago (1 children)

You really shouldn't have something kike SSHD open to the world, that's just an unnecessary atrack surface. Instead, run a VPN on the server (or even one for a network if you have several servers on one subnet), connect to that then ssh to your server. The advantage is that a well setup VPN simply won't respond to an invalid connection, and to an attacker, looks just like the firewall dropping the packet. Wireguard is good for this, and easy to configure. OpenVPN is pretty solid too.

[–] JDubbleu@programming.dev 6 points 1 year ago

I usually just run a ZeroTier client on my Pi connected to a private P2P network to solve this issue, and then have ProtonVPN over Wireguard for all internet traffic in and out of the Pi.

[–] Clou42@feddit.de 40 points 1 year ago (4 children)

I’ll take that tiny amount of traffic telling scanners there’s no password auth over having to remember port settings for ssh, scp and rsync any day.

[–] gamer@lemm.ee 16 points 1 year ago (1 children)
[–] ndsvw@feddit.de 27 points 1 year ago* (last edited 1 year ago)

Yeah, but how do you close VIM then? Restarting the computer takes some time!!!!111

Checkmate!!

[–] dmrzl@programming.dev 12 points 1 year ago

My configs remember stuff for me.

[–] maiskanzler@feddit.de 5 points 1 year ago

Fair point. These logs are only useless chatter anyway for everyone with proper key auth.

load more comments (1 replies)
[–] u_tamtam@programming.dev 31 points 1 year ago (5 children)

Or, you know, just use key auth only and fail2ban. Putting sshd behind another port only buys you a little time.

[–] nomadjoanne@lemmy.world 14 points 1 year ago (1 children)

Yeah but the majority of bots out there are going after easy prey. Honestly, if you use public key authentication with ssh you should be fine, even if it is on port 22. But it does of course clog up access logs.

[–] marcos@lemmy.world 13 points 1 year ago (2 children)

The majority of bots out there are stopped by just using a hard to guess password. It's not them that you should be worried about.

[–] aard@kyu.de 10 points 1 year ago

The majority of bots doesn't even show up in the logs if you disable password auth in the server config, as you typically should.

load more comments (1 replies)
load more comments (4 replies)
[–] spagnod@lemmy.world 20 points 1 year ago (1 children)

Just do it properly and configure sshd securely. When you have a machine exposed to the internet, you should expect it to be attacked. If you really want to give the finger to bots, run endlessh on port 22 and keep sshd on a non-standard port. Stay safe.

load more comments (1 replies)
[–] wgs@lemmy.sdf.org 19 points 1 year ago (4 children)

I get what you say, and you're definitely not wrong to do it. But as I see it, you only saved ~80Kib of ingress and a few lines of logs in the end. From my monitoring I get ~5000 failed auth per day, which account for less than 1Mbps average bandwidth for the day.

It's not like it's consuming my 1Gbps bandwidth or threatening me as I enforce ssh key login. I like to keep things simple, and ssh on port 22 over internet makes it easy to access my boxes from anywhere.

[–] aesir@lemmy.world 8 points 1 year ago* (last edited 1 year ago) (1 children)

ssh -p 12345 would leave your boxes accessible from anywhere too. Other blocks of IPs receive 10 times or more requests, as scanners can focus on blocks of ips from major providers.

load more comments (1 replies)
load more comments (3 replies)
[–] 018118055@sopuli.xyz 16 points 1 year ago (1 children)

I'd favour own VPN instead of relying on an additional third party

[–] entropicdrift@lemmy.sdf.org 5 points 1 year ago (9 children)

Right? PiVPN is easy AF and uses WireGuard. No reason not to set up something yourself if you're already selfhosting.

[–] glasgitarrewelt@feddit.de 7 points 1 year ago (1 children)

Please ELI5: How does this solution work? You tunnel yourself in your home network with a VPN on your PI? How is that safer, isn't there still a port open?

[–] entropicdrift@lemmy.sdf.org 5 points 1 year ago (3 children)

I have a port open, yes, but it's not port 22. The problem with Tailscale is you're trusting a third party. With my setup, it's just me connecting directly to my Pi. Thanks to port forwarding the only open port pointing to my Pi is the one that I use for WireGuard.

I already have a DDNS and domain name pointing to my house, so there's effectively no added risk compared to my existing setup with a couple webapps being reverse proxied behind Caddy on a different device.

load more comments (3 replies)
load more comments (8 replies)
[–] elscallr@lemmy.world 13 points 1 year ago (1 children)

If you do want to open 22, and there are plenty of good reasons to want to, just implement something called port knocking and you can do it safely.

[–] FarraigePlaisteach@kbin.social 5 points 1 year ago (3 children)

I have read elsewhere that port knocking is just security through obscurity and isn’t worth considering. I found it when searching for ways to set it up and that put me off.

[–] elscallr@lemmy.world 19 points 1 year ago* (last edited 1 year ago) (2 children)

It is and it isn't. It prevents random scans from opening 22 and attempting to authenticate, that's basically the entire purpose. You still need good authentication after because you're right, it's not a security measure, it's just a way to keep your logs useful and to keep botnets from beating the hell out of 22.

By "good authentication" I mean a key pair based authentication. That is impossible to brute force. If you use a password on 22 you shouldn't open it at all and you should rethink allowing any remote access.

Put another way: You're the doorman at a speak easy. You can answer the little window with "what's the password?" to every jack ass that approaches, and you'd be asking all the time. But if they don't know they have to knock "shave and a haircut" first, your job gets a lot easier and you're dealing with a lot fewer nuisance password promptings.

You can also use it to blacklist. If someone tries to hit 22 without knocking you can blacklist that IP entirely because you know it's nuisance.

[–] FarraigePlaisteach@kbin.social 5 points 1 year ago (1 children)

When you put it that way, it sounds beneficial and like something I’d like to use. Thank you!

The article may have been dissing it as a sole strategy.

[–] elscallr@lemmy.world 3 points 1 year ago

It's not uncommon for people to try using it as their sole authentication so that wouldn't be a surprise. But for it's purpose, it's perfect.

load more comments (1 replies)
[–] Ondergetekende@feddit.nl 10 points 1 year ago

Security through obscurity is a very valid way to secure something. It shouldn't be the only way of securing something, but it can be a valid additional layer.

The knock sequence is a secret, just like a password. It may not be a particularly strong secret, but is is strong enough to keep out casual attackers. You'll still need additional security, but sshd is well equipped to provide that.

load more comments (1 replies)
[–] FrederikNJS@lemm.ee 12 points 1 year ago (6 children)

As others have already said, set up a VPN like wireguard, connect to the VPN and then SSH to the server. No need to open ports for SSH.

I do have port 22 open on my network, but it's forwarded to an SSH tarpit: https://github.com/skeeto/endlessh

load more comments (6 replies)
[–] False@lemmy.world 12 points 1 year ago

10mb is pretty much nothing. May as well just use Fail2Ban.

[–] yoz@aussie.zone 9 points 1 year ago (1 children)

I am not in IT, what does this mean ?

[–] elscallr@lemmy.world 27 points 1 year ago (1 children)

Computers communicate across networks using ports. Port 22 is a commonly used remote administration port called ssh. Bots go around probing computers with an open port 22 hoping to find badly secured or outside misconfigured ssh servers to turn them into bots and crypto miners, etc.

[–] yoz@aussie.zone 9 points 1 year ago (6 children)

Its crazy people can do all these stuff. I can't even edit my word document. Being said that I want to learn IT but looks hell stressful for $100-$200k job. I was in content & marketing making $130k and we used to discuss about shades of color for 3-4 weeks. Its crazy how you guys have to fix issues within minutes on those tickets. The more i learn about IT, I feel like I should stay away from it.

[–] elscallr@lemmy.world 5 points 1 year ago

I can't edit Word documents for shit lol. I edit everything using Markdown (the same formatting used here) because I don't have to think about it.

That said every job can get stressful now and again, and this line of work is no different, but most days it's just work. Make this change, make this thing do something else, kill this thing that's costing money and everyone stopped using last year without telling anyone, etc. Typical things.

load more comments (5 replies)
[–] MonkderZweite@feddit.ch 8 points 1 year ago (4 children)

I don't get tailscale? In-kernel Wireguard is easy to setup. What does it add to this?

[–] mplewis@lemmy.globe.pub 6 points 1 year ago (1 children)

Tailscale is a nice way to set up a private network between your machines. It’s perfectly fine.

load more comments (3 replies)
[–] axum@kbin.social 8 points 1 year ago

ITT: People who don't understand Tailscale or are allergic to it for 'reasons'

[–] Krtek@feddit.de 7 points 1 year ago

Now try IPv6 only :P

[–] ShortN0te@lemmy.ml 5 points 1 year ago (1 children)

And yet it is more likely that tailscale get owned since the reward is much higher. I take my chances with my secured openssh server at port 22 vs a 3rd party company who controlls the access.

[–] Rearsays@lemmy.ml 4 points 1 year ago (1 children)

Just setup a wireguard system that’s pretty bulletproof

[–] ShortN0te@lemmy.ml 3 points 1 year ago (1 children)
load more comments (1 replies)
[–] rastilin@kbin.social 5 points 1 year ago

For management ports, I set up a firewall on the VPS to only respond to connections from known IPs.

[–] PhilBro@lemmy.dbzer0.com 4 points 1 year ago

Throw CrowdSec on there to stop the bots before they can do anything

[–] MoshpitDaddy@lemmy.world 4 points 1 year ago

I don't know if it was mentioned already but how could I check if my ports are under "attack"? OPs graphic looks really nice

load more comments
view more: next ›