I just setup a minecraft server on an old laptop, but to make it acessible i needed to open up a port. Currently, these are the ufw rules i have. when my friends want to connect, i will have them find their public ip and ill whilelist only them. is this secure enough? thanks
You cant. You can only do your best to make it as secure as possible, but given enough time, someone can break it.
Basic tips:
don't run any services on their defaults ports
don't allow password auth for any exposed service. Ever.
run intrusion detection (fail2ban for simple ssh / Crowdsec for something a little beefier)
For ssh specifically, lock down your sshd config, make sure only key-based auth is enabled, and maybe as an extra step, create a dedicated user, and jail it by only allowing it access for the commands you need to interact with.
Not sure I can expand on it a ton more in a way that will make sense if it already doesn't sound familiar.
Basically, there are various methods to authenticate yourself to most services. Password is usually the weakest and most succeptible to brute-force and social engineering. There's certificates, key pairs, RBAC...etc. You can even setup TOTP/MFA really easily for anything that supports it these days. Just don't leave a service hanging out on the Internet to get brute-forced by password though.
If you're unfamiliar with this, start with SSH and key pairs. It's probably the simplest intro and you can be up and running to try it out in seconds.
Got it, I’m aware password auth can be brute forced, sadly many services don’t support more advanced auth methods so I’ve got a couple homelab apps that can only do password auth. I’m using very strong passwords and 2FA where available, and have been looking into an SSO solution like Authentik, but again not all services are supported.