Let me preface this question with some information - I am a developer working for a small startup. The company can not afford to hire a proper *nix sysadmin at this time; Subsequently, I have been tasked to setup a LAMP server running CentOS that will be remotely administered by our lead developer. Said developer is in different timezones every week. Security is very high on my agenda.
The server will be used for beta testing a new version of our flagship product. The server will be accessed by beta-testers (consumers, not QA staff) over both standard port 80 http as well as SSL. It will be accessed by our developer over SSH - as well as ssl access to Subversion for source control and port 21 for FTP.
Here is what I have implemented so far...
- "Keepass" password management app's database file is remotely backed up to mozy. Master password is 198bit key. Database file resides on an "IronKey" hardware encrypted dongle.
- Windows login is 132bit key. Workstation locks after 5 min idle.
- All code, documents and application settings are stored on a hardware-keyed encrypted drive.
CentOS LAMP Server:
- Root access over SSH is disabled. SU - for root.
- Followed this tutorial (cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html) in order to lock down OpenSSH.
- The following is an nmap scan report for open ports:
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2009-08-31 10:56 EDT
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1668 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
110/tcp open pop3
143/tcp open imap
225/tcp open unknown
443/tcp open https
631/tcp open ipp
993/tcp open imaps
995/tcp open pop3s
3306/tcp open mysql
So there you have it - I know this is not very secure in it's current state. I have been researching this for days and before I implement or change anything else with this configuration I would like some feedback from professionals. Hopefully our economy will rebound and this stressful security job will be handled by someone more qualified than a lowly c# developer.
Thanks In Advance!