sexta-feira, 30 de janeiro de 2009

NMAP - Descobrindo falhas de segurança

Falando em processos, estes são utilizados também para disponibilizar acessos a um host através da rede por meio de portas. Para descobrirmos quais portas estão abertas numa máquina podemos utilizar o comando 'nmap' que possui também outras funcionalidades muito interessantes e é também utilizado por hackers para descobrir brechas em servidores.

Nome: nmap
Definição: Ferramenta de exploração de segurança de rede e scaner de porta. Essa ferramenta foi desenhada para explorar rapidamente desde grandes redes até um simples host. Além da tabela de portas disponíveis em um host o nmap também pode fornecer outras informações como: Nomes de DNS reverso, sistemas operacionais, tipos de dispositivos e MAC address. Existem 6 tipos de estados de portas reconhecidos pelo nmap, que são: open (aberta), closed (fechada), filtered (provavelmente atrás de um firewall), unfiltered (a porta está acessível, porém o nmap não conseguiu determinar de ela está aberta ou fechada), open|filtered (o nmap não consegue definir se a porta está open ou filtered) e closed|filtered (o nmap não consegue definir se a porta está closed ou filtered).
Sintaxe: nmap [tipo de scan] [opções] [hostnames,endereços IP, redes, etc]
Opções:
-iL [arquivo de entrada] Entrada a partir de uma lista de hosts/redes
--exclude [host1,host2,...] Exclui do scan hosts e/ou redes.
-sP Scan através do ping. Verifica se os hosts estão online.
-PN Trata todos os hosts como online. Pula a descoberta de hosts.
-n Não resolve nomes de DNS.
-R Sempre resolve nomes de DNS.
-sU Scaneia portas UDP.
--traceroute Além do scaner normal mostra também o resultado do traceroute para cada host se especificado mais de um.
-p [intervalo de portas] Somente scaneia as portas especificadas. Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
-sV Sonda portas abertas para determinar informações de serviço/versão.
-O Habilita detecção de sistema operacional.
-S [endereço IP] Troca o endereço de origem.
--spoof-mac [mac] Troca o mac address.
-e [iface] Usa uma interface específica.
-v Incrementa os dados exibidos. Quanto mais vezes utilizado mais detalhes fornece. Ex: -vvvv
--open Somente exibe as portas abertas (ou possivelmente abertas).
--packet-trace Exibe todos os pacotes enviados e recebidos durante o scaner.
-A Habilita a detecção de SO, versão de serviço, scaner de scripts e traceroute.
--iflist Lista as interfaces e as rotas detectadas pelo nmap.

Exemplos:
#nmap -sU 192.168.0/24 -n -PN -p10-2000 --traceroute -sV (Scaneia as portas UDP de 10 a 2000 de todos os hosts da rede 192.168.0.0 com máscara 255.255.255.0 admitindo que todos estão online, ou seja, do host 192.168.0.1 até o host 192.168.0.254, não resolvendo nomes, exibindo na saída o traceroute de cada host encontrado bem como as informações de versão do serviço de cada porta encontrada.

#nmap -A 10.133.0.1 10.133.0.2 10.10.0/16 --exclude 10.10.0.112,10.10.0.119-200 -S 10.1.1.3 --spoof-mac 00:0e:c4:0b:2d:e0 -e eth1 -vvv --open -PN (Faz a varredura nos hosts 10.133.0.1, 10.133.0.2 e na rede 10.10.0/16 excetuando-se os hosts 10.10.0.112 e os de 10.10.0.119 a 10.10.0.200 buscando informações de sistema operacional, versão dos serviços, executando o traceroute para cada host encontrado e exibindo informações bem detalhadas somente das portas abertas utilizando para isso a interface eth1 cujo endereço ip e mac estão mascarados com outros endereços que são respectivamente 10.1.1.3 e 00:0e:c4:0b:2d:e0. Não executa o ping nos hosts, admite que todos os hosts estão online).

#nmap -O --packet-trace -p1-65535 -iL hosts.txt (Scaneia as portas de 1 até 65535 dos hosts definidos no arquivo hosts.txt trazendo informação sobre o sistema operacional de cada host exibindo todos os pacotes enviados e recebidos).

quinta-feira, 29 de janeiro de 2009

killall - O irmão mais velho do kill

