Segurança em Aplicações Web com GNU/Linux

Documentos relacionados
Programação para Servidores. Cassio Diego

Gerenciamento de Arquivos

LINUX PERMISSÕES DE ARQUIVOS E DIRETÓRIOS

O GUIA RÁPIDO SOBRE SERVIDOR WEB 4 PASSOS PARA CONFIGURAÇÃO DO SEU PRÓPRIO SERVIDOR WEB COM APACHE

Tutorial: Nginx com PHP 7 e MySQL no Ubuntu LTS

Instalação Apache + MySQL + PHPMyAdmin CentOS

Sistemas Operacionais. Laboratório 1 (Ambiente de Aprendizado)

Prof. Samuel Henrique Bucke Brito

Administração de sistemas Linux. Permissões de arquivos e diretórios em sistemas linux.

Inscrições em Eventos

Administração de Sistemas Operacionais

PRÁTICA APACHE. Prof. Claudio Silva

Instalação e Configuração de Servidores Web Server Apache. Prof. Alex Furtunato

Tutorial para Instalação do dotproject

SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE 27/02/2012

5/7/2010. Apresentação. Introdução. Ponto de vista do usuário. Curso Tecnologia em Telemática. Disciplina Administração de Sistemas Linux

Gerência de Redes de Computadores Zabbix Instalação. Prof. Alex Furtunato

TECNOLOGIA EM REDES DE COMPUTADORES - 3º PERÍODO ADS - ADMINISTRAÇÃO DE SERVIDORES Grupo: Alexandre - Leonel - Mateus - Ricardo

Manual Instalação e-cidade-transparência no Ubuntu Server

Tutorial Balanceamento de carga em servidores com HAProxy

Configuração de servidores Linux

Introdução a Sistemas Abertos. Manipulação de Usuários e Permissões

WINDOWS. 1. Baixar o software cwrsync e efetuar a instalação.

Shell Script. Básico do básico

Breve introdução a User Dir e Senhas no Apache Uma abordagem prática (aka crash course on User Dir and Directory Authentication on Apache)

Permissões de acesso no Linux. Sistemas Operacionais Curso Técnico em Informática Prof. Maria de Fátima de F. B. Marcílio

Minicurso Básico de Linux

REDES ASA. Prova 1o Bimestre. Obs: Questões RASURADAS são consideradas como ERRADAS GABARITO

Instalação e Configuração do Servidor HTTPD Apache

Administração de Redes Linux

Laboratório de Redes Prof. Dinailton

Instalando servidor Apache

Instalação e Configuração

Certificados SSL. Instalar certificados do ICPEdu

Laboratório FTP. Francisco Edigleison da Silva Barbosa Professor: Kelvin Lopes Dias

FACULDADE DE TECNOLOGIA SENAC GESTÃO DA TECNOLOGIA DA INFORMAÇÃO LABORATORIO DE REDE

Sistemas Operacionais Livres. Servidor Web Apache

COORDENAÇÃO DE TECNOLOGIA (COTEC) MAIO/2010

Torne-se um Sysadmin Linux. Prof. Juliano Ramos

Interface gráfica do linux

Sistemas Operacionais de Redes. Permissões

at - executa tarefas com horário agendado As permissões para executar o comando at são feitas pelos arquivos /etc/at.allow e /etc/at.deny.

Criando um site com LAMP e Joomla em 30 minutos

Manual de Instalação do TelEduc 4.4

Permissões de acesso no Linux

Linux Para Servidores Plano de Aula - 32 Aulas (Aulas de 1 hora).

Linux CRON

Para o processo de instalação do servidor Apache, deve se executar o seguinte comando, como root.

Aqui estou novamente com um outro script, só que esse é bem mais funcional do que o ultimo que aqui postei.

Explorando as vulnerabilidades do APT (Advanced Packaging Tools)

Gerência de Redes de Computadores MRTG. Prof. Alex Furtunato

