[Linux-sbo] [Dicas-L] Dica Check-List

Dicas-L-Owner em unicamp.br Dicas-L-Owner em unicamp.br
Domingo Agosto 28 07:30:43 BRT 2005


*** Treinamento Dextra Sistemas em Campinas ***
31/08  Modelagem UML
05/09  PostgreSQL: Performance Tuning
12/09  PHP: Programação com Banco de Dados
19/09  JBoss: Arquitetura e Administração
---------------------------------------------------------------------------
Voce sabe fazer um teste de vulnerabilidades ( pen test ) em sua rede?

O curso  Hackers Expostos da 4linux mostra como fazer e também, apresenta
o  conteúdo necessário para a prova de perito criminal da Polícia Federal
e para a certificação Ethical Hacker.
Mais informações  ligue para (11) 2125-4747 ou visite o
site http://www.4linux.com.br/treinamento/hackers406.php
---------------------------------------------------------------------------

  Dica Check-List
  ===============

Colaboração: Cesar Augusto Domingos "treinamentor em 4linux.com.br"


	Fazendo um Check-list nos Serviços do Sistema
	=============================================

Configurar serviços hoje em um sistema Linux, não é mais tão complicado como antigamente. Muitos serviços, depois de instalado já saem funcionando com a sua configuração padrão, ou muitos já vem instalados no sistema. Embora quando pensamos em segurança já é assumido que não devemos colocar um serviço em produção com configurações padrões sem que as mesmas sejam testadas pensando nos principios de segurança.

Mas o que muitos administradores iniciantes e até mesmo experientes não sabem tirar proveito de ferramentas clássicas para checar se o serviço está funcionando corretamente, verificar em qual porta ele está trabalhando, se ele está recebendo requisições corretamente e até mesmo, em alguns casos, ver se nenhum invasor fez algo em seu sistema que possa prejudica-lo, para isso mostrarei alguns comandos que podem formar o que costumo chamar de Check-List.

Primeiramente temos que saber a qual porta determinado serviço está associado. Podemos ver algumas portas padrões do sistema no arquivo /etc/services. Exemplo de algumas portas


  # cat /etc/services
  # cat /etc/services | grep -i ssh
  ssh             22/tcp                          # SSH Remote Login Protocol
  ssh             22/udp


Após termos uma noção das portas em que os serviços rodam, podemos utilizar um comando chamado netstat. Esse comando vai nos fornecer algumas informações sobre os serviços de rede do nosso sistema. É válido lembrar que encontramos implementações do netstat em outros sistemas operacionais e não necessáriamente as opções e mesmos os recursos são implementados da mesma forma.


  # netstat -nlt 
  
  -n : Opção para fazer o netstat não resolver os IP's para nomes.
  -l : Listar os Sockets que estão Ouvindo(Listen), ou seja, que estão prontos para receber uma conexão.
  -t : Listar somente os Sockets no protocolo TCP. Poderiamos utilizar o -u para protocolos UDP.


Com isso podemos ver várias informações sobre os Sockets que estão aguardando conexões. Exemplo:


  Proto Recv-Q Send-Q Endereço Local          Endereço Remoto         Estado
  tcp     0      0	 0.0.0.0:22              0.0.0.0:*             OUÇA


Proto é o protocolo que este Socket está trabalhando. No Endereço Local vemos que a porta 22 pode responder a qualquer interface de rede no sistema (0.0.0.0:22), no Endreço Remoto mostra que não há nenhuma conexão relacionada à aquela porta e que no Estado ela está em OUÇA, ou seja, aguardando conexões.

Poderiamos utilzar o netstat com o -a também, no lugar do -t para vermos todos os Sockets tanto os que estão ouvindo, que não estão ouvindo e os Estabelecidos, que vão ser muito importantes. Nos Estabelecidos podemos ver em qual interface o serviço está conectado e a qual porta e de onde está vindo a conexão.


  # netstat -nat
  Proto Recv-Q Send-Q Endereço Local            Endereço Remoto           Estado
  tcp      0     0    192.168.0.1:32778       200.123.123.123:143       ESTABELECIDA
  tcp6     0     0    ::ffff:192.168.0.1:22   ::ffff:192.168.0.8:32796  ESTABELECIDA


Agora que sabemos quais sockets estão disponíveis, podemos ver qual processo(serviço) está rodando nesse socket com o comando fuser. 


  # fuser -v 22/tcp
  -v: Modo Verbose
                         USER       PID ACCESS COMMAND
  22/tcp                 root       3943 f....  sshd


Com ele podemos ver qual usuário está rodando o processo, o PID que é o número do processo e o programa que está rodando que nesse caso é o sshd.
Para cada processo que está rodando, o sistema cria um diretório com PID dele no /proc, onde podemos obter algumas informações do processo, um deles é o arquivo cmdline que mostra o caminho completo do programa, nos mostrando assim que aquele programa é ele mesmo e não um program forjado.


  # cat /proc/3943/cmdline
  /usr/sbin/sshd


Outra ferramenta que poderiamos utilizar é a lsof, que vai nos mostrar informações parecidas com a do netstat e a fuser, só que em uma única ferramenta. A lsof mostrará os Socktes que estão Ouvindo, que estão Estabelecidos e entre outros, e nos mostrará também o usuário, o PID e o programa que está rodando, ou seja, poderiamos dizer que a lsof é uma junção da netstat e a fuser. Porém a lsof não vem instalada em todas as distro Linux, sendo necessário instala-lá via pacotes ou pelo source.


  # lsof -i
  
  -i : Listará todos os processos ou arquivos relacionados a uma interface de rede, se não for especificado uma interface de rede, como fizemos ele mostrará do todas as interfaces.
  
  firefox-b 4652   user   36u  IPv4  22723       TCP 192.168.0.1:38138->64.233.161.19:www (ESTABLISHED)
  ssh       8342   root    3u  IPv4 100376       TCP 192.168.0.1:54751->192.168.0.8:ssh   (ESTABLISHED)


