Você está na página 1de 22

LAMP e Apache Hardenning

A plataforma LAMP consiste em quatro componentes que são


estruturados em camadas. Cada camada fornece uma parte crítica
da infraestrutura do site Express. A sigla LAMP signifca a junção
das tecnologias Linux, Apache, MySQL e PHP.

Hardenning é o processo de fortalecimento de segurança através de


ajustes e confgurações tanto para sistemas operacionais quanto
para serviços que serão executados, através do hardenning
difcultamos ao máximo a obtenção de informações e acessos
indevidos ao ambiente e seus sistemas.
LAMP e Apache Hardenning
O primeiro passo é implementar a camada de autenticação da
aplicação na base de dados, que reside no node Datacenter.

Autentique no node Intranet e verifque o código php da paǵina que


acessa a base de dados da aplicação
# vim /srv/www/express/backup.php

Verifque que existe uma autenticação sendo instanciada atraves de


uma DSN (Data Source Name) em php seguida de um SELECT na
base dados
LAMP e Apache Hardenning
O nome do usuário utilizado para o acesso a base é express, sua
senha de acesso é AllSafe0! e a base de dados se chama backup.

Esta base tem de ser defnida no MySQL junto com o usuário de


acesso, para isso devemos criar o usuário express na base, e
importar o dump com todos os dados da tabela backup.

Além disso será necessário defnirmos que o usuário express só terá


privilégios de leitura e escrita sobre a base de dados backup afm de
evitar incidentes de segurança.
LAMP e Apache Hardenning
Logue no node Datacenter e acesse o MySQL como root
# mysql -u root -p senha → LinuxForce01

Após autenticar crie a base chamada backup


> CREATE DATABASE backup;
> quit

Instale os pacotes zip e unzip e descompacte o arquivo de dump


# apt install zip unzip
# unzip /srv/asf/homes/analista/backup.zip
LAMP e Apache Hardenning
Importe o dump para o MySQL
# mysql -u root -p backup < backup.sql

Autentique no MySQL e acesse a base de dados backup


# mysql -u root -p
> SHOW DATABASES;
> USE backup

Visualize a tabela da base e sua descrição


> SHOW TABLES;
> DESC log;
LAMP e Apache Hardenning
Verifque o conteúdo da tabela
> SELECT * FROM log;

Insira o usuário express no MySQL delegando a ele as propriedades


de dono sobre a base backup e todo seu conteúdo, defna sua
senha como AllSafe0!
> GRANT ALL PRIVILEGES ON backup.* TO express@'%'
IDENTIFIED BY 'AllSafe0!';

Carregue as novas confgurações no SGBD


> FLUSH PRIVILEGES;
LAMP e Apache Hardenning
Encerre a conexão com o banco
> quit

Agora é necessário permitir que o MySQL receba conexões do node


Intranet, para isso será necessário alterar suas confgurações
# vim /etc/mysql/mysql.conf.d/mysqld.cnf
#bind-address = 127.0.0.1 → Comente esta diretiva

Reincie o serviço do MySQL


# systemctl restart mysql
LAMP e Apache Hardenning
Verifque o status do serviço
# systemctl status mysql

Verifque o socket de conexão do serviço


# ss -nltp | grep 3306

No node interno, acesse a aplicação via browser na página backup


$ frefox https://express.asf.com/backup.php

O acesso a página de backup esta aberto, será necessário defnir


um mecanismo de autenticação para acesso a esse conteúdo!
LAMP e Apache Hardenning
No node Intranet, crie o seguinte bloco de confguração no arquivo
de VirtualHost da aplicação express.
# vim /etc/apache2/sites-available/express

<Directory "/srv/www/express/backup.php">
AuthType Basic
AuthName "Acesso restrito e equipe de Backup"
AuthUserFile /etc/apache2/acess/.express
Require valid-user
</Directory>
LAMP e Apache Hardenning
Crie o caminho do arquivo de autenticação
# mkdir /etc/apache2/.access