Nome: killall
Definição: Mata um processo pelo nome. Ele envia um sinal a todos os processos, executando qualquer um dos comandos especificados. Se não for especificado nenhum nome de sinal, SIGTERM é enviado. Os sinais podem ser especificados quer pelo nome, quer pelo número ou pela opção -s.
Sintaxe: killall [opções] [-s sinal] [--user usuário] [nome do processo]
Opções:
-I Ignora se o nome do processo está em letras maiúsculas ou minúsculas.
-i Pergunta interativamente por uma confirmação antes de enviar o sinal TERM.
-r Interpreta NOME como uma expressão regular extendida.
-s sinal Envia sinal ao invés de SIGTERM.
--user usuário Mata somente processo(s) executados como 'usuário'.
-v Informa se o sinal foi enviado com sucesso;

Exemplos:
#killall -9 -I firefox (Envia o sinal de término para o programa firefox)

#killall --user tommy -v -i nautilus (Pergunta interativamente se deseja terminar com o processo de nome nautilus do usuário tommy e ao se escolher a opção 'y' de yes exibe uma mensagem com o número do processo e se ele foi morto com o sinal 15).#

Falando em processos, estes são utilizados também para disponibilizar acessos a um host através da rede por meio de portas. Para descobrirmos quais portas estão abertas numa máquina podemos utilizar o comando 'nmap' que possui também outras funcionalidades muito interessantes e é também utilizado por hackers para descobrir brechas em servidores.

quarta-feira, 28 de janeiro de 2009

kill - o exterminador de processos

Muitos processos são inicializados junto com o sistema operacional, outros, quando da execução de algum programa por parte do usuário, e quando param ou ficam com seu funcionamento prejudicado é necessário utilizar alguns programas para tratar esses problemas. Para isso podemos utilizar dentre outros os comandos kill ou killall.

Nome:kill
Definição: Envia um sinal para um processo. Existem 64 tipos de sinais possíveis de serem enviados para um processo, porém, veremos aqui os principais e mais utilizados. Por padrão o comando kill utiliza o sinal TERM (15) quando não especificado. Como será visto abaixo, existem processos chamados processos “zumbi” e para matar um processo zumbi é necessário descobrir qual seu processo pai, ou seja, a partir de qual processo ele foi iniciado.
Sintaxe: kill [sinal] [número do processo]
Opções:
-1 Equivalente ao sinal HUP. Este sinal reinicia o processo.
-9 Equivalente ao sinal kill. Mata um processo.
-15 Equivale ao sinal TERM. Termina um processo.
-l Lista todos os sinais possíveis de serem enviados pelo comando kill.

Exemplos:
#kill -9 2366 (Mata o processo 2366) Essa opção é utilizada quando não se consegue terminar o processo com a opção TERM.

#kill -HUP 7433 (Reinicia o processo 7433) Para descobrir o número do processo utilize o comando 'ps'.

#kill -15 4582 (Termina o processo 4582)

sexta-feira, 23 de janeiro de 2009

Uso do disco rígido - DU

Nome: du
Definição: Estima o espaço utilizado, ou seja, relata a quantia de espaço de disco usada pelos arquivos especificados e por cada um dos diretórios na hierarquia dos arquivos especificados, onde, “espaço de disco usado” significa espaço usado pela hierarquia completa de arquivos abaixo do arquivo especificado. Se utilizado sem nenhum argumento, exibe o espaço em disco usado pelo diretório atual. A saída padrão é em unidades de 1024 bytes, ou seja, um arquivo com tamanho entre 1 byte e 4096 bytes sempre vai exibir 4 Kbytes num sistema de arquivos reiserfs formatado no padrão da instalação. A partir de 4097 bytes o arquivo passa a exibir 8 Kbytes.
Sintaxe: du [opções] [arquivo...]
Opções:
-a Exibe a contagem para todos os arquivos, não somente diretórios.
-b Exibe o tamanho em bytes, ao invés de kilobytes. (tamanho exato do arquivo)
--exclude=modelo Quando recursivo, salta sub-diretórios ou arquivos concordantes com modelo.
-h Anexa o rótulo de tamanho, como por exemplo M para binários de megabytes, para cada tamanho.
-k Exibe o tamanho em kilobytes.
-m Exibe o tamanho em megabytes (1,048,576 bytes).
-s Exibe somente um total para cada argumento.

Exemplos:
#du -sh /home (Exibe o tamanho resumido em Kilo, Mega ou Gigabytes do diretório /home)

