Como implantar um stack LAMP em um Cloud Server com CentOS 6?

Como implantar um stack LAMP em um Cloud Server com CentOS 6?

O que é LAMP?

LAMP é um grupo de softwares e de código aberto utilizado em servidores Web.

Sua sigla significa Linux, Apache, MySQL e PHP.

Como instalar?

LAMP Server

1. Para iniciar a instalação, realize o seguinte comando para instalar o LAMP em seu servidor:

sudo yum install httpd mysql-server php php-mysql

2. Após a instalação dos pacotes, configure os serviços do Apache e MySQL para que iniciem automaticamente junto com a inicialização do servidor:

sudo chkconfig httpd on
sudo chkconfig mysqld on

3. Inicie os serviços do Apache/MySQL:

service mysqld start
service httpd start

4. Realize a configuração básica do MySQL:

mysql_secure_installation

O comando acima iniciará um questionário com algumas configurações básicas que devem ser realizadas.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Como apenas foi instalado o pacote MySQL, o serviço permanece sem senha. Sendo assim, basta pressionar "Enter".

5. Recomendamos que as seguintes configurações abaixo sejam seguidas:

Set root password? [Y/n] y

Selecionando Y nesta opção, o MySQL configurará uma nova senha para o usuário root do serviço.

Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

6. Após este processo, os serviços encontram-se instalados em seu Cloud Infraestrutura.

Configurações recomendadas

Para melhor performance e aumento de segurança, recomendamos a realização dos seguintes passos:

Apache

Instalar o Mod Security:

O Mod Security é um firewall para aplicação Web que protege seu servidor Apache.

Para instalá-lo, execute os passos abaixo:

1. Instale os pacotes que são dependências para instalação do Mod Security:

yum install gcc make
yum install libxml2 libxml2-devel httpd-devel pcre-devel curl-devel

2. Execute os seguintes passos abaixo para realizar a instalação:

cd /usr/src
wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz
tar xzf modsecurity-2.9.1.tar.gz
cd modsecurity-2.9.1
./configure
make install

3. Realize a cópia do arquivo de configuração do Mod Security para a pasta do Apache

cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf
cp unicode.mapping /etc/httpd/conf.d/

4. Após a realização da copia, mude para a pasta do Apache e altere as seguintes variáveis no arquivo modsecurity.conf:

cd /etc/httpd/conf.d

SecRuleEngine On
SecRequestBodyAccess Off

5. Mude para a pasta do Apache e altere e insira a linha para carregar o módulo modsecurity no arquivo httpd.conf:

cd /etc/httpd/conf

LoadModule security2_module modules/mod_security2.so

6. Realize a reinicialização do serviço

service httpd restart

Instalar o Mod Evasive

Como o Mod Security não possui uma regra para proteção a ataques de negação de serviço, recomendamos a utilização do Mod Evasive que a realiza:

1. Para instalá-lo utilize os comandos:

cd /usr/src 
wget http://pkgs.fedoraproject.org/repo/pkgs/mod_evasive/mod_evasive_1.10.1.tar.gz/784fca4a124f25ccff5b48c7a69a65e5/mod_evasive_1.10.1.tar.gz
tar xzf mod_evasive_1.10.1.tar.gz
cd mod_evasive
apxs -cia mod_evasive20.c 

2. Crie e edite o arquivo /etc/httpd/conf.d/evasive.conf:

<IfModule mod_evasive20.c>
DOSHashTableSize 3097 
DOSPageCount 20
DOSSiteCount 100
DOSPageInterval 3
DOSSiteInterval 5
DOSBlockingPeriod 300
DOSEmailNotify "<SUA CONTA DE EMAIL>"
DOSLogDir "/var/log/apache2/mod_evasive"
</IfModule>

3. Realize a reinicialização do serviço

service httpd restart

PHP

1. session.name: A alteração do padrão dessa variável (PHPSESSID) previne ataques do tipo Session Fixation.

session.name = (Nome desejado Ex. MYSESSID)

VSFTPD (FTP)

Para facilitar a manipulação de arquivos em seu servidor Web, recomendamos instalar o serviço FTP (VSFTPD):

1. Execute os seguintes comandos para instalação:

yum install vsftpd

2. Insira ou altere as seguintes configurações no arquivo de configuração do VSFTPD (/etc/vsftpd.conf)

anonymous_enable=NO
chroot_local_user=YES


3. Crie um usuário para acesso FTP:

useradd ftpuser

4. Atribua uma senha ao usuário:

passwd ftpuser

5. Para que o usuário FTP não possua acesso a todo servidor, recomendamos a criação de um link para a pasta onde é publicado o conteúdo web (Padrão = /var/www/html/).

mkdir /home/ftpuser/public_html
mount --bind /var/www/html/ /home/ftpuser/public_html/
chown ftpuser.ftpuser /home/ftpuser/public_html


6. Para que este link não se perca recomendamos a inclusão da seguinte linha no arquivo /etc/fstab:

/var/www/html/ /home/ftpuser/public_html none bind 0 0

7. Após a realização de todos os procedimentos, realize o restart do serviço vsftpd:

service vsftpd restart