Instalação Apache Tomcat 8.5 no Debian 8

Laboratório de Redes de Computadores INSTALANDO SERVIDOR APACHE NOS CENTOS 6.5

LABORATÓRIO 0 Revisão GNU/Linux

Formação de Administradores de Redes Linux LPI level 1. Aula 2 SENAC TI Fernando Costa

Administração de sistemas Linux. Estrutura de diretórios Linux O diretório /etc

Estas instruções de trabalho com a plataforma Linode. Se você não tiver um Linode ainda, se inscrever para um VPS Linux e comece hoje mesmo.

Introdução a Sistemas Abertos. Shell Script

Configuração. Ubuntu Server Sistemas Distribuídos Engenharia da Computação

Variáveis. Você pode ver as variáveis do sistema com os comandos printenv, env e set como mostra o exemplo abaixo:

Zabbix 3 Instalação INSTALAÇÃO

Relatório contendo todos os comandos do Linux estudados

Sistemas Operacionais. Prof. MSc André Y. Kusumoto

Configuração do banco de dados. - Crie o banco de dados no MySQL. - Abrir o arquivo app/database/database.conf.php

GLPI Gestão total e gratuita do seu parque informático

ServerAdmin - Se o sistema detectar algo de anômalo, um mail será enviado a bazar@projeointegador.

Aula 08 Gerador de Relatórios Squid - SARG

O Linux Possui varias características que diferenciam dos outros sistemas operacionais e que aproximam do UNIX, sendo um dos motivos da sua escolha

Dicas PET-Tele. Instalação do módulo CGILua no Apache 2.2

Redes de Computadores

Atividade Proposta da Disciplina: Laboratório de Rede de Computadores

Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte

INTRODUÇÃO A PROGRAMAÇÃO PARA WEB

Gestão de ficheiros e directórios

Capítulo 7. Hyper Text Transfer Protocol (HTTP). Serviço Apache. - Protocolo HTTP - Sessão HTTP - Configuração do serviço Apache

Usando o terminal -- Linux -- Flávia Maristela

Transcrição:

Segurança em Aplicações Web com GNU/Linux Erick dos Santos Alves CAOS / TIC / - 2016

Roteiro Motivações Conheça sua aplicação O agente HTTP chown e chmod: importantes aliados Hardening no servidor HTTP (ex.: PHP) Automação com crontab e Shell Script Considerações Finais

Motivações Implementar mais uma camada de segurança à aplicação. Necessário pouco conhecimento em sistemas operacionais GNU/Linux Garantir maior proteção a brechas de segurança que a aplicação web pode possuir.

Conheça sua aplicação Questionamentos Em qual diretório ficam os arquivos temporários? Qual diretório é reservado para uploads? E para o cache e os logs? Quais arquivos ou diretórios serão alterados ao lançar uma nova release?

Agente HTTP Usuário do sistema que representa o serviço HTTP (daemon) Debian: www-data (Apache) / nginx CentOS: apache (Apache) / nginx Por padrão, uploads e atualizações de arquivos através do protocolo HTTP são criados com o ownership do agente Nesta apresentação utilizaremos um nome genérico: http rwxr xr x 10 http http 4,0K Mar 20 2013 index.html

chown e chmod: Importantes Aliados (1) Permissões do Usuário (owner) Permissões do Grupo (owner_group) Permissões para todos os Outros OWNERSHIP rwxr xr x 10 owner owner_group 4,0K Mar 20 2013 myfile.txt u g o r = Read (4pt) w = Write (2pt) x = execution (1pt) Total: 7pt DAC Discretionary Access Control chmod [-R] [u g o][+/-][r w x] myfile.txt Grupo dono do arquivo Usuário dono do arquivo chown [-R] owner:owner_group myfile.txt -R utilizado em diretórios (recursividade)

chown e chmod: Importantes Aliados (2) Passo 1 (adduser) Criação de um usuário administrativo ( admin ) # adduser admin