#du -abh /etc (Exibe o tamanho de cada arquivo, diretório e subdiretório do diretório /etc na notação humana)

#du -sm / (Exibe o tamanho do diretório raiz resumido em Megabytes)

quinta-feira, 22 de janeiro de 2009

Pesquisa de arquivos e diretórios

Para fazer pesquisas no sistema de arquivos do linux podemos utilizar basicamente dois comandos: locate e find. O locate depende de uma base de dados que é atualizada pelo comando updatedb. Já o find faz a busca em tempo real sem pesquisar em base de dados, ele varre o disco a procura da expressão passada como parâmetro, por isso é mais lento, porém mais preciso. Uma prática interessante é executar o comando updatedb toda vez que inicializar o sistema operacional, dessa forma a base de dados de pesquisa do comando “locate” estará sempre atualizada. Diferente do comando “find”, o comando locate não necessita do caminho inicial de pesquisa, como a pesquisa é feita numa base de dados, ele admite que a pesquisa é feita a partir da raiz.

Nome: locate
Definição: procura arquivos ou diretórios pelo nome. O locate pesquisa em uma ou mais bases de dados de informações de arquivos e diretórios em busca do nome passado como parâmetro.
Sintaxe: locate [opções] [expressão]
Opções:
-c Exibe apenas a quantidade de resultados da busca;
-e Exibe apenas os arquivos existentes no momento; Como a busca do locate é feita em uma base de dados, um arquivo que é apagado constará na base de dados até que seja executado o comando updatedb, no entanto, se for utilizada a opção -e o resultado só exibirá os arquivos existentes.
-i Ignora se as letras são maiúsculas ou minúsculas;
-0 Exibe os resultados um ao lado do outro ao invés de linha a linha;

Exemplos:
#locate home (Exibe linha a linha todos os resultados que contém a palavra home);
#locate -c *.conf (Exibe a quantidade de arquivos com a extensão .conf);
#locate -ie x11 (Exibe os resultados somente de arquivos existentes em disco da expressão x11 tanto maiúsculos como minúsculos);






Nome: find
Definição: Procura por arquivos em uma hierarquia de diretórios.
Sintaxe: find
Opções:
-mount Realiza a pesquisa somente no sistema de arquivo atual, excluindo outros tipos.
-empty Exibe o resultado da pesquisa somente com arquivos e diretórios em branco.
-name Especifica o nome a ser pesquisado. Aceita os metacaracteres ('*', '?', e '[]').
-iname Semelhante ao name porém ignorando se as letras estão em maiúsculas ou minúsculas;
-path Especifica um nome de diretório a ser pesquisado.
-executable Pesquisa por arquivos e diretórios com atributo de execução.
-perm Permite especificar qual a permissão que o arquivo ou diretório a ser pesquisado tem. Pode ser utilizada a notação em octal ex: 755 que equivale a (rwxr-xr-x)
-readable Pesquisa arquivos ou diretórios com permissão de leitura.
-writable Pesquisa arquivos com atributo de escrita.
-size n Pesquisa arquivos pelo tamanho em 'n' unidades. Essas unidades podem ser em bytes, Kilobytes, Megabytes ou Gigabytes utilizando-se respecitvamente os parâmetros c,w,k,M,G.
-user uname Onde uname é o nome do dono do arquivo.
-delete Apaga os arquivos encontrados.
-ls Exibe a saída semelhante a do comando ls -ls.
-type tipo Onde tipo é o tipo do arquivo que será especificado para a pesquisa. Os tipos podem ser 'd' para diretório, 'f' para arquivos regulares e 'l' para link simbólico.

Exemplos:
#find /etc -iname *.conf -ls -size +10k (Exibe no formato do comando 'ls -ls' todos os arquivos com extensão .conf no diretório /etc independente da terem ou não letras maiúsculas no nome e com tamanho maior que 10 Kilobytes).

#find / -user root -ls -empty -delete (Lista todos os arquivos com tamanho zero no formato do comando ls -ls e os apaga)

#find / -executable -type f -name arquivo (Procura por arquivos de nome arquivo no diretório raiz com atributo de arquivo executável).

terça-feira, 20 de janeiro de 2009

GREP - FILTRO DE CONTEÚDO BASEADO EM EXPRESSÕES

