Overview of the LIS Linux Classroom Servers

Overview of problem to be solved
Assumptions used in design
Design of systems
Summary

Overview of the Problems to be Solved with Linux Servers

There are several classes taught in LIS which require specialized computer tools. One such class, LIS353, has students install and configure a web server as part of the instruction. Other classes require advanced document processing functionality.

For the price and performance, linux was by far the best choice for students to work with. The performance of software under linux is quite good. Linux can handle running multiple web servers from one machine with virtually no slowdown. Although some recent GUI's such as KDE and GNOME require extensive processor usage to operate, a linux server-only system will typically run on older, slightly outdated hardware far better than alternative OS's run on the latest hardware. As a bonus, the cost of a great deal of linux/unix software is $0.00. This is a good price for anyone on a budget. One major problem seems to exist, however, and that is security.

Because of linux's power, it is easy to have a linux machine perform tasks such as sniffing. This is obviously not desirable on a campus network. Therefore, the security of the systems must be maintained. One common misconception is that linux is less secure than other OS's. This is not fundamentally true. Linux does provide an infinite number of methods for configuration. Therefore, it is possible to either intentionally or unintentionally misconfigure a system and have a security hole. Of course, someone configuring a linux system also has many ways of handling security issues, and is often able to compensate if one particular method proves dangerous.

Assumptions Used in Design

The best way to absolutely guarantee that nobody will breech security on your computer is to unplug it and put it in a bank safe. Of course, that's not very useful. Giving every student full root access would make the job of installing much easier, however the security would be non-existent. Somewhere in the middle is where security should be. Linux, fortunately, has the ability to operate in this middle ground. To figure out exactly where the line should be, we came up with a few basic principles.

First, we assume that no student would maliciously breech security on any system. While this may not be 100% true, it is a good starting point. Further, if a student were to be caught attempting to breech security, we would be able to take disciplinary action.

Second we assume that students may unintentionally set up servers which have security problems. In the event this happens, the damage must be minimal to the system as a whole.

The network and outside world are hostile to our servers. The possibility of someone packet sniffing traffic into or out of our servers is quite real.

Design of Systems

The first design principle was to eliminate potential problems from sniffers anywhere on the net. To accomplish this, any service which requires a password must not accept cleartext. Therefore, telnet and ftp were disabled, but ssh and sftp were allowed. Also, any service which was unnecessary was disabled. For example, the machines did not need to run a mail server, or xdm, or an IRC server.

To minimize any effects of a student misconfiguring a server, several steps were taken.

Firewall software (iptables, included with many distributions) was installed to only allow access to ports which were authorized. This means that if a student were to start a web server on an incorrect port, the service would be unreachable. A sample script which starts the firewalling shows how this was done.

A closed-to-login LDAP server was set up using OpenLDAP for all accounts. If someone were to break in to a shell account, they would not be able to retreive any encrypted or cleartext passwords. The root password for the LDAP server was not the same as for login systems. All LDAP traffic was encrypted using SSL. As we didn't compile our LDAP server with SSL natively, we used stunnel. /etc/pam.d/system-auth which describes how to use LDAP for authentication was changed so that all logins ask the LDAP server to authenticate. /etc/ldap_pam.conf describes what to look for in LDAP. /etc/init.d/ldaptunnel shows a startup script which starts a secure tunnel to the remote ldap server.

The main web server for general use was on a closed system, and was run as user www-data. Once again, a breech in the apache web server would not yield any useful information such as passwords

Students who experimented with running web servers did so as their own UID's. Therefore, any breech in security from a misconfigured web server would only allow access to an individual students account, not to the root account

Old accounts are removed after each semester. This way, if a student accidently opened a security breech, it would only last a few months before the machine would be reinstalled.

Summary

In short, a system was set up with 5 login servers for load balancing, a closed-to-login web server, and a closed-to-login LDAP server for student use. The system was designed to minimize effects of students who unintentionally misconfigured something, or from outsiders wishing to break in. The system still allows a large amount of flexibility and is a valuable instruction resource.


Valid HTML 4.01!