Crie o arquivo de autenticação, defna o usuário analista com a


senha ‘LinuxForce00’ no para acessar seu conteúdo
# htpasswd -c -m /etc/apache2/.access/express analista

Reinicie o serviço do Apache e acesse a página via browser através


do node Interno para testar a nova confguração
# systemctl restart apache2
LAMP e Apache Hardenning
O webserver Apache não esta é instalado com confgurações
voltadas para segurança através de obscuridade, a prova de
conceito sobre essa questão pode ser verifcada com uma simples
execução do NMAP

Instale o NMAP no node interno e execute uma varredura no node


Intranet buscando informações sobre o serviço rodando na porta
443

# apt-get install nmap -y


# nmap -sT -sV 192.168.1.10 -p 443 -open
LAMP e Apache Hardenning
O resultado da varredura disponibiliza a versão do apache e
também indica o sistema operacional onde ele está sendo
executado, estas informações são sensíveis e não devem ser
acessíveis, iniciaremos o processo de hardenning trabalhando o
conceito de segurança por obscuridade no Apache

É importante conhecer a arquitetira do serviço e todos os arquivos


envolvidos na confguração de um serviço, não menos importante é
o conhecimento sobre o protocolo utilizado pelo recurso, o protocolo
utilizado pelo apache é o HTTP, segue abaixo a RFC que defne as
propriedades e aplicações do protocolo:

https://tools.ietf.org/html/rfc7230
LAMP e Apache Hardenning
Abaixo seguem os arquivos de confgurações importantes para o
gerenciamento de serviços e execução do Apache, verifque estes
arquivos junto com seu instrutor para entender mais sobre o Apache
e leia suas documentações para se aprofundar nos assuntos.

/etc/apache2/ports.conf
/etc/apache2/magic
/etc/apache2/envvars
/etc/apache2/conf-available/security.conf
/etc/apache2/conf-available/serve-cgi-bin.conf
/etc/apache2/mods-avalable/mpm-prefork|event|worker
LAMP e Apache Hardenning
Edite o arquivo /etc/apache2/conf-available/security.conf para
inciarmos o processo de Hardenning de serviço para o Apache
alterando as diretivas para os valores abaixo:

# vim /etc/apache2/conf-available/security.conf
ServerTokens Prod
ServerSignature of

Abra o arquivo /etc/apache2/apache2.conf e altere o valor da opção


Options no bloco /var/www conforme abaixo:
Options None
LAMP e Apache Hardenning
Desabilite a coleta de informações sensíveis como inodes, dados
MIME multipart e processos removendo o atributo ETAG do Header
das respostas do Apache adicionando a confguração abaixo:

# vim /etc/apache2/apache2.conf
...
FileETag None

No arquivo /etc/apache2/apache2.conf e altere a opção Options no


bloco / deixando sua confguração conforme abaixo:
-Indexes
LAMP e Apache Hardenning
Permita somente métodos HTTP necessários ao funcionamento da
aplicação, insira o bloco abaixo dentro da confguração dos blocos
/var/www/ e /srv/www

# vim /etc/apache2/apache2.conf
<LimitExcept GET POST HEAD>
deny from all
</LimitExcept>

Ainda no arquivo de confguração do Apache, defna a opção de fag


segura em seus cookies e evite ataques XSS e roubos de sessão
adicionando o bloco abaixo no arquivo.
LAMP e Apache Hardenning
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
</IfModule>

Salve o arquivo, carregue o módulo headers, e reinicie o serviço.


# a2enmod headers
# systemctl restart apache2
LAMP e Apache Hardenning
No arquivo principal de confguração altere o bloco /srv/www para
/srv/ww/express/ e modifque redefna a linha Options com as
seguintes confgurações

Options -Index -ExecCGI -Includes

Salve o arquivo e reinicie o serviço


# systemctl restart apache2

Teste o acesso via browser no node cliente interno.

Você também pode gostar