Uma coisa que muitos administradores também esquecem de olhar são os Raw Sockets, que são os Sockets que não dependem de um protocolo específico, permite acesso direto a protocolos de baixo nível como ICMP, TCP, UDP, e IP, mais considerados por muitos como como um potencial foco de problemas de segurança devido ao fato que  poucos administradores verificam as atividades de Raw Sockets de seus sistemas.

Podemos ver se existe algum Raw Socket aberto no nosso sistema utilizando o netstat com uma outra opção.


  # netstat -nlw
  -w : Lista os Raw Sockets.


Provavelmente não terá nenhum aberto, então retorna um resposta vazia. Mas devemos ter muito cuidado com os Raw Sockets pois muitas BackDoors mais modernas utilizam o Raw Socket para abrir o seu sistema sem depender de um protocolo. 
O hping pode ser utilizado como uma BackDoor em seu sistema aproveitando-se do Raw Socket para poder executar comandos remotamente em seu sistema. Veja mais detalhes na documentação do hping.

Saída de uma respota positiva, utilizando o netstat para listar os Raw Sockets.


  Proto Recv-Q Send-Q Endereço Local          Endereço Remoto         Estado
  raw     0      0     0.0.0.0:255              0.0.0.0:*               7


E um último programa que podemos utilizar é o nmap que é um poderoso programa para varreduras  de portas ,nesse caso vamos ter a possibilidade de fazer uma análise interna ou externa do nosso sistema para vermos quais portas/serviços estão disponíveis. O nmap não vem por padrão nas distribuições Linux, sendo necessário instala-lo.
Então de uma outra máquina podemos fazer o seguinte teste.

Para Portas TCP.


  # nmap -sT 192.168.0.1
  
  -sT : Varredura de portas TCP completas.
  192.168.0.1 -> Seu IP.
  
  PORT     STATE SERVICE
  9/tcp    open  discard
  13/tcp   open  daytime
  21/tcp   open  ftp
  22/tcp   open  ssh


Ou podemos testar localmente.


  # nmap -sT localhost
  
  # nmap -sT -p 22 localhost
  
  PORT   STATE SERVICE
  22/tcp open  ssh


Para Portas UDP


  # nmap -sU 192.168.0.1
  
  -sT : Varredura de portas TCP completas.
  192.168.0.1 -> Seu IP.
  
  PORT      STATE         SERVICE
  9/udp     open|filtered discard
  53/udp    open|filtered domain
  111/udp   open|filtered rpcbind


Ou podemos testar localmente.


  # nmap -sU localhost
  
  # nmap -sU -p 53 localhost
  
  PORT   STATE         SERVICE
  53/udp open|filtered domain


Ou ainda olhando as portas TCP e UDP simultaneamente


  # nmap -sU -sT 192.168.0.1


Em alguns casos o uso do Nmap pode ser interessante para fazer o checklist de todas as portas ativas no servidor.


  # nmap -sU -sT -F 192.168.0.1
  
  -F: Todas as portas decladas no services


Ou olhar porta a porta até 65535


  # nmap -sU -sT -p- 192.168.0.1


Sendo assim conseguiremos ver todas as portas que estão disponíveis em nosso sistema.

Podemos ver também os banners dos serviços que estão rodando. Que para um invasor pode ser um informação preciosas.


  # nmap -sV 192.168.0.1
  
  PORT    STATE SERVICE VERSION
  22/tcp  open  ssh     OpenSSH 3.8.1p1 (protocol 2.0)
  25/tcp  open  smtp    Exim smtpd 4.50
  111/tcp open  rpcbind 2 (rpc #100000)
  113/tcp open  ident   OpenBSD identd
  MAC Address: 00:50:BF:63:D0:E7 (Mototech)


O nmap possui muitas opções, veja o manual dele para ver todas as opções de uso.


		CONCLUSÃO.
		==========

Com o conhecimentos dessas ferramentas um administrador poderá  fazer um bom check-list em seu sistema, e terá um total domínio de todos os serviços que estão rodando no sistema.

---------------------------------------------------------------------------------------

	Você quer conhecer o poder dos servidores no Linux?
	===================================================

Novidade: Curso Servidores Linux para Corporações - 403,
que foi idealizado para capacitar ao aluno a
implementar vários serviços de redes utilizando Software
Livre. Além dessa capacitação o curso o formato do curso
atende aos objetivos da LPI nível 2.

Saiba mais (http://www.4linux.com.br/treinamento/servidores_linux_403.php)
ou ligue para (11) 2125-4747 

--------------------------------------------------------------------
Colabore com a Dicas-L. Publique seu comentário sobre esta mensagem
em http://www.Dicas-L.unicamp.br/dicas-l/20050828.php
--------------------------------------------------------------------
PHP-GTK Criando Aplicações Gráficas com PHP
Editora Novatec
http://www.novatec.com.br/livros/phpgtk/
---------------------------------------------------------------
As mensagens da lista Dicas-L são veiculadas diariamente
para 28970 assinantes.

       Todas as mensagens da Dicas-L ficam armazenadas em 
               http://www.Dicas-L.unicamp.br/dicas-l/

A redistribuição desta e outras mensagens da lista Dicas-L pode
ser feita livremente segundo a licença Creative Commons
http://creativecommons.org/licenses/by-nc-sa/2.0/br/deed.pt

Dicas-L: Uma dica por dia desde 3 de março de 1997
--------------------------------------------------------------------


Mais detalhes sobre a lista de discussão Linux-sbo