chown e chmod: Importantes Aliados (3) Passo 2 (chown) Usuário administrativo como dono de TODOS os arquivos e diretórios da aplicação. Porém o agente HTTP permanece como grupo-dono dos arquivos e diretórios. # chown R admin:http /var/www/app

chown e chmod: Importantes Aliados (4) Passos 3, 4 e 5 (chmod) Retire todas as permissões para outros usuários Retire a escrita de grupo de todos os diretórios e arquivos da aplicação Devolver a escrita do grupo nos diretórios de upload e de trânsito constante de arquivos (cache e temporários). # chmod R o rwx /var/www/app # chmod R g w /var/www/app # chmod R g+w /var/www/app/{upload,cache,tmp}

Hardening no Apache e/ou Nginx (1) Bloqueie a execução de PHP nos diretórios onde a permissão de escrita for mantida para o agente HTTP para evitar que arquivos maliciosos enviados para este diretório sejam executados via web. Apache <DirectoryMatch "(uploads logs)\/"> <filesmatch "\.php$"> Order deny,allow deny from all </filesmatch> </DirectoryMatch> Nginx location ~ (uploads logs)\/ { deny all; }

Hardening no Apache e/ou Nginx (2) Crie um VirtualHost para cada aplicação web que existir no servidor: Apache <VirtualHost *:80> ServerName app.exemplo.br DocumentRoot /var/www/app AllowOverride None AllowOverrideList None <DirectoryMatch "(uploads logs)\/"> <filesmatch "\.php$"> Order deny,allow deny from all </filesmatch> </DirectoryMatch> </VirtualHost> Nginx server { server_name app.exemplo.br listen 80; index index.html index.php; location / { root /var/www/app } } location ~ (uploads logs)\/ { deny all; } location ~ ^.+\.php$ { diretivas para o PHP-FPM }

Automatizando com crontab e Shell Script (1) O Shell Script pode ser utilizado para automatizar o processo de desbloqueio e bloqueio de aplicativos que necessitem de atualizações periódicas. Para isso pode ser utilizado uma sequência de comandos chown e chmod (passos 2 a 5). # lock app s /var/www/app Aplicativo /var/www/app BLOQUEADO # lock app n /var/www/app Aplicativo /var/www/app DESBLOQUEADO

Automatizando com crontab e Shell Script (2) Exemplo de Shell Script (comando lock-app $1 $2): #!/bin/sh case $1 h) # < HELP echo Aqui descrevo o help do comando... ;; s) # < BLOQUEIO chown R admin:http $2 chmod R o rwx $2 chmod R g w $2 # WHITE LIST chmod R g+w $2/upload $2/tmp $2/cache # (e outros...) echo Aplicacao $2 BLOQUEADA ;; n) # < DESBLOQUEIO chmod R g+w $2 echo Aplicacao $2 DESBLOQUEADA ;; *) # < outros valores de $1 que não interessam echo Opção inválida! ;;

Automatizando com crontab e Shell Script (3) Execução periódica de Shell Script para alteração/correção de permissões de arquivos provenientes de uploads ou logs para prevenção de exclusões acidentais e/ou intencionais # m h DoM mon DoW user command 0 */1 * * * root /path/lock app s /var/www/app

Próximo passo: Estude SELinux O SELinux utiliza um conjunto de regras para autorização ou proibição de operações, oferecendo uma camada adicional de segurança a um sistema GNU/Linux. No CentOS já vem instalado, porém no Debian é necessário instalar: # apt get install selinux basics selinux policy default Para listar as regras SELinux utilize o comando ls -Z rw r r. user user system_u:object_r:admin_home_t:s0 arquivo.txt

Considerações Finais Estes procedimentos não resolverão todas as vulnerabilidades, mas oferecem uma barreira adicional para garantir uma maior proteção à sua aplicação web. THERE'S NO

Dúvidas??? # man palestra # palestra help

# whoami Erick dos Santos Alves E-mail: erick_sa@ufrj.br