Rimu
link
fedilink
27M

Ubuntu has a set of scripts you can run to harden a new server (not advisable on a server that has already been configured for something). You need an Ubuntu Pro subscription to access them but you can get a free trial and then cancel it after you’ve finished.

More info at https://ubuntu.com/security/cis.

I did this process for a customer recently and it was pretty straightforward and much much more thorough (over 100 configuration changes) than just tweaking SSH and fail2ban.

I expect other commercially-oriented distros offer something similar.

@MindlessZ@lemm.ee
link
fedilink
English
16M

Fwiw you don’t need to cancel or trial anything. Everyone can get free Ubuntu pro licensesbfor up to 5 machines

@tills13@lemmy.world
link
fedilink
English
37M

Leak the scripts?

@catloaf@lemm.ee
link
fedilink
English
34
edit-2
7M

Don’t expose anything to the Internet that you don’t absolutely have to. If you can, put everything behind a VPN gateway.

Make backups. Follow the 3-2-1 rule.

@SomeBoyo@feddit.de
creator
link
fedilink
English
57M

Will a wireguard docker image work for getting ssh access to my server?

@taaz@biglemmowski.win
link
fedilink
English
10
edit-2
7M

I wouldn’t recommend putting ssh behind any vpn connection unles you have a secondary access to the machine (for example virtual tty/terminal from your provider or local network ssh). At best, ssh should be the only publicly accessible service (unless hosting other services that need to be public accessible).

I usually move the ssh port to some higher number just to get rid of the basic scanners/skiddies.

Also disable password login (only keys) and no root login.

And for extra hardening, explicitly allow ssh for only users that need it (in sshd config).

@Archer@lemmy.world
link
fedilink
English
16M

Do the secure thing and only access your Linux shell over Discord!

/s

@Poutinetown@lemmy.ca
link
fedilink
English
87M

Ssh behind a wire guard VPN server is technically more secure if you don’t have a key-only login, but a pain if the container goes down or if you need to access the server without access to wireguards VPN client on your device.

@Lem453@lemmy.ca
link
fedilink
English
10
edit-2
7M

Highly recommend getting a router that can accept wireguard connections. If the router goes down you’re not accessing anything anyways.

Then always put ssh behind the wireguard connections.

For a homelab, there is rarely a need to expose ssh directly so best practice will always be to have multi layered security when possible.

@Poutinetown@lemmy.ca
link
fedilink
English
47M

Yeah it’s good to have a system separate from the main server. It’s always so frustrating having to debug wireguard issues cause there’s some problem with docker

Stumbled uppon this guide

https://github.com/imthenachoman/How-To-Secure-A-Linux-Server

I think its a good place to start

Do a search for you server OS + STIG

Then, for each service you’re hosting on that server, do a search for:

Service/Program name + STIG/Benchmark

There’s tons of work already done by the vendors in conjunction with the DoD (and CIS) to create lists of potential vulnerable settings that can be corrected before deploying the server.

Along with this, you can usually find scripts and/or Ansible playbooks that will do most of the hardening for you. Though it’s a good Idea to understand what you do and do not need done.

@h3ndrik@feddit.de
link
fedilink
English
21
edit-2
7M
  • fail2ban / brute forcing prevention
  • quick, frequent updates(!)
  • containerization / virtualization
  • secure passwords, better keys
  • firewall
  • a hardened operating system (distribution)
  • SELinux / Apparmor / … / OpenBSD
  • not installing unnecessary stuff
  • An admin who is an expert and knows what they do.

Me, two+ decades into tinkering and still a dumbass: “look at me, I’m the expert admin now”

Lemongrab
link
fedilink
English
06M
@___@lemm.ee
link
fedilink
English
26M

Run SCAP tool with a STIG baseline.

Possibly linux
link
fedilink
English
86M

Check out online resources such as the Nist cyber stuff.

Basic things include disabling unnecessary services, disabling password authentication, setting up and verifying the firewall, configuring selinux and so on.

Don’t turn it on is the ultimate technique

barring that, unplug the ethernet.

ChaoticNeutralCzech
link
fedilink
English
36M

That’s why “availability” is a core tenet of security (according to some cybersecurity course I took). It is easy to prevent unauthorized access to data if you have no requirements on authorized access.

