Retro Guy <
retr...@novabbs.org> wrote:
> Things to consider when running a program as a door on a BBS is stuff like
> "is there a command to drop to shell?" Is my server protected from a rogue
> user?
I think the question should be different. "Let's give this user access to
shell (or assume he gains access to shell from the newsreader). How do I
secure it so he can't do anything bad?".
If I had to do something like this, I'd set up two separate virtual
machines for the task. First one (A) would be available to users and
second one (B) would act as a firewall for A (giving access only to
systems I want users to access, like my news server), and as a permanent
storage, exporting read-only filesystems to A (including rootfs). Only
home directories on A (or some storage for newsreader's data) would be
writable.
This way, even if user gained root access on A, he won't be able to access
the Internet (because it would be blocked on B, and A would only have an
interface to B), and won't be able to modify system files (because rootfs
and other filesystems except home would be mounted read-only, enforced by
B; something like nbd or maybe nfs).
This, plus some ulimits and quotas to prevent the user from disrupting the
service for others, and some kind of automatic auditing / monitoring to
detect unwanted changes.
> I messed with lynx for a while on Synchronet, but it seemed too risky. I'm
> paranoid.
It's not paranoia, it's carefulness :) If the system is public then we
should always expect users to try to hack it for some malicious purposes,
or just for fun.