Capitulo 1 (5)

9
1 WebServerSecurity

description

oysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysoysvvv

Transcript of Capitulo 1 (5)

Page 1: Capitulo 1 (5)

1

WebServerSecurity

Page 2: Capitulo 1 (5)

2

SumárioCapitulo 1 ............................................................................................................................... 4

1. Introdução .................................................................................................................. 5

2. Instalação e Configuração de um servidor WEB ...................................................... 5

2.1. Configurações Básicas do Linux............................................................................. 5

2.2. Alterando o nome da máquina.............................................................................. 5

2.3. Instalação e configuração do MySQL Server......................................................... 6

2.4. Instalação e configuração do Apache ................................................................... 6

2.5. Instalando o PHP5 .................................................................................................. 7

2.6. Testando o PHP5 / Obtendo detalhes sobre o PHP ............................................. 7

2.7. Suporte ao MySQL no PHP5................................................................................... 8

3. Wacko Picko ............................................................................................................... 9

Capitulo 2 ............................................................................................................................. 10

4. Tipos de Ataque ....................................................................................................... 11

4.1. Fingerprint em Servidores Web........................................................................... 11

4.1.1. Netcat ................................................................................................................... 11

4.1.2. Curl ........................................................................................................................ 12

4.1.3. Whatweb .............................................................................................................. 12

5. WebAppScans........................................................................................................... 13

5.1.1. NIKTO .................................................................................................................... 14

5.1.2. W3AF..................................................................................................................... 14

5.1.3. VEGA ..................................................................................................................... 15

5.2. Online Web Scanners ........................................................................................... 15

Capitulo 3 ............................................................................................................................. 16

6. Instalação do Ambiente em Chroot ........................................................................ 17

7. Suhosin ..................................................................................................................... 19

7.1. Instalando o PHP5 e Suhosin ............................................................................... 20

8. ModSecurity + Geo IP .............................................................................................. 23

9. Mod Evasive ............................................................................................................. 29

10. Mod QoS ............................................................................................................... 31

11. Mod Limitipconn .................................................................................................. 32

12. OSSEC.................................................................................................................... 33

13. Mysql..................................................................................................................... 35

Page 3: Capitulo 1 (5)

3

Page 4: Capitulo 1 (5)

4

Capitulo 1

Web Security Server

Page 5: Capitulo 1 (5)

5

1. IntroduçãoAtualmente a maioria das aplicações estão migrando para o ambiente WEB. E

com o crescimento dessas aplicações on-line, a demanda por segurança também

aumenta, pois antes as bases de dados ficavam restritas ao acesso vindo de

dentro da empresa, entretanto agora, com as aplicações WEB, as bases de

dados, bem como servidores públicos que possuem acesso à rede interna, estão

expostos ao acesso externo, muitas vezes sem controle de quem acessa. Por

conta desse cenário, precisamos saber como se comporta um servidor WEB configurado

de maneira padrão, bem como os riscos que corremos, e como é possível aumentar sua

segurança, dificultando as explorações e comprometimentos. Sabemos que no caso de

uma aplicação PHP, muito do que consideramos como segurança, está vinculado

às boas práticas de programação. Entretanto, não podemos deixar de lado a

importância que há na configuração correta, levando em conta a segurança, de

um servidor Apache e do próprio PHP, com as devidas alterações no php.ini e

aplicação de patchs de segurança.

2. Instalação e Configuração de umservidor WEB

Para iniciarmos nossa prática, precisamos instalar e configurar um servidor WEB que é

considerado o padrão LAMP (Linux + Apache + MySQL + PHP). Utilizaremos um Debian

Linux, na versão 7, codinome Wheezy, como base e instalaremos os pacotes

existentes em seu repositório padrão, posto que é assim que muitos servidores

são instalados e configurados

2.1. Configurações Básicas do LinuxPara o correto funcionamento do apache2, precisamos realizar algumas

configurações para que o nome do computador seja resolvível para si mesmo.

2.2. Alterando o nome da máquina

Page 6: Capitulo 1 (5)

6

# vi /etc/hosts

127.0.0.1 localhost192.168.x.x oys-lamp-inseguro.oys.local oys-lamp-inseguro

Vamos editar o arquivo /etc/hostname, para a máquina ter o nome completo comdomínio:

# vi /etc/hostname

oys-lamp-inseguro.oys.local

2.3. Instalação e configuração do MySQLServer

# apt-get install mysql-server mysql-client

Após a instalação dos pacotes, vamos setar uma senha para o root do MySQL:

2.4. Instalação e configuração do Apache

Page 7: Capitulo 1 (5)

7

A seguir, vamos instalar o servidor Web Apache 2

# apt-get install apache2

No debian, o diretório raiz padrão do Apache2 é /var/www, o arquivo de configuração é

/etc/apache2/apache2.conf. As configurações adicionais são armazenadas em sub-

diretórios de /etc/apache2 como /etc/apache2/mods-available (para os módulos do

apache2) e /etc/apache2/sites-enable (para virtual hosts habilitados) e

/etc/apache2/conf.d para demais configurações.

2.5. Instalando o PHP5

Podemos instalar o PHP5 e o módulo Apache PHP5 da seguinte forma:

# apt-get install php5 libapache2-mod-php5

Devemos reiniciar o apache após a instalação:

# /etc/init.d/apache2 restart

2.6. Testando o PHP5 / Obtendodetalhes sobre o PHP

O diretório raiz do apache2 é /var/www. Agora vamos criar um arquivo chamado info.php

nesse diretório e chamá-lo em um navegador. O arquivo exibirá vários detalhes da versão

do PHP instalado.

# vi /var/www/info.php

<?php

phpinfo();

?>

Agora podemos abri-la em um navegador (http://ip/info.php)

Page 8: Capitulo 1 (5)

8

2.7. Suporte ao MySQL no PHP5

Para obter suporte ao MySQL no PHP, podemos instalar o pacote php5-mysql. É uma boa

ideia instalar alguns outros módulos, você pode precisar deles para suas aplicações.

Segue alguns módulos que vamos instalar:

# apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagickphp5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recodephp5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Após o termino da instalação vamos reiniciar o apache2:

# /etc/init.d/apache2 restart

Mais uma vez, podemos checar em http://ip/info.php os módulos php recém instalados.

Após ter executado os passos acima, o nosso LAMP server, com suas configurações

padrão e sem proteção estará funcional.

Page 9: Capitulo 1 (5)

9

3. Wacko PickoVamos utilizar a aplicação Web WackoPicko. WackoPicko é uma aplicação em PHP escrita

por Adam Doupé. Ela contém as mais conhecidas e comuns vulnerabilidades (XSS, SQL

Injection, command-line injection, SessionID, File Inclusion, parameters Manipulation,

etc). WackoPicko foi desenvolvido com as básicas funções de uma aplicação comum,

como um blog de imagens. Ela possui as seguintes funções:

Autenticação

Upload de Imagens

Comentários nas Imagens

Compra de Imagens

Busca

Livro de Visitas

Área de Administração

Com essa aplicação, vamos conseguir visualizar um cenário real, com um servidor

inseguro, e um seguro, quais as diferenças que a proposta do curso lhe proporciona para

segurança. Para instalar o WackoPicko vamos precisar de uma database no banco MySQL,

porem a aplicação já possui um script que faz a criação e importação dos dados para o

MySQL.

# cd /tmp# wget https://github.com/adamdoupe/WackoPicko/archive/master.zip# apt-get install unzip# unzip –X master.zip# cd WackoPicko-master# mysql –u root –p senha < current.sql# cd website# cp –Rf . /var/www# cd /var/www# chmod 777 –R uploads/