Nome do comando: grep
Definição: é uma espécie de filtro que permite mostrar linhas de texto de um arquivo com base em expressões. Se usado com o parâmetro “” antes do arquivo funciona semelhante ao cat. Ex: grep “” arquivo. Existem também algumas variantes do grep que são: egrep, fgrep e rgrep.
Sintaxe: grep [opções] [expressão] [arquivo]
Opções:
-v exclui uma expressão no resultado;
-r mesmo que rgrep. Pesquisa recursivamente nos subdiretórios do diretório atual se houver;
-f mesmo que fgrep;
-e mesmo que egrep;
-i ignora a caixa da letra, não fazendo distinção entre maiúsculas e minúsculas;
-s não exibe mensagens de erro;
-B x Before. Mostra a linha que contém a expressão procurada e, também, x linhas antes;
-A x After. Mostra a linha que contém a expressão procurada e, também, x linhas depois;
--color exibe a saída do comando em cores destacando a expressão encontrada;
--count conta quantas expressões foram encontradas em cada arquivo e exibe na tela.

Exemplos:
#grep ipaddress /etc/network/interfaces (mostra a linha que contém a palavra ipaddress no arquivo interfaces)

#grep texto * -r --color (mostra os arquivos que contém a palavra texto recursivamente no diretório exibindo as palavras encontradas em cores diferentes).

#cat /etc/apt/sources.list |grep debian (Lista o conteúdo do arquivo sources.list somente nas linhas que contém a palavra debian).

#egrep named /var/log/syslog --color -A 4 -B 5 (Mostra 5 linhas antes inclusive e 4 linhas depois das linhas que contém a palavra named no arquivo syslog e exibe a palavra named colorida).

CAT - VISUALIZADOR DE CONTEÚDO DE ARQUIVOS

Nome do comando: cat
Definição: concatena arquivos e imprime na saída padrão (Monitor)
Sintaxe: cat [opções] [arquivo]
Opções:
-n numera as linhas ao serem exibidas;
-b não numera linhas em branco;
-s não exibe mais de uma linha em branco, seqüencialmente;
-E mostra $ no final de cada linha;
-v mostra caracteres não imprimíveis. Utiliza ^ e M- para isso.

Exemplos:
#cat /etc/passwd (lista o conteúdo do arquivo passwd na saída padrão (Monitor))

#cat -bn /boot/grub/menu.lst (lista o conteúdo do arquivo menu.lst numerando as linhas exceto linhas em branco)

#cat teste1 teste2 (lista o conteúdo dos arquivos teste1 e teste2)

quinta-feira, 15 de janeiro de 2009

IFCONFIG <=> IPCONFIG(WIN)

Com o comando IFCONFIG é possível identificar uma interface de rede, atribuir um endereço à ela, dentre várias outras opções.

Nome: ifconfig

Definição: Configura uma interface de rede. O ifconfig é utilizado para configurar a interface de rede residente no kernel. Ele é utilizado no boot do sistema para “levantar” as interfaces de redes necessárias. Após isso, normalmente é utilizado somente para fazer alguns ajustes quando necessário.

Sintaxe: ifconfig <opções> <interface>

Opções:

-a Exibe todas as interfaces que estão atualmente disponíveis, mesmo as que estão desativadas.

-s Exibe uma pequena lista das interfaces. (semelhante ao netstat -i)

-v Modo verboso com mais detalhes para algumas condições de erro.

up Essa flag causa a ativação da interface. Está implícita se um endereço é associado a uma interface.

Down Essa flag causa a desabilitação da interface.

[-]arp Habilita ou desabilita o uso do protocolo ARP na interface.

[-]promisc Habilita ou desabilita o modo promíscuo na interface. Se selecionado, todos os pacotes na rede serão recebidos pela interface.

mtu N Esse parâmetro seta a unidade máxima de transferência (MTU) da interface.

Netmask ADDR Seta o IP da mascara de rede para a interface.

Address Endereço a ser associado a interface.


Exemplos:

#ifconfig eth0 up (Habilita a interface eth0)


#ifconfig eth0 192.168.0.34 netmask 255.255.255.0 (Define o endereço 192.168.0.34 para a interface eth0 e a máscara de rede 255.255.255.0 habilitando a interface ao mesmo tempo).


quarta-feira, 14 de janeiro de 2009

PS - Status dos Processos

Os logs normalmente são gerados por programas em execução ou processos, e para visualização dos processo em execução e várias informações sobre eles temos um programa extremamente útil para o administrador de redes, o ps.

