LAMP Stack Deployment on CentOS

The LAMP stack; for Linux, Apache, MySQL and PHP, allows a user to run dynamic websites and web applications.

For this exercise, the installation and basic configuration of the LAMP stack will be done on the existing web server.

This blog uses Octopress so the LAMP stack is purely as proof of concept.

Installation

From shell, install and start the Apache web server as shown:

$ yum install httpd

$ service httpd start

Accessing the web server’s ip address from a web browser should now return a web page.

From shell, install and start MySQL using the following:

$ yum install mysql-server

$ service mysqld start

The next step is to install PHP using:

$ yum install php php-mysql

Hardening

After successful installation, basic configuration can be done to harden the web server. Steps to take include:

  • Apache should not run as root

Create a non-privileged account to run Apache. From shell:

$ groupadd apache

$ useradd apache -g apache -d /dev/null -s /sbin/nologin

Using a text editor, modify the Apache configuration httpd.conf

$ User apache

$ Group apache
  • Restrict access permissions

This step intends to restrict access to the Apache directory by modifying permissions. From the shell:

$ chown -R root:root /etc/httpd

$ chmod -R 640 /etc/httpd

Additionally, restrict access permissions for Apache configuration and logs.

$ chmod -R 640 /etc/httpd/conf

$ chmod -R 640 /var/log/httpd
  • Minimise information leakage

It is important to minimise information leakage. To meet this objective modify the Apache configuration httpd.conf

ServerSignature Off

ServerTokens ProductOnly

ServerName www.mywebsite.com:80
  • Basic MySQL configuration

By default, MySQL has a root account with a blank password. This and other basic configuration changes can be made from terminal by running the following:

$ /usr/bin/mysql_secure_installation