ThePlace

Home ] Search ] Resources ] Site Map ] Contact Me ]
Dave's Information Technology Resource

Up ]

Web and Computer Security ] Privacy and Security ] SSL ] Digital Signatures and Certificates ] Digital Payments ] Controlling Web Access ] [ Protecting a Web Server ]

--- Protecting a Web Server ---

 

The following is a basic guideline for web security.  Keep in mind that there are specifics that are not addressed here:

bulletWhat hardware and operating system are you working with?  There are specifics for each platform.
bulletWhat applications and software are you running?
bulletWho is involved and what is their level of expertise?

 

Risk Assessment

bulletIdentify the specific nature of what happens if your system is compromised?
bulletWhat is the risk to your organization or to those whose data you have?
bulletWhat are the legal liabilities if someone steals your data?
bulletHow long will it take to restore everything if the system is taken down?
bulletWhat types of attacks are you subject to:
bulletVirus, worms, etc. via classic invasion (e-mail, software installation, Trojan Horse via active documents).
bulletDenial of service (e.g., overwhelming the site with hits to keep others out).
bulletInvasive take-over attack - e.g., remotely accessing the site and triggering programs.
bulletVirus, worms, and other software via Internet invasion (backdoor access, etc.).
bulletWhat is the impact of an attack (assuming worst case):
bulletYour "static" website is taken down (i.e., the site cannot be accessed by target users after the attack) -- this a relatively minimal risk.
bulletInformation on your site (e.g. a database of questions and answers for your products) is stolen (minimal risk unless the information if proprietary).
bulletOperational capability is taken down - how much business will you lose depending on time to restore - typical of denial of "service attacks"?
bulletUser and financial data (with privacy considerations) is stolen.  This includes names, addresses, contact information, personal data, credit cards, accounts payable/receivable information, etc..
bulletBottom line: how badly will I get hurt if the system is taken offline or data is stolen?

Procedural Security

bulletDo you have documented procedures for protecting your systems?
bulletDocumentation includes:
bulletA detailed risk assessment (see above).
bulletWhat is being protected.
bulletWho is responsible (administrators, end users, etc.) and expectations for these individuals.
bulletWhere things are kept including:
bulletHardware
bulletSoftware
bulletData and backups
bulletPasswords, access codes, combinations, etc.
bulletAlso: who has control and access to these things.
bulletWhen things are done, including:
bulletData backups
bulletInspections are completed.
bulletPasswords are changed.
bulletProcedures in general are reviewed.
bulletHow things are done, including:
bulletData backups (number of copies, where they go, who has access)
bulletPassword assignments and monitoring
bulletLog files reviewed.
bulletTesting of the system
bulletProcedures for installing and testing new software
bulletDocumentation should be reviewed periodically (at least annually).
bulletEveryone should be familiar with the documentation (it doesn't do any good if people don't read it).

Physical Security

bulletWhere are the computers and data and how secure are they?
bulletWho has access?
bulletIs backup power available?
bulletAre data backup systems removable and controlled.
bulletAre environmental systems adequate, including:
bulletCooling
bulletClean area (e.g., no dust, dirt, bugs, rodents, etc.)
bulletFire suppression systems (preferably halon)

Administrative Security

bulletAdministrators and users who have access to the system.
bulletAll operating system updates and security patches should be reviewed and installed.
bulletMonitor industry resources (hardware, software vendors, research companies) for latest information on:
bulletHacking techniques
bulletNew viruses and worms
bulletApplication vulnerabilities 
bulletAll system and user passwords should be unique and changed periodically.
bulletAll passwords and access should be reviewed when there is significant change in personnel (e.g., when employees are fired or have undergone significant events including legal/criminal investigations).
bulletPeople should only have access if there is a need.
bulletVerify all user accounts:
bulletRead access should be the standard on a general basis.
bulletWrite and execute privileges should only be granted when necessary.
bulletIf directory level security is used (e.g., end users have accounts via LDAP, etc.) - periodically review all accounts:
bulletIf account is no longer being used, get rid of it.
bulletChange passwords periodically (6-12 months).
bulletSpot check, if possible, and make sure the right person is using this account (hard to do, but worth it).
bulletMonitor application user accounts (e.g., Internet users, database servers, etc.) - make sure they have only the access permissions they need.
bulletTurn on logging and review web and computer server logs on a periodic basis:
bulletLook for repeating patterns; e.g., the same IP address hitting the server many times in a short period of time (may be trying to breach a password or implementing a denial of service).
bulletPage accesses - how often and when certain pages, applications, and or the server has the greatest traffic.
bulletCheck password log files for repeated/failed attempts.

Data/Database Security

bulletSeparate databases whenever possible from network and web servers.
bulletPerform backups as often as possible; on web servers, use slow periods (e.g., middle of the night on Saturday/Sunday) if the system must be taken offline.
bulletStore database backups offsite in secure facilities (safes, safety deposit boxes) at a reasonable distance from primary facility.
bulletIf using a local database on the web server or in a web accessible server, minimize the amount of vulnerable data by:
bulletOnly capturing data that you need.
bulletRemoving data when no longer needed; e.g., remove credit card numbers after the purchase is validated.
bulletOff-loading data periodically that is no longer needed or used (e.g., customer names and addresses).
bulletTreat external data sets (e.g., via XML) the same way as the database; consider the fact that XML is easily readable.
bulletUse passwords on databases to protect information.

Application Security

bulletLimit FTP access to strictly controlled actions:
bulletAnonymous access in specific directories only; make sure everyone is aware of what these directories are.  Make sure these directories are READ only.
bulletControlled access should ideally be made to directories with no script or executable access (not always practical but should be considered as a control mechanism).
bulletAvoid script and executables unless needed; remove extraneous scripts and programs that are not needed.
bulletSet session timeouts to the minimum amount of time required or expected of end users.
bulletUse file uploading capabilities carefully - make sure data is loaded into passive (read only) directories.  Monitor these files for viruses, worms, and other invasive programs.
bulletNever store sensitive data (e.g., financial or personal data) in hidden fields.
bulletNever store sensitive data in cookies on a machine (even short term or transparent cookies).
bulletWhen possible, avoid write/executable situations except as needed and only in isolated directories.
bulletIf using application-controlled access via a username and password or other control, apply the same considerations as administrative security:
bulletChange passwords periodically.
bulletMonitor users - remove from password lists as necessary.
bulletCheck application code and execution for remote access, for example:
bulletRemotely running any applications on the server through the web application.
bulletRemotely running parts of the web application out of sequence.
bulletRunning database queries/actions through the application.
bulletUse SSL or other secure communications to handle sensitive or confidential information (e.g., credit card information, personal financial information, etc.).
bulletIf using SSL, make sure all certificates are up to date; and all server security related patches are installed.
bulletIf using ActiveX or other "trusted" objects, make sure all certificates are up to date.
bulletTest all server and client application code -- consider the following possibilities:
  1. Can the application be turned against the server.
  2. Can a client application (e.g., a Java applet) create havoc on the client machine.
  3. Can someone replace a client application on the server.
bulletPublish legal and perceived liability notices on the web site (it may not all hold up in court - but it's a place to start).

 

 

 

Home ] Up ] Computer Architecture ] Programming Bootcamp ] Database Bootcamp ] Visual BasicS ] Web Basics ] Web Multimedia ] Web Programming ] Advanced Web Topics ] Developing Web Sites ] XML Technology ] Web Glossary ]

Copyright © 1999 - 2005 
ThePlace - Written and Sponsored by Dave Hillman