Nome: ps
Definição: Mostra uma foto dos processos correntes. Ele exibe informações sobre uma seleção de processos ativos. Se necessitar dessas informações em tempo real pode ser utilizado o comando 'top'.
Sintaxe: ps <opções>
Opções:
-a            Mostra os processos que rodam em todos os terminais;
-x            Mostra os processos que rodam independentes de terminal;
-u            Mostra outros dados, inclusive os usuários donos de processos;
-f            Adiciona várias colunas de informação sobre os processos
-e            Mostra todos os processos;
--user X  Exibe apenas processos do usuário X.

Exemplos:
#ps -faex --user root (Exibe todos os processo do usuário root).

#ps fauex (Exibe todos os processos que estão em execução no momento com o máximo de informação possível sobre cada um). Abaixo a definição de cada coluna exibida pelo comando acima:

USER             usuário dono do processo.
PID                 Número ID do processo.
%CPU            Percentual de CPU consumido pelo processo.
%MEM           Percentual de memória consumida pelo processo.
VSZ                Virtual Size. Uso da memória virtual(inclui swap) alocado para o processo.
RSS                 Resident Set Size. Uso real da memória RAM pelo Processo;
TTY                Terminal em uso. Caso o processo não esteja sendo executado em nenhum terminal aparecerá o caractere '?'.
START           Data e hora do início da execução do processo.
TIME            Tempo de execução desde do seu start.
COMMAND   Comando/processo em execução.
STAT            Estado de execução do processo. Os processos podem estar em vários estados, são eles:
R            Processo em execução.
S            Processo em espera.
S            O Processo é lider de sessão, ou seja, ele é o processo principal e tem subprocessos atrelados a ele.
D            O processo está em espera porque aguarda uma operação de I/O. Este estado não admite interrupção.
T            O processo encontra-se parado ou em modo trace (analisando uma ação).
w            O processo realizando paginação de memória. (somente p/ver. 2.4 e inferior).
X            O processo acaba de morrer.
Z            O processo vira “zombie”, morreu mais continua alocando memória.
<            Processo rodando alta prioridade.
N            O processo está rodando em baixa prioridade.
+            O processo rodando em primeiro plano.

terça-feira, 13 de janeiro de 2009

DAEMONS

Existem métodos que permitem que os serviços sejam inicializados, parados ou atualizados, sem a necessidade de reiniciar todo o sistema.
Um desses métodos é o chamado daemon. A maioria dos daemons que selecionamos pelo comando rcconf encontram-se no diretório /etc/init.d, com exceção dos daemons que rodam sob inetd/xinetd. Para parar os daemons encontrados nesse diretório, basta executá-los seguidos do argumento stop, ex:
# /etc/init.d/httpd stop
Para iniciar este mesmo serviço:
# /etc/init.d/httpd start
Para parar e em seguida reativar:
# /etc/init.d/httpd restart
Se desejar que os arquivos de configuração sejam relidos sem parar o serviço execute o seguinte:
# /etc/init.d/httpd reload
Para atualizar um processo qualquer que esteja rodando, verifique o seu número PID com o comando:
#ps ax
e utilize o comando:
# kill -HUP 762

segunda-feira, 12 de janeiro de 2009

TCPDUMP - Com ele você pode muito...

A partir de hoje iniciarei uma sequência de posts sobre comandos e suas utilidades. Para iniciar nada melhor do que o TCPDUMP, poderosíssimo.

Para um bom administrador de redes linux é impressindível conhecer o comando tcpdump. Com ele é possível fazer dezenas de diagnósticos de rede e descobrir vários problemas, inclusive de cabeamento.


Nome: tcpdump

Definição: Mostra o tráfego de uma rede. Ele exibe a descrição do conteúdo de pacotes numa interface de rede que case com uma expressão booleana.

Sintaxe: tcpdump <opções> <dispositivo> <expressão>

Opções:

-A Imprime cada pacote em código ASCII.

-c Termina a execução após receber “n” pacotes.

-D Exibe a lista das interfaces de rede disponíveis no sistema e que o tcpdump é capaz de capturar pacotes. Esta opção associa um número a cada interface o qual pode ser usado no lugar do nome da mesma, ex: 1 - eth0, 2 – eth1, 3 – any, 4 – lo (loopback);

-i Recebe como parâmetro a interface ou o número associado a ela. Se especificado “any” captura pacotes de todas as interfaces porém, sem ser no modo promíscuo.

-n Não converte endereços em nomes. (endereços de host, número de portas, etc.)