@foggy@lemmy.world
link
fedilink
English
537M

Setup Fail2ban

Login only with SSH keys. MFA on SSH login. Use SSH proto 2.

Disable passwords, x11 forwarding, root logins

Reduce Idle timeout interval

Limit users’ SSH access

That should be more than enough for the average use case.

Regular updates are definitely necessary too. Also, if you do limit SSH users to a chroot make sure you limit TCP (port) forwarding too.

Possibly linux
link
fedilink
English
46M

Containers can help lock services down if you do it right.

MaggiWuerze
link
fedilink
English
36M

You can have 2FA on ssh?

@foggy@lemmy.world
link
fedilink
English
16M

Yep. Use SSH keys, not just protocol.

On connection, it’ll ask for your SSH password (this is different from the users password).

After that with something like authelia in place, you’ll be asked for a 2fa code.

MaggiWuerze
link
fedilink
English
06M

So, no. SSH can’t do 2FA? I would need to set up Authelia and connect through that? I already use ssh keys instead of passwords to connect to my server

lemmyreader
link
fedilink
English
16M

It is possible to have 2FA with a security key and ssh. Been on my to do list for some time to try it.

@foggy@lemmy.world
link
fedilink
English
16M

Yes it can. I literally have it set up right now.

When I connect to my vps I am promoted for the password for my SSH key. Only works on a machine that has the ssh key.

Then I need to use 2fa.

MaggiWuerze
link
fedilink
English
16M

Ah, so it the asks for the TOTP provided by Authelia? I misunderstood, sorry. That’s pretty cool. Do you maybe still have the guide you used to set that up?

@Deckweiss@lemmy.world
link
fedilink
English
157M

fail2ban

… is an intrusion prevention software framework. Written in the Python programming language, it is designed to prevent brute-force attacks. It is able to run on POSIX systems that have an interface to a packet-control system or firewall installed locally, such as iptables or TCP Wrapper.

Pyrosis
link
fedilink
English
67M

Firewall and deciding on an entry point for system administration is a big consideration.

Generating a strong unique password helps immensely. A password manager can help with this.

If this is hosting services reducing open ports with something like Nginx Proxy Manager or equivalent. Tailscale and equivalent(wire guard, wireguard-easy, headscale, net bird, and net maker) are also options.

Getting https right. It’s not such a big deal if all the services are internal. However, it’s not hard to create an internal certificate authority and create certs for services.

If you have server on a VPS. Firewall is again your primary defense. However, if you expose something like ssh fail2ban can help ban ips that make repeated attempts to login to your system. This isn’t some drop in replacement for proper ssh configuration. You should be using key login and secure your ssh configuration away from password logins.

It also helps if you are using something like a proxy for services to setup a filter list. NPM for example allows you to outright deny connection attempts from specific IP ranges. Or just deny everything and allow specific public IPs.

Also, if you are using something like proxmox. Remember to configure your services for least privileges. Basically the idea being just giving a service what it needs to operate and no more. This can encompass service user/group names for file access ect.

All these steps add up to pretty good security if you constantly assess.

Even basic steps in here like turning on the firewall and only opening ports your services need help immensely.

Possibly linux
link
fedilink
English
36M

The biggest thing is to change the defaults and to limit access. Unless your are the target of a nation state the attacks against your network will be automated.

Use a hardened-by-default OS like OpenBSD, HardenedBSD, or something similar in Linux.

@Reaper948@lemmy.world
link
fedilink
English
36M

Air gapping

/s

@Decronym@lemmy.decronym.xyz
bot account
link
fedilink
English
3
edit-2
4M

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
IP Internet Protocol
SSH Secure Shell for remote terminal access
SSL Secure Sockets Layer, for transparent encryption
TCP Transmission Control Protocol, most often over IP
VNC Virtual Network Computing for remote desktop access
VPN Virtual Private Network
VPS Virtual Private Server (opposed to shared hosting)

[Thread #693 for this sub, first seen 20th Apr 2024, 15:55] [FAQ] [Full list] [Contact] [Source code]

Create a post

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!

  • 1 user online
  • 124 users / day
  • 419 users / week
  • 1.16K users / month
  • 3.85K users / 6 months
  • 1 subscriber
  • 3.68K Posts
  • 74.2K Comments
  • Modlog