> Turning this into a learning experience:  Does anyone have 
> any hints or advice about hardening OpenBSD for shell 
> accounts.  Do people tweak things other than the login.conf 
> settings?  I have to deal with student shell accounts where 
> students are learning to program and often create problems by 
> accident.

Well, in a non-disto specific way, I have a couple that we use,
if your interested:

A) Process daemon checking, in 30 minute increments specifically for:
    - Processes using 80+% CPU
    - Processes over the set quota for that user (config file sets them
      per login)
    - Processes spawning 'sleep' consistently
    - A process with the same name, but a different ID, using the high
      resources.

   In all cases, the first time it sees the problem, its logged. The
   next time it is run, it loads that array, and if it sees it still
   going on, it sends the process a KILL. So in essence, they must do
   it for more then 30 minutes. Never seems to nail GCC or anything
   like that.. Since it changes ID's and names with each file.

B) Limit outgoing access to IRC servers.. Usually 6666 and 6667 - many
   time someone puts in PHPBB or some such garbage, and it gets cracked.
   The uploaded executables tend to connect to IRC servers to be used
   as DDOS bots, or spam bots.

C) Limit appropriately with login.conf as suggested - specifically
   stack size, coredumpsize, number of processes, and number of
   fd's

D) Put each user it their own group, and make the user, the web server,
   and the email server a member of it. Then you can set it as only user
   and group rwx, and not have folks surfing around in the directories
   grabbing others files. May want to do the same thing with config files.

   We generally as I had said - use linux, which gives us GRSec, and XATTR
   for this .. But a least access policy to system configuration files is
   probably a safe bet, even if only done with the usual user/group
   mechanism.

E) Put it on a 10Mbps port :) Stops too much damage is someone launches an
   attack from it.

F) Implement login.access, and hosts.allow lists, controlled by a unix
   command, to limit specific IP's to accessing the machine at all, on
   priv. Ports, or using other peoples login ID's. Seems to keep unknowns
   from getting on the box mostly (barring social engineering :) because
   they need a user, a password, AND to be from the right ISP.

G) Not sure if OpenBSD might have an equivalent to Linux OOM Killer.. But
   this has saved the box before, when things get out of control very
   quickly. I try not to use limits, because it slows compiling to crap :(

We do some other things too, if you want some details, drop me an offlist
Email :)

-D.

Reply via email to