-r Lê os pacotes a partir de um arquivo (que tenha sido criado com a opção -w).

-s Define o tamanho de cada pacote a ser capturado. É interessante utilizar o valor 1500 para que seja examinado o maior tamanho possível de pacote.

-t Não exibe o timestamp em cada linha.

-v Exibe a saída com mais detalhes.

-vv Exibe a saída com mais detalhes ainda.

-vvv Exibe a saída com informações ainda mais detalhadas.

-w Escreve os pacotes em um arquivo que pode ser lido posteriormente com a opção -r.

-x Exibe o conteúdo do pacote no formato hexadecimal.

-X Exibe o conteúdo do pacote nos formatos hexadecimal e ASCII.

expressão Seleciona quais pacotes serão exibidos. Se não for definida nenhuma expressão todos os pacotes serão exibidos. Do contrário somente os pacotes com os quais a expressão coincidir serão exibidos. A expressão consiste em uma ou mais premissas. As premissas usualmente consistem em um ID (nome ou número) precedido por um ou mais qualificadores.Existem três diferentes tipos de qualificadores:

type (tipo) Especifica host, net, port e portrange. Ex: 'host dragon', 'net 192.168', ' port 22', 'portrange 5000-5777'.

dir (direção) Indica a direção dos pacotes a serem capturados. Podem ser: src, dst, src or dst e src e dst, que significam respectivamente origem, destino, origem ou destino e origem e destino. Se nada for definido assume origem ou destino.

proto (protocolo) Define qual o tipo de protocolo será exibido. Os protocolos possíveis são: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp e udp.


Exemplos:

#tcpdump -n -i eth0 -s 1500 -X host 192.168.0.110 -c 30 (Faz a captura de 30 pacotes do host 192.168.0.110 na interface eth0 sem resolver nomes com tamanho máximo de pacote de 1500 bytes exibindo o conteúdo dos pacotes nos formatos ASCII e Hexadecimal)


#tcpdump -i eth2 -t -vvv -s 1500 -A dst net 192.168 and not host 192.168.0.114 and not port ssh -w log.dump (Analisa o tráfego da interface eth2 e coleta os dados de pacotes com até 1500 bytes referentes à rede de destino 192.168.0.0 exceto o que se refere ao host 192.168.0.114 e a porta 22(ssh) com o máximo de detalhes sem exibir o timestamp e os grava no arquivo log.dump)

segunda-feira, 5 de janeiro de 2009

Configuração de IP Estático x DHPC

Um assunto aparentemente simples, mas que para os iniciantes pode ser uma caixa preta quando não dá certo é a obtenção de um endereço de IP pelo sistema operacional. No Debian e nas suas variantes (creio que todas ou quase todas) a configuração de IP fica num arquivo chamado "interfaces" cujo caminho completo é:

/etc/network/interfaces

A forma mais simples de se obter um IP é simplesmente iniciando o sistema operacional com o cabo de rede conectado ao computador, sendo que esse cabo de rede provém de um servidor de DHCP (Modem, Roteador, etc...), porém nem sempre o computador "pega o IP", então temos que tentar de outras formas. Uma delas é tentar novamente forçando a máquina a pegar o IP com o comando:

#dhclient

Caso não funcione, você pode tentar com os comandos:

#ifdown eth0 (supondo que o sistema reconheceu sua placa de rede como eth0)
#ifup eth0

Outra opção é o comando:

#ifconfig eth0 down (Desativa a placa de rede)
#ifconfig eth0 up (Ativa a placa de rede)

Se nenhuma dessas formas funcionar, você pode optar por setar manualmente o IP, para isso será necessário editar o arquivo interfaces citado no início. Vamos utilizar o endereço IP 192.168.0.23 como exemplo:

#mcedit /etc/network/interfaces

iface eth0 inet static (no lugar de static poderia estar dhcp se estivesse funcionando a obtenção de IP automático)
address 192.168.0.23
netmask 255.255.255.0
gateway 192.168.0.1 (supondo que seu servidor de endereços IP esteja configurado com esse IP)

Feche com a tecla F10 (caso esteja usando o mcedit) e salve o arquivo. Daí basta desativar e ativar a placa de rede repetindo os comandos ifdown e ifup mencionados acima.
Para testar, dê um ping no endereço do gateway.
Se após tudo isso não funcionar, muito provavelmente seu cabo de rede pode estar com problemas.