O dia-a-dia do administrador de redes/sistemas tem em suas atividades manter o sistema no ar o maior tempo possível. Essa disponibilidade é fundamental para o sucesso da comunicação da instituição, seja na hora de consultar um e-mail, procurar um contato ou mesmo analisar o relatório online.
O que tem de errado nisso? Nada, atualmente sistemas são projetados para ficar on-line 24×7, e onde está o problema? Justamente é isso que o Cracker procura, sistemas on-line 24 horas e “desatualizados”, passíveis de exploração através de vulnerabilidades novas ou antigas. A demanda de serviços versos mão de obra faz com que o administrador, em muitos casos, não dê conta de atualizar o parque de servidores em tempo hábil. Toda semana tem inúmeras atualizações dos sistemas operacionais, seja Linux, Windows, MacOs ou Android.
Um aliado do administrador de sistemas e da Segurança da Informação são os arquivos de logs que registram tudo que acontece. Em servidores Linux os logs são armazenados em /var/log, no entanto, alguns aplicativos, como o Apache, incluem um subdiretório específico onde guardam seus próprios arquivos.
Acostume-se a olhar constantemente/diariamente os arquivos de log dos sistemas que você administra. Isto é importante para encontrar possíveis falhas de segurança, tentativas de acessos não autorizados e erros de aplicações ou sistemas.
Quando um computador é invadido ou existe a suspeita, os logs costumam ser o principal insumo para iniciar uma investigação e tentar entender por onde e como o invasor procedeu. Muitos sistemas HIDS (Sistemas de detecção de intrusão para Hosts) também usam os logs como uma forma de “alarme antecipado”, reconhecendo padrões de ataque antes que eles tenham sucesso, alertando os administradores do sistema (é comum o atacante falhar várias vezes antes de acertar).
Abaixo a lista dos arquivos de logs mais importantes (podem variar de acordo com o sistema operacional);
/etc/mail/maillog = Arquivo que registra os logs do Servidor de E-mails; /var/log/messages = Contém registros de acesso ao sistema e em alguns casos registros do IPTABLES; /var/log/httpd/(access, error ou agent.log) = Logs do Servidor Web Apache; /var/log/lpr.log = logs de impressoras. Hoje são visadas por Crackers, pois geralmente não recebem atualizações ou são sistemas embarcados baseados em Linux ou Windows; /etc/log/daemon.log = Logs de serviços em geral; /var/log/syslog: log do sistema; /var/log/auth.log: log de autenticação; /var/log/kern.log: log do kernel; /var/log/cron.log: log crond; /var/log/lighttpd: log de erro e acesso a Lighttpd; /var/log/boot.log: registro de inicialização do sistema; /var/log/mysqld.log: registro de banco de dados MySQL;
“Alguns comandos facilitam na hora de identificar possíveis alterações no sistema”. Para escrever esse artigo foi utilizado o sistema operacional Ubuntu 14.04. Note que pode ser necessário a instalação de alguns utilitários.
Comando EGREP:
Uma versão do grep que aceita a sintaxe moderna de expressões regulares.
Execute o comando:
egrep :x:0: /etc/passwd
O comando egrep deve retornar em uma instalação padrão Linux a linha abaixo:
root:x:0:0:root:/root:/bin/bash
Por padrão somente deveria existir um usuário com UID 0.
Comando HISTORY:
Comandos executados no sistema pelo usuário.
Os comandos executados também são uma fonte para coletar informações sobre o que foi feito no servidor.
Exemplo:
less ~/.bash_history
Retorno do comando:
hostname -a cat /proc/version sudo ip -6 address show eth0 sudo ip -6 address show eth1 sudo cat /proc/net/if_inet6 ifconfig sudo traceroute -n -w 2 -m 2001:4860:4860::8888 exit sudo cat /var/log/*|grep 'maq01'|grep 'kernel'|awk '{print $1 $2 $3 $6 $7 $8 $9 $10 $11 $12}' /home/user01/.bash_history (END)
Comando CURL:
É uma ferramenta desenvolvida para a transferência de arquivos pela Internet pelo próprio terminal de comandos do sistema
Obtenha o IP Publico da sua rede.
Exemplo:
user01@maq01:~$ curl ifconfig.me
Retorno do comando:
123.123.xx.xx
Comando LSOF:
É utilizado para mostrar os arquivos/programas que estão abertos no sistema.
Aplicações usando conexões de internet no momento.
Exemplo:
user01@maq01:~$ lsof -P -i -n
Retorno do comando:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME indicator 2026 user01 13u IPv6 97540 0t0 TCP [::1]:58488->[::1]:631 (CLOSE_WAIT) thunderbi 2313 user01 32u IPv4 95541 0t0 TCP 123.123.xx.xx:55198->123.123.xx.xx:993 (ESTABLISHED) thunderbi 2313 user01 38u IPv4 14717 0t0 TCP 123.123.xx.xx:52630->123.123.xx.xx:993 (ESTABLISHED) thunderbi 2313 user01 65u IPv4 153268 0t0 TCP 123.123.xx.xx:55511->123.123.xx.xx:993 (ESTABLISHED) ssh 2519 user01 3u IPv4 15981 0t0 TCP 123.123.xx.xx:33664->123.123.xx.xx:22 (ESTABLISHED)
Este comando, exibe somente o nome das aplicações:
Exemplo:
user01@maq01:~$ lsof -P -i -n | cut -f 1 -d " "| uniq | tail -n +2
Retorno do comando:
indicator thunderbi ssh
Comando SS:
Outro utilitário para visualizar quais sistema estão conectados e quais aplicações estão usando conexões de internet no momento.
Exemplo:
user01@maq01:~$ ss
Retorno do comando:
tcp CLOSE-WAIT 28 0 123.123.xx.xx:37952 91.189.xx.xx:https tcp CLOSE-WAIT 28 0 123.123.xx.xx:37960 91.189.xx.xx:https tcp ESTAB 0 0 123.123.xx.xx:34474 123.123.xx.xx:imaps tcp ESTAB 0 0 123.123.xx.xx:36131 123.123.xx.xx:imaps tcp CLOSE-WAIT 28 0 123.123.xx.xx:48760 91.189.xx.xx:https
Comando WHEREIS:
Busca por arquivos executáveis, man pages, arquivos de configuração e fontes.
Encontre o path/manual/binário de um comando
Exemplo:
user01@maq01:~$ whereis find
Retorno do comando:
find: /usr/bin/find /usr/bin/X11/find /usr/share/man/man1/find.1.gz
Comando COMPGEN:
Gerar correspondências possíveis de conclusão para a palavra de acordo com a opção.
Lista todos os comandos do seu sistema ou pesquisa por um determinado comando: compgen -c | grep find
Exemplo:
user01@maq01:~$ compgen -c | grep find
Retorno do comando:
oldfind ippfind find memdiskfind gst-typefind-0.10 sane-find-scanner find2perl gst-typefind-1.0 findhyph findfs findmnt
Comando WHO ou W:
Mostra quem está logado no sistema.
Exemplo:
user01@maq01:~$ w
Retorno do comando:
12:00:00 up 1 day, 3:25, 3 users, load average: 0,16, 0,19, 0,20 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT user01 :0 :0 Seg08 ?xdm? 1:34m 0.28s init --user user01 pts/0 :0 Seg08 24:00m 0.08s 0.02s ssh xx.xx.exemplo.br user01 pts/8 :0 Seg08 0.00s 1.30s 0.00s w
Exemplo:
user01@maq01:~$ who
Retorno do comando:
user01 :0 2014-11-03 08:35 (:0) user01 pts/0 2014-11-03 08:38 (:0) user01 pts/8 2014-11-03 08:59 (:0)
Comando DU:
É utilizado para saber o espaço utilizado em disco, por pastas ou arquivos.
Diretórios que estão consumindo espaço no seu HD.
Exemplo:
user01@maq01:/$ sudo du -sch *
Retorno do comando:
9,8M bin 150M boot 14M etc 17G home 573M opt 56K root 216K tmp 4,6G usr 2,4G var 26G total
Comando cat /etc/redhat-release:
Identifica a distro que está sendo utilizada. No caso Distro baseado em RedHat.
Exemplo:
# cat /etc/redhat-release
Retorno do comando:
CentOS release 6.6 (Final)
Comando LSB-RELEASE:
Identificar a distro que esta usando, Distro baseado em Debian.
Exemplo:
user01@maq01:~$ lsb_release -a
Retorno do comando:
Distributor ID: Ubuntu Description: Ubuntu 14.04.1 LTS Release: 14.04 Codename: trusty
A implementação de soluções de IDS/IPS, Firewalls, Antivírus e politicas de segurança são bem-vindos na medida do possível. Mantenha o seu servidores/softwares atualizados e não partilhe as suas passwords.
Referências:
http://www.sans.org/reading-room/whitepapers/logging/
Análise Forense Computacional de Logs em Sistemas Linux: as testemunhas da rede
Análise Forense Computacional de Logs em Sistemas Linux: as testemunhas da rede
http://tutorfreebr.blogspot.com.br/2012/05/onde-estao-os-arquivos-de-log-registros.html
http://www.linuxdescomplicado.com.br/2013/11/20-comandos-linux-que-voce-talvez-nao.html
http://www.ibm.com/developerworks/br/linux/library/l-lpic1-v3-104-7/