GearBest

terça-feira, 29 de dezembro de 2015

Fundamentos de Protocolos da Internet no Sistema Linux

Arquivo /etc/services

O arquivo /etc/services lista os serviços da rede Internet, arquivo ASCII provendo um mapeamento amigável entre nomes textuais para serviços da internet, e consignar suporte para números de portas e tipo de protocolos.

Números de portas são designadas pelo IANA (Internet Assigned Numbers Authority), e atualmente a política deles é designar ambos os protocolos TCP e UDP quando designando um número de porta.

Segue alguns números de portas associados a serviços amplamente conhecidos:
PORTA                                          SERVIÇO.
20--------------------------------------->  FTP (dados)
21--------------------------------------->  FTP
22--------------------------------------->  SSH.
23--------------------------------------->  TELNET
25--------------------------------------->  SMTP
53--------------------------------------->  DNS
80--------------------------------------->  HTTP
110--------------------------------------> POP3
119--------------------------------------> NNTP (USENET news)
139--------------------------------------> NETBIOS
143--------------------------------------> IMAP
161--------------------------------------> SNMP
443--------------------------------------> HTTPS
465--------------------------------------> SSMTP (smtp sobre SSL)
993--------------------------------------> IMAPS (imap sobre SSL)
995--------------------------------------> POP3S (pop3 sobre SSL)

ftp - uma interface de usuário para o protocolo de transferência de arquivos da Internet. O programa permite ao usuário transferir arquivos para e de um site remoto da rede.

Opções:
-p: usar o modo passivo para transferência de dados. Permite o uso de ftp em sistemas onde um firewall previne conexões de fora retornarem à máquina local. Requer que o servidor ftp suporte o comando PASV.
-i: desliga o prompt interativo durante a transferência de múltiplos arquivos.
-n: restringe ao ftp de tentar "login automático" na conexão inicial. Se o login automático é ativado, ftp irá verificar o arquivo .netrc no diretório home do usuário para uma entrada descrevendo uma conta na máquina remota.
-e: desativar a edição de comandos e o suporte a histórico.
-v: modo verbose que exibe todas as respostas do servidor remoto bem como relatório estatístico da transferência de dados.
-d: habilitar o modo de depuração.

Comandos de Conexão:
open host [port]: estabelecer uma conexão com um servidor ftp específico. Um número de porta pode ser opcionalmente fornecido.
user user-name [password] [account]: identifica você mesmo para o servidor ftp remoto. Se a senha não for especificada, o servidor irá requerê-la.
account [passwd]: fornece uma senha suplementar requerida para acesso a um sistema remoto para acesso aos recursos, uma vez que o login tenha sido completado com sucesso.
close / disconnect: terminar a sessão ftp com o servidor remoto e retornar ao interpretador de comandos.
bye / quit: terminar uma sessão ftp com o servidor remoto e fechar o ftp.

Comandos de Manipulação de arquivos e diretórios:
append local-file [remote-file]: anexar um arquivo local para um arquivo na máquina remota.
delete remote-file: excluir o arquivo remoto na máquina remota.
mdelete [remote-files]: excluir os arquivos remotos na máquina remota.
mkdir directory-name: criar um diretório na máquina remota.
mls remote-files local-file: exibir uma lista do conteúdo de vários diretórios na máquina remota.
cd remote-directory: alterar o diretório de trabalho na máquina remota para remote directory.
lcd [directory]: alterar o diretório de trabalho na máquina local.
get remote-file [local-file]: recuperar o arquivo remoto e armazená-lo na máquina local. Se o nome local não for especificado, usa-se o mesmo nome no diretório atual.
mget remote-files: recuperar vários arquivos da máquina remota e armazená-los na máquina local.
newer file-name [local-file]: recuperar um arquivo somente se a data de modificação do mesmo na máquina remota for mais recente do que a data de modificação no sistema atual.
put local-file [remote-file]: armazenar um arquivo local no servidor remoto.
mput local-files: colocar vários arquivos da máquina local na máquina remota.
send local-file [remote-file]: armazenar um arquivo local no servidor remoto.
rename [from] [to]: renomear um arquivo da máquina remota.
rmdir directory-name: excluir um diretório da máquina remota
recv remote-file [local-file]: recuperar o arquivo remoto e armazená-lo na máquina local. Se o nome local não for especificado, usa-se o mesmo nome no diretório atual.
ls [remote-directory] [local-file]: exibir uma lista do conteúdo de um diretório na máquina remota.
dir [remote-directory] [local-file]: imprimir uma lista do conteúdo do diretório remoto e, opcionalmente, colocar a saída em um arquivo local.
mdir remote-files local-file: igual ao dir, exceto pelo fato de aceitar vários diretórios a serem exibidos da máquina remota.
nlist [remote-directory] [local-file]: exibir uma lista dos arquivos do diretório na máquina remota e, opcionalmente, gravar a lista em um arquivo local.

