There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

Need help ensuring my public mediawiki is safe before launch

Hi, I’m setting up a public wiki using mediawiki and I’d like some help ensuring the server and mediawiki is safely setup before I start sharing it publicly. I installed it on Vultr using the mediawiki app from the Vultr Marketplace. Are there any things I should ensure before publicly sharing the link?

Some things I’ve done so far:

  • I disabled password login to the server so its only possible to login via ssh
  • I made it so I have to approve of any edits to the wiki
  • I still haven’t enabled uploads of files because I want to ensure I only allow jpeg\png uploads.

I’m relatively new to running servers so any tips are highly appreciated.

Decronym Bot , (edited )

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

Fewer Letters More Letters
HTTP Hypertext Transfer Protocol, the Web
HTTPS HTTP over SSL
IP Internet Protocol
SSH Secure Shell for remote terminal access
SSL Secure Sockets Layer, for transparent encryption
VPN Virtual Private Network

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

[Thread for this sub, first seen 23rd Aug 2023, 08:05] [FAQ] [Full list] [Contact] [Source code]

mudeth ,

Install fail2ban. Prevents brute force access to your server. The defaults should be fine.

xnx OP ,

Done. Thanks!

saint ,
@saint@group.lt avatar

Get some WAF for the public facing app, maybe at least github.com/nbs-system/naxsi .

xnx OP ,

ELI5? 😅

The install section of naxsi is a whole lotta stuff I’ve never touched before

saint ,
@saint@group.lt avatar

sorry, this is kinda like a firewall, but protecting websites, so many vulnerabilities are filtered out. it does not protect you 100% percent (nothing does). it might be hard to setup, in that case there is an option to use waf as a service, i.e. - cloudflare has such offering, maybe there are others as well. i have looked into vultr - they seem to offer only a “usual” type of firewall, not http/application based.

xnx OP ,

Ah ok thanks for the info! Do you know if vultrs firewall would make installing fail2ban redundant?

saint ,
@saint@group.lt avatar

if you configure ssh access only from your home ip - then fail2ban is not needed.

Haui ,
@Haui@discuss.tchncs.de avatar

But if your home ip ever changes, you‘re fucked. I would never do that. Pubkey is the way.

saint ,
@saint@group.lt avatar

usually i add more than 1 ip and also vultr firewall can be managed to change ip. tailscale can be used as well. there are options!

Haui ,
@Haui@discuss.tchncs.de avatar

That’s good! Had me worried there.

SheeEttin ,

Method of authentication doesn’t matter if there’s a pre-authentication vulnerability: thehackernews.com/…/openssh-releases-patch-for-ne…

Instead of exposing multiple services, I would recommend just one VPN for remote access. Less attack surface.

Haui ,
@Haui@discuss.tchncs.de avatar

Thats how I do it. But I also have physical access so if the vpn fails I don’t get locked out.

xnx OP ,

Oh perfect thanks

Illecors ,

I disabled password login to the server so its only possible to login via ssh

Phrasing is a bit strange. Does this mean ssh can only be used to login with a key? If so - great!

Since you’re using an “app” - not sure there’s much we can help you with. The control has been ceded to the maker of said app.

I would normally set up some limits on the firewall and change the ssh port so logs are less polluted, not sure it’s possible for you.

xnx OP ,

Yeah its only possible to login with a key.

What limits would you set on the firewall?

From the bit I’ve read people usually say changing the ssh port is mostly “security theatre” is this not fully true?

diminou ,

For the limit : basically you need to ask yourself how many connection someone if able to do in a second to your server. As an example, my limit is always 15. A bit high but I’m sure I’m not blocking a legitimate one (either from myself or someone else)

For the ssh port : it’s true, but trust me you’ll be happy to change for something random like 5927 because you’ll have far less bit trying to connect or probe your ip, thus your logs won’t be cluttered!

Illecors ,

It would be security theatre if it was done for security. I’m not doing it for security, though - it’s for my sanity when checking the logs. Unrestricted SSH simply attracts too many bots and the failed logins make it impossible to quickly grasp a picture of what’s happening.

In regards to limits - this is my rule file for iptables on my lemmy instance:


<span style="color:#323232;">*filter
</span><span style="color:#323232;">:INPUT DROP [0:0]
</span><span style="color:#323232;">:FORWARD ACCEPT [0:0]
</span><span style="color:#323232;">:OUTPUT ACCEPT [0:0]
</span><span style="color:#323232;">:LOG_DROP [0:0]
</span><span style="color:#323232;">:LOG_ACCEPT [0:0]
</span><span style="color:#323232;">
</span><span style="color:#323232;">-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource
</span><span style="color:#323232;">-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 600 --hitcount 20 --name DEFAULT --mask 255.255.255.255 --rsource -j LOG_DROP
</span><span style="color:#323232;">-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
</span><span style="color:#323232;">-A INPUT -i lo -j ACCEPT
</span><span style="color:#323232;">-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -m recent --set --name HTTPS --mask 255.255.255.255 --rsource
</span><span style="color:#323232;">#-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -m recent --update --seconds 600 --hitcount 600 --name HTTPS --mask 255.255.255.255 --rsource -j LOG_DROP
</span><span style="color:#323232;">-A INPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
</span><span style="color:#323232;">-A INPUT -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
</span><span style="color:#323232;">-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
</span><span style="color:#323232;">-A INPUT -j LOG_DROP
</span><span style="color:#323232;">
</span><span style="color:#323232;">-A LOG_ACCEPT -j LOG --log-prefix "[ACCEPTv4]: " --log-level 7
</span><span style="color:#323232;">-A LOG_DROP -j LOG --log-prefix "[DENYv4]: " --log-level 7
</span><span style="color:#323232;">-A LOG_ACCEPT -j ACCEPT
</span><span style="color:#323232;">-A LOG_DROP -j DROP
</span><span style="color:#323232;">COMMIT
</span>

This is very much a WIP, I’m going to implement some ddos protection as soon as I get some spare time.

xnx OP , (edited )

Could you explain a bit of what these are doing and why you decided on these rules?

Also, isn’t bruteforcing an SSH key near to impossible?

Illecors ,

There are 2 extra chains - to log a connection and accept it, and to log a connection and drop it. I’ve only used log and accept for testing.

The default action on input chain is also changed to drop.

SSH port gets connection attempts counted - 20 connections within 10 minutes from the same IP and it goes to log and drop. I could just drop it, but for now I feel immense satisfaction knowing that some bot is waiting for timeout instead of attempting the next username/pass.

I’ve tried a similar thing with https because lemmy.world was dosing me. It did work, but I’ve now commented it out since Lemmy software has become more robust. Lemmy.world still sucks from my, as an instance owner, perspective, but it no longer bombards me periodically.

AnonStoleMyPants ,

It does not increase security per se but it does limit the amount of bots trying to connect to your server. At least it will make your log a bit less cluttered with random garbage.

Also installing something like fail2ban might be a good idea. Or even better would be to block all ssh connections except from a specific ip address (whitelist). This of course depends whether you can trust your ip to stay the same, or if you can still log in through some other interface if necessary.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • random
  • lifeLocal
  • goranko
  • All magazines