Comandos para Informações:
verbose: alterar para o modo verbose. No modo verbose todas as respostas do servidor são exibidas.
pwd: imprimir o nome do diretório atual de trabalho na máquina remota.
remotestatus [file-name]: sem argumentos exibe o status atual da máquina remota. Se um arquivo for especificado, mostra o status do arquivo.
size file-name: exibir o tamanho de um arquivo na máquina remota.
status: mostrar o status atual do ftp.
system: exibir o tipo de sistema operacional rodando na máquina remota.
help [command]: imprimir uma mensagem informativa sobre o significado de um comando.

Comandos para Configurações:
ascii: definir o tipo de transferência de arquivos para ASCII. Este é o tipo padrão.
bell: faz com que um alarme toque depois que cada comandos de transferência de arquivos for completado.
binary: definir o tipo de transferência de arquivos para suportar transferência de imangens binárias.
idle [seconds]: definir o tempo de inatividade no servidor remoto. Se os segundos forem omitidos, exibi-se o valor atual configurado.
mode [mode-name]: definir o modo de transferência de arquivos. O valor padrão é “stream”
modtime file-name: mostrar a data da última modificação do arquivo na máquina remota.
prompt: alterar para o modo de prompt interativo. Esse é o padrão.
type [type-name]: define o tipo de transferência de arquivos. Se nenhum tipo for informado, o tipo atual é exibido. O tipo padrão é ASCII.
umask [newmask]: definir o umask padrão do servidor remoto. Se um novo valor for omitido, o valor atual é exibido.
chmod mode file-name: alterar o modo de permissão do arquivo file-name no sistema remoto para mode.

telnet:
Usado para comunicação interativa com outro host usando o protocolo TELNET.
Usado seguindo o modelo: telnet [-l usuário] host porta.
Funciona normalmente na porta 23.
/etc/telnetrc: valores globais de inicialização do telnet.
-l: especificar o usuário a ser usado na máquina remota.

Alguns comandos do telnet:
close: fecha a conexão com o host remoto.
logout: desconecta a sessão do usuário, sem fechar a conexão com o host.
open host: abrir uma conexão com o host, quando não o for feito pela linha de comando.
exit: fechar qualquer conexão e encerra o telnet.
status: mostrar o estado atual do telnet.

host:
Utilitário de pesquisa DNS. Usado normalmente para converter nomes em endereços IP e vice versa.
Utiliza o arquivo /etc/resolv.conf para definir o servidor DNS a ser utilizado na pesquisa.
host [opções] nome [servidor]
Exemplo:

dig:
Utilitário de pesquisa DNS – mostra o formado dos pacotes DNS de resposta. Funciona como uma ferramenta flexível para interrogar servidores DNS. Ele faz pesquisas de nomes e mostra as respostas que são enviadas do servidor de nomes que é questionado.

dig [@ip.do.servidor] nome tipo

Os tipos que podem ser usados são: ANY, A, MX, SIG, etc.
Servidores de nomes são definidos na RFC 1035.

Comando dig Linux

ping:
Enviar pacotes ECHO_REQUEST ICMP para hosts de rede.
-b: permitir pings para endereços broadcast.
-c: especificar o número de pacotes a ser enviado.
-f: flood ping. Zero de intervalo entre pacotes.
-i: definir o intervalo entre o envio de pacotes.
-q: não exibir a saída de cada pacote. Quiet.
-s: definir o tamanho dos pacotes. O padrão é 56 que se transformam em 64 com os 8 bytes do cabeçalho ICMP.

traceroute:
Imprime a rota dos pacotes da máquina local até uma rede de destino.
-I: usar pacotes ICMP ECHO para os testes
-T: usar pacotes TCP SYN para os testes
-i: especificar a interface pela qual os pacotes serão enviados
-s: escolher um IP de origem alternativo.

Tracepath:
Traça o caminho para um host da rede, descobrindo o MTU ao longo deste caminho. Usa-se uma porta UDP aleatória ou definida pelo usuário. É similar ao traceroute mas não requer privilégios de root.
-b: imprimir o nome do host e o endereço IP. O padrão é apenas o nome.
-n: mostrar apenas o endereço IP para identificar os hosts.

tcpdump:
Capturar o tráfego de uma rede. Mostra uma descrição do conteúdo dos pacotes que passam por uma interface de rede.
-A: imprimir cada pacote em ASCII.
-B: definir o tamanho do buffer de captura.
-c: número de pacotes a serem capturados.
-i: especificar a interface a ser monitorada.
-n: não converter endereços em nomes.

Algumas opções para filtro do tcpdump:
dst host endereço.do.host: captura apenas pacotes com o endereço de destino especificado.
src host endereço.do.host: captura apenas pacotes com o endereço de origem especificado.
host endereço.do.host: pacotes de ou para o host especificado.
dst net rede: definir a rede de destino 27
src net rede: definir a rede de origem
net rede: definir uma rede relacionada, de origem ou destino
dst port porta: porta de destino
src port port: porta de origem
port port: porta relacionada, de origem ou destino
less tamanho: pacotes menores que um determinado tamanho
greater tamanho: pacotes maiores que um determinado tamanho
tcp, udp, icmp: definir o protoco dos pacotes a serem capturados.