Servidores Linux,
O curso...
Fernando Cerutti
Uma versão não autorizada, não recomendada e não certificada por organismo algum.
UNISUL
Curso de Servidores Linux
Fernando Cerutti
UNISUL
Curso de Servidores Linux
Fernando Cerutti
UNISUL
Curso de Servidores Linux
Fernando Cerutti
UNISUL
Curso de Servidores Linux
Fernando Cerutti
UNISUL
Curso de Servidores Linux
1.1. Unix
Vertentes, tendências, lendas sobre o cara.
UNIX
ATT BSD
(System III e V)
Fernando Cerutti 6
UNISUL
Curso de Servidores Linux
Fernando Cerutti 7
UNISUL
Curso de Servidores Linux
especificação POSIX, com a qual todas as versões do Unix padrão (true Unix) estão
convencionadas.. O Linux foi primeiramente desenvolvido para processadores Intel,
mas atualmente também roda em computadores DEC Alpha, SUN Sparc, M68000
(Atari e Amiga), MIPS e PowerPC Apple e IBM). O Linux foi escrito complemente 'from
scratch'. Não há código proprietário em seu interior . O Linux está disponível na forma
de código objeto, bem como em código fonte por meio de centenas de sites FTP . O
Linux pode ser livremente distribuido nos termos da GNU General Public License. A
maioria dos programas rodando em Linux são freeware genéricos para Unix, muitos
provenientes do proleto GNU . Alguns benchmarks foram executados em sistemas
486 com Linux, julgando-os comparávels com workstations médias da Sun e da
Digital. O Linux está sendo usado hoje em dia por milhões de pessoas pelo mundo.
Está sendo usado para desenvolvimento de software, networking (Intranet e Internet),
e mesmo como platafcrma de usuário final. O Linux tem se tornado uma alternativa
efetiva de custo em relação aos demais sistemas existentes.
Fernando Cerutti 8
UNISUL
Curso de Servidores Linux
Semi-comerciais
Ferramentas Básicas
6 HW
H
6 Kernel
find,
grep
Fernando Cerutti 9
UNISUL
Curso de Servidores Linux
Em sistemas 386/486 com pouca memória e disco, a maior parte das novidades para
Linux não significa muito O mais importante é poder usar estes sistemas como
roteadores ou outros dispositivos com finalidades especificas Distribuições especiais
tem sido desenvolvidas para atender estas necessidades, como por exemplo o Linux
Router Project-
Existem também Distribuições Linux para diferentes arquiteturas de processador,
como por exemplo
Red Hat (Alpha e SPARC)
Debian (Alpha e M68000)
MkLinux e LinuxPPC (PowerPC)
Suse (PPC, Sparc)
Criada pela Conectiva (Curitiba, PR), foi a primeira distribuição de Linux fora dos
Estados Unidos e Europa
Fernando Cerutti 10
UNISUL
Curso de Servidores Linux
2. lnstalação
A instalação do Linux nem sempre é calma e saborosa como um sorriso da Mel
Lisboa
2.1. Cuidados Iniciais
Embora a instalação seja um processo direto e simples, gastar algum tempo antes
de comecar a instalação pode facilitar bastante as coisas.
Fernando Cerutti 11
UNISUL
Curso de Servidores Linux
• Disco rígido
Quantidade e tamanho. Qual é o primário, secundário, etc . Se IDE ou SCSI . Se
IDE se o acesso no modo LBA está habilitado na BIOS
• Memória .
Quantidade de memória instalada
• CDROM.
Se IDE ou SCSI . Se nem IDE nem SCSI qual o fabricante e modelo do CDROM
• Adaptador SCSI
(se presente) . Fabrlcante e modelo
• Mouse
Tipo (serial, PS/Z, bus mouse)
Protocolo (Logitech, MouseMan, etc )
Número de botões
Porta de Comunicação (mouse serlal)
• Video
(se instalando X Window).
Placa de Video.
Fabrtcante e modelo ou chipset.
Quantidade de memória.
• Monitor
Fabricante e modelo.
Taxas de atualização horizontal e vertical suportadas
• Informações da Rede:
• Nome da Maquina.
• Nome do Dominio.
• Endereço IP.
Fernando Cerutti 12
UNISUL
Curso de Servidores Linux
• Netmask . Gateway.
• Servidores DNS
Outra opção é instalar via HTTP. Ao executar uma instalação HTTP, o computador
acessará os pacotes através da rede. Os pacotes selecionados serão então
instalados no disco rígido.
Caso não haja CD ou unidade de CD, mas se tenha acesso à rede, então a
instalação via NFS (Network File System) pode ser uma alternativa. Nas instalações
via NFS, os pacotes selecionados são fornecidos ao computador através de um
servidor de NFS. Os pacotes serão então instalados no disco rígido
Caso nenhum dos métodos anteriores seja aplicável, mas há uma forma de se copiar
os arquivos do sistema para o disco rígido, a instalação pode ser feita a partir do
Fernando Cerutti 13
UNISUL
Curso de Servidores Linux
sistema local. Nesta opção, os pacotes selecionados serão lidos de uma partição do
disco e instalados em outra.
• Estação de Trabalho
• Servidor
•Personalizada
Estas classes visam:
•
Simplificar o processo de instalação com perda da flexibilidade de configuração
•
ou ter toda a flexibilidade com um pouco mais de complexidade.
Fernando Cerutti 14
UNISUL
Curso de Servidores Linux
2.7. Partições
Para Instalar o Linux é necessário haver espaço disponível no disco rígido, Magda.
[? ], o qual deve estar separado de áreas que possuam outros sistemas
operacionais (DOS, OS/2, Windows. outras versões de Linux, etc.) A forma de
separar estas áreas é dividindo o espaço disponível em áreas distintas chamadas
partições. Cada partição pode ser acessada como se fosse um disco totalmente
diferente. Cada partição tem um tipo de file system que indica como os dados são
armazenados. O Linux deve ser Instalado em uma ou mais partições que tenham o
tipo igual a Linux Nativo O Linux requer ainda uma partição de troca, a qual tem o
tipo Linux Swap. Isso significa que uma instalação do Linux requer pelo menos duas
partições.
Fernando Cerutti 15
UNISUL
Curso de Servidores Linux
Podemos imaginar uma dessas bolachas como um disco antigo de vinil, com círculos
concentricos. Os espaços entre os círculos são as trilhas (tracks)
Fernando Cerutti 16
UNISUL
Curso de Servidores Linux
Todas as trilhas de
placas diferentes na
mesma posição
formam um cilindro
Fernando Cerutti 17
UNISUL
Curso de Servidores Linux
Porque complicar?
• Nunca devemos colocar os arquivos de usuário junto com os de sistema.
• Isso aumenta as chances de um intruso explorar programas com privilégio de
super user (SUID).
• Um diretório corrompido pode afetar os demais. Voce pode ter que reinstalar.
• A manutenção dos backups fica difícil. Você pode disparar backups para file
systems separados.
• disco fica desorganizado, todos os usuários vão ocupando espaços, junto com as
aplicações.
• A abordagem de partições múltiplas possibilita que você controle de forma
refinada seu disco. Cada file system será montado da forma que você desejar.
• Montar um file system significa atachar o FS a um dispositivo local (device ou
diretório). Dessa forma, o Unix deixa o sistema disponível para uso a partir
daquele dispositivo.
Fernando Cerutti 18
UNISUL
Curso de Servidores Linux
Especificação de onde ela O ponto de O tipo do file Opções de Flag para back Sequencia
está montada (dispositivo montagem, system montagem up de
de bloco ou fle system ou a (HPFS, checagem
onde o file system será localização iso9660) do file
montado. do file system felo
Nesse caso, a partição 4 system fsck
do primeiro disco físico.
Coluna 4:
Opções de montagem Significado
defaults Pode tudo: quota, r-w e suid
noquota Não pode ser definido quota
nosuid Sem acesso de suid
quota Quotas são ativadas
ro Somente leitura
rw Leitura e escrita
suid Acesso SUID permitido
O LILO é o método mais comum para inicializar o Linux em sistemas Intel. Sendo um
carregador de sistema operacional, o LILO opera independente de qualquer sistema.
usando apenas a BIOS do próprio computador.
Fernando Cerutti 19
UNISUL
Curso de Servidores Linux
#
# Start LILO global section
append = ``sbpcd=0x260, SoundBlaster ether=10,0x300,eth0 ether=9,0x340,eth1''
#
boot = /dev/hda
#compact # faster, but won't work on all systems.
delay = 50
message=/etc/lilo.msg
password=sharon
restricted
other = /dev/hda3
label = win95
table = /dev/hda
image = /vmlinuz
root = /dev/hda1
label = linux
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
---
boot = /dev/hda
Ela indica onde será o funcionamento do LILO, nesta linha, o LILO está configurado
para rodar no MBR. Mas podemos mudar o /dev/hda para outro tipo de
funcionamento. Um exemplo é colocar para funcionar em um disquete: substituimos o
boot = /dev/hda pelo boot = /dev/fd0 (ou fd1, fd2... dependendo daonde está seu
driver de disco).
delay = 50
Esta linha indica em quanto tempo a partição padrão vai entrar automaticamente, ou
seja, sem você mexer em nada. Essa linha está configurada para rodar em 5
segundos.
Fernando Cerutti 20
UNISUL
Curso de Servidores Linux
remotamente seu servidor, sem Ter acesso a console para poder passar a senha de
boot.
vga = normal
Aqui o LILO vai colocar a fonte normal do Linux, se você colocar extended, você
notará essa diferenca :)
prompt
Força o usuário a entrar um boot prompt. Faz o tempo ficar desnecessário.
timeout=tempo de espera
Tempo de espera por um comando de teclado (se definido como 0 o LILO esperará
para sempre)
.
verbose=nível
Liga uma série de mensagens quanto maior for o nível, mais mensagem você vai
receber.
Agora vamos ver como configurar quais partições estão disponíveis. A linha que
coloca a partição disponível é...
Para uma partição linux:
---
image = /vmlinuz
root = /dev/hda1
label = linux
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
---
As únicas partes em que você deve mudar são as linhas:
root = /dev/hda1 <--- Em vez de /dev/hda1 coloque a partição linux
label = linux <--- Onde tem linux você muda se quiser por uma palavra-chave qualquer
Para uma partição de outro tipo:
---
other = /dev/hda3
label = win95
table = /dev/hda
---
As únicas partes em que você deve mudar são as linhas:
other = /dev/hda3 <--- em vez de /dev/hda3 coloque a partição que você queira
label = win95 <--- Onde tem win95 você muda se quiser por uma palavra-chave qualquer.
table = /dev/hda <--- Você coloca em que "table" está a partição (/dev/hda3)
Pronto. E assim você vai montando um lilo.conf variado com o que você quiser. Outra
coisa é usar o liloconfig, que cria o lilo.conf com menus "gráficos".
Quando o LILO é carregado, ele mostra a palavra "LILO". Cada letra é impressa na
tela depois ou antes de alguma ação específica. Se o LILO falhar em alguma ação, as
letras impressas na tela podem ser usadas para identificar o problema. Preste
atenção que alguns digitos hexa podem aparecer depois do primeiro "L" se algum
problema transitório ocorrer no disco rígido. A não ser que o LILO pare neste ponto,
Fernando Cerutti 21
UNISUL
Curso de Servidores Linux
gerando uma corrente de erros sem fim, os digitos hexa não indicam um problema
sério.
({nada}) - Nenhuma parte do LILO foi carregada. Ou o LILO não está instalado ou a
partição em que o setor de boot está alocado nao está ativa.
LIL ... - O segundo estágio do carregador de boot foi inicializado, mas não pode
carregar a tabela de descrição do arquivo map. Isto geralmente é causado por um
erro de mídia(HD) ou pelos parâmetros do HD não terem sido colocados
corretamente.
LIL- ... - A tabela de descrição está corrompida. Isto pode ser causado pelos
parâmetros do HD não terem sido colocados corretamente ou por mover /boot/boot.b
sem executar o instalador de map.
Fernando Cerutti 22
UNISUL
Curso de Servidores Linux
Será abordada uma instalação de classe personalizada a partir de CDROM local, por
ser o exemplo mais provável de ser encontrado no dia a dia.
Consoles Virtuais
Em geral, não há razão para sair da console virtual #1 a menos que se esteja
tentando diagnosticar problemas de instalação.
Nota :
Este recurso de múltiplas consoles virtuais existe também e é padrão durante a
utilização normal do sistema.
Fernando Cerutti 23
UNISUL
Curso de Servidores Linux
A seguir o Linux perguntará qual o método de instalação que deverá ser utilizado
• CDROM
• NFS
• FTP
• HTTP
• Disco rígido
Fernando Cerutti 24
UNISUL
Curso de Servidores Linux
•
Instalando
•
Atualizando
• Estação de Trabalho
• Servidor
• Personalizada
Após optar pela classe de instalação a ser utilizada, o processo verificará se há algum
adaptador SCSI no sistema e, em alguns casos, irá perguntar ao usuário sobre a
existência de tais dispositivos. Caso a opção seja Sim, será apresentada uma lista
dos programas de controle de dispositivos SCSI disponíveis.
Fernando Cerutti 25
UNISUL
Curso de Servidores Linux
O programa de instalação apresenta uma caixa de diálogo que permite optar entre
duas ferramentas de particionamento:
Após criar as partições para o Linux, o processo de instalação procura por partições
de troca. Caso localizadas, ele solicita que sejam inicializadas. É aconselhável
marcar a opção de verificação de blocos defeituosos. Porém esse processo exigem
uma paciência muito maior que a normalmente disponível.
Fernando Cerutti 26
UNISUL
Curso de Servidores Linux
Logo após será apresentada uma caixa de diálogo "Serviços" Selecionar cada
serviço que deve ser iniciado automaticamente junto com o Linux.
Se necessário pode-se executar /usr/sbin/ntsysv ou sbin/chkconfig após a
instalação e alterar os serviços que serão iniciados automaticamente junto com o
sistema. Isso também pode ser feito alterando-se o arquivo /etc/services.
Fernando Cerutti 27
UNISUL
Curso de Servidores Linux
•
Registro Mestre de Inicialização (MBR ou Master Boot Record)
É a área mais indicada para instalação, a menos que outro sistema lá esteja instalado
nessa área (ex: OS/2 Boot Manager ou System Commander). Este registro é uma
área especial no disco, automaticamente carregada pela BIOS do computador.
Fernando Cerutti 28
UNISUL
Curso de Servidores Linux
Quando o sistema inicializar, o LILO apresentará a linha "LILO boot:", quando poderão
ser inicializados o Linux ou outros sistemas operacionais configurados
O programa de instalação irá então apresentar uma lista de partições. Cada partição
que possa ser inicializáveis estará presente na lista.
A coluna "Identificação da Inicialização" conterá a palavra Linux na partição que
tenha o sistema de arquivos raiz.
Outras partições também poderão ter identificações Caso se deseje
adicionar ou alterar tais identificações selecionar a partição e usar a função Editar.
Há ainda uma coluna denominada "Padrão". Somente uma partição pode conter
asterisco sob essa coluna. A partição marcada como padrão será a utilizada pelo
LILO caso nenhuma opção seja informada pelo usuário na inicialização (LILO boot).
Caso não se deseje utilizar o LILO para inicializar o Linux, há algumas alternativas
• Disquete de Inicialização
Pode ser utilizado o disquete de inicialização criado pelo programa de instalação.
• SYSLINUX
Fernando Cerutti 29
UNISUL
Curso de Servidores Linux
• Carregadores Comerciais
Outras opções, como por exemplo o System Commander, são capazes de inicializar o
Linux, mas podem necessitar do LILO instalado na partição Linux.
2.10.9.3. Finalizando
• [Enter]:
Causa a carga do sistema operacional padrão definido no LILO.
• Informar uma identificação de inicialização e [Enter]:
Causa a carga do sistema operacional correspondente à identificação
fornecida.
• Não fazer nada:
Após uma espera (padrão de 5 segundos) o sistema padrão será
carregado.
Ao ser carregado, o Linux apresentará diversas telas de mensagens sendo
paginadas, até que seja apresentado o prompt inicial de login no sistema.
No primeiro acesso deve ser informado o usuário root, seguido da senha configurada
anteriormente.
Pronto. O Linux está instalado.
Fernando Cerutti 30
UNISUL
Curso de Servidores Linux
3.1. Inicialização
Esta seção explica o que acontece quando o Linux é inicializado ou
desligado, e como isto deve ser feito adequadamente. Caso os procedimentos
adequados não sejam seguidos, arquivos podem ser corrompidos ou perdidos,
vendavais podem soprar sobre seus bits desorganizados, e fire pode pegar no seu wall.
O ato solene de ligar o computador e carregar o sistema operacional é chamado
booting ou inicialização. Durante a inicialização, o computador carrega inicialmente
uma pequena porção de código chamado de bootstrap loader, o qual carrega e inicia
o sistema operacional. O bootstrap loader é normalmente armazenado em uma
localização fixa no disco rígido ou disquete.
Para PC's, a BIOS lê o primeiro setor (setor de inicialização) do disquete ou do disco
rígido O bootstrap loader está neste setor Ele carrega o sistema operacional, onde
quer que este esteja no disco
Após a carga do kernel do Linux em memória, ocorrem os seguintes eventos:
Fernando Cerutti 31
UNISUL
Curso de Servidores Linux
3.2. Encerramento
No encerramento do sistema, todos os processos recebem o aviso para
terminarem suas atividades (isso faz com que os arquivos sejam fechados e todos os
procedimentos necessários sejam tomados pelos programas); os sistemas de
arquivos e áreas de swap são desmontados e finalmente uma mensagem é
apresentada na console, sinalizando que o computador pode ser desligado
É importante seguir corretamente os passos quando encerrar o sistema. Caso este
procedimento não seja cumprido, seus sistemas de arquivos provavelmente estarão
prejudicados e os arquivos poderão ficar corrompidos. Isto acontece porque o Linux
tem um cache de disco que não grava os dados no disco no momento em que isto é
solicitado, mas somente em intervalos de tempo. A performance do sistema aumenta
consideravelmente, mas isso também pode causar a perda de dados caso você
simplesmente desligue seu computador.
Outra razão para se evitar desligar simplesmente o sistema é que em um sistema
multitarefa existem diversas coisas acontecendo em segundo plano, e desligar o
computador neste momento pode ser desastroso. Usando o procedimento correto
para o encerramento do sistema, você garante que todos os processos em
background possam salvar seus dados.
Para encerrar corretamente o sistema, utiliza-se o comando shutdown (ou halt, ou
poweroff)
Seqüência de encerramento:
3.3. Reinicialização
Fernando Cerutti 32
UNISUL
Curso de Servidores Linux
O comando shutdown também pode ser usado para colocar o sistema em modo
mono-usuário. no qual ninguém pode acessar o sistema, além do superusuário (root).
Isso é muito útil para tarefas de administração que não podem ser executadas caso o
sistema esteja sendo executado normalmente.
Logo após a instalação o primeiro acesso é feito usando-se o userid root, com o qual
poderão ser criados os usuários comuns para o dia a dia.
O processo de identificar-se para o sistema é chamado de login e segue os passos
abaixo
Insucesso no Login:
Fernando Cerutti 33
UNISUL
Curso de Servidores Linux
• A tecla CAPS LOCK está ativa e tudo está sendo enviado ao sistema em
maiúsculas
• userid ou password estão expirados ou foram alterados.
• Sua memória não serve nem para guardar a senha. Tire férias de 12 anos na
Malásia.
3.4.2. Logout
• logout
• exit,
• pressionar ctrl-d
4. Documentação
Fernando Cerutti 34
UNISUL
Curso de Servidores Linux
Listas de Discussão
Fernando Cerutti 35
UNISUL
Curso de Servidores Linux
5.1. Kernel
E o núcleo do sistema, carregado na inicialização e sendo um programa de controle
residente em memória O kernel gerência todos os recursos do sistema, apresentando-
os aos usuários como um sistema único e coerente. Fornece serviços às aplicações,
como gerenciamento de dispositivos, agendamento de processos, etc.
•
Gerenciar a memória alocando-a para cada processo.
•
Agendar o trabalho executado pela CPU de modo que os serviços de cada usuário
sejam completados da forma mais eficiente possível. Realizar a transferência de
dados entre os dispositivos do sistema.
•
Interpretar e executar instruções do shell
•
Controlar as permissões de acesso a arquivos.
5.2. Shell
Quando inventaram o UNIXTM (após um retiro intelectual de vários dias,
regado a muito suco de fígado de ornitorrincas) Dennis Ritchie e Ken Thompson (da
AT&T) resolveram criar uma forma de as pessoas interagirem com o novo sistema.
Sempre que um usuário se conecta ao Unix ele é "colocado" em um
programa shell, cujo prompt (%) é usualmente visível na posição do cursor na tela.
Para executar o seu trabalho o usuário tecla comandos neste prompt.
Fernando Cerutti 36
UNISUL
Curso de Servidores Linux
• Não possui as facilidades interativas dos shells modernos como C shell e Korn
shell .
• Possui uma linguagem fácil na qual podem ser feitos scripts.
C shell (csh).
•Escrito na Universidade da California em Berkeley.
•Como o nome indica, tem uma linguagem "C-like" na qual podem ser
feitos scrlpts
TC Shell (tcsh).
• Disponivel em domínio público.
• Tem todas as características do C shell juntamente com edição da linha de
comando no estilo Emacs.
• Shell de domínio público escrito pela Free Software Foundation no projeto GNU
• Pretende-se que seja uma implementação da POSIX Shell and Tools Specification
do IEEE
• Largamente utilizado na comunidade acadêmIca.
• Tem todas as características interativas do C shell e do Korn shell
• Sua linguagem de programação é compatível com a do Bourne Shell
Fernando Cerutti 37
UNISUL
Curso de Servidores Linux
#env
Cada variável ajuda você a customizar seu ambiente. A variável PATH define o
caminho padrão de busca dos comandos do usuário.
Exemplo:
#PATH=/usr/local/bin:/usr/X11R6/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/newuser/bi
n
Fernando Cerutti 38
UNISUL
Curso de Servidores Linux
alias h=history
alias revisa='h | tail -10'
Cancelando um alias
unalias alias_name
2. Rode o shell com o comando source para que as alterações tenham efeito imediato
source .bashrc
6. VI
Comandos basicos do editor vi.
O editor de texto preferido de 9 entre cada 10 usuarios UNIX eh o vi. (esses caras
se odeiam...)
A sintaxe para executar o vi é a seguinte:
$ vi nome_do_arquivo
• Outros comandos:
CTRL – g Indica a posição no arquivo e o seu número de linhas.
ESC Sai do modo de edição para modo de comando.
Fernando Cerutti 39
UNISUL
Curso de Servidores Linux
• Comandos de substituicao:
Fernando Cerutti 40
UNISUL
Curso de Servidores Linux
7. Sistema de Arquivos
Todos os arquivos no sistema de arquivos do Linux são organizados em uma
hierarquia de múltiplos níveis chamada árvore de diretórios.
Um bom exemplo de estrutura hierárquica para representar como o sistema de
arquivos e organizado é uma árvore genealógica. O sistema pode ser também
visualizado como uma árvore de cabeça para baixo (na época em que o Unix foi
inventado, as árvores possuiam cabeça), ou ainda como o sistema de raízes dessa
planta.
No topo do sistema de arquivos está um diretório único chamado root (raiz)
representado por uma barra /). Todos os outros arquivos e diretórios são
"descendentes" do root. O número de níveis é arbitrário, embora haja uma coerência
com a maioria dos sistemas Unix.
Fernando Cerutti 41
UNISUL
Curso de Servidores Linux
Fernando Cerutti 42
UNISUL
Curso de Servidores Linux
7.2.2. Diretórios
•
Pontos de ramificação na árvore hierárquica.
•
Usados para organizar grupos de arquivos.
•
Podem conter arquivos comuns, especiais ou outros diretórios
•
Nunca contém informações "reais", com as quais se pode trabalhar
•
Todos são descendentes do diretório raiz, localizado no topo da árvore
Fernando Cerutti 43
UNISUL
Curso de Servidores Linux
• Usados para representar dispositivos reais (terminal, impressora, etc) para I/O
• Usualmente localizados apenas no diretório /dev
• Unix considera qualquer dispositivo conectado ao sistema como um arquivo
• Existem dois tipos de I/O:
• Character
• Block
• terminal é tratado como os arquivos:
• stdin (standard input) para obter dados.
• stdout (standard output) para enviar dados.
O Linux permite nomes de arquivos com a maioria dos caracteres, mas devem ser
evitados:
•espaços,
•tabulações
•caracteres que tenham um significado especial para o shell, tais como:
& ; ( ) l ? \ ´’` " [ ] { } < > $ - ! /
7.3.3. Tamanho
Os nomes de arquivos podem ter até 256 caracteres e podem ser usadas extensões
para identificar tipos de arquivos, como por exemplo:
Fernando Cerutti 44
UNISUL
Curso de Servidores Linux
Arquivos são ocultos quando os seus nomes iniciam com um ponto (.), como por
exemplo
.bashrc .bash_profile
7.3.4. Unicidade
Caminhos Absolutos
Mostram como chegar a um arquivo a partir da raiz e sempre iniciam com / (barra).
Por exemplo:
/usr/local/doc/training/sample.f
•
Caminhos Relativos
Mostram como chegar a um arquivo a partir do diretório atual e nunca iniciam com /
(barra). Por exemplo:
7.4. Processos
Fernando Cerutti 45
UNISUL
Curso de Servidores Linux
7.4.1.1. ps
$ ps uc
$ ps ug
Exemplos:
kill –l lista os sinais suportados
kill 63554 termina o processo 63554
kill -9 12336 "mata" o processo 12336
kill -STOP 2264 interrompe o processo 2264
Fernando Cerutti 46
UNISUL
Curso de Servidores Linux
Notas:
Pode-se usar também [ctrl+z] para interromper e [ctrl+c] para terminar o processo
atualmente em execução no terminal.
Um usuário pode "matar" somente seus próprios processos.
# netscape &
Exemplos
# jobs
[1]+ Running find / -name netscape –print
# fg %1
find / -name netscape -print
#
Notas:
Fernando Cerutti 47
UNISUL
Curso de Servidores Linux
fdformat /dev/fd0H1440
uname –r
2.4.x-yy
ZONE="America/Sao_Paulo"
UTC=false
ARC=false
KEYBOARDTYPE="pc"
KEYTABLE="us"
Fernando Cerutti 48
UNISUL
Curso de Servidores Linux
/etc/sysconfig/network-scripts/ifup
/etc/sysconfig/network-scripts/ifdown
Ligações simbólicas para /sbin/ifup e /sbin/ifdown, respectivamente
/etc/sysconfig/network-scripts/network-functions
Contém funções para ativar e desativar as interfaces de rede e código para lidar com
as configurações alternativas de rede.
/etc/sysconfig/network-scripts/ifcfg-<interface-name> (eth0)
DEVICE=eth0
BOOTPROTO=static
BROADCAST=150.162.254.255
IPADDR=150.162.254.20
NETMASK=255.255.255.0
NETWORK=150.162.254.0
ONBOOT=yes
/etc/sysconfig/network-scripts/ifcfg-<interface-name>-<clone-name>
O primeiro arquivo define uma interface e o segundo contém as diferenças na
definição clone da interface. Os itens que são definidos no arquivo ifcfgvartam,
dependendo da interface.
/etc/sysconfig/network-scripts/chat-<interface-name>
/etc/sysconfig/network-scripts/ifup-post
/etc/sysconfig/network-scripts/ifup-routes
O arquivo ifup-post é chamado quando algum dispositivo é ativado (exceto SLIP).->
Ativa ifup-routes para utilizar as rotas estáticas que dependam do dlsposltlvo
/letc/sysconfig/network-scripts/ifdhcpc-done
Fernando Cerutti 49
UNISUL
Curso de Servidores Linux
Este arquivo, ativado uma vez que a configuração dhcp esteja completada, configura
/etc/resolv.conf a partir da versão do dhcp para /etc/dhcpc/resolv conf
init é o programa ativado pelo kernel durante a inicialização do sistema. Ele que
administra a ativação dos processos necessários. .
SysV Init é o padrão para o Linux no controle da inicialização do sistema, devido à sua
simplicidade, maior número de recursos e maior flexibilidade que o init BSD
Os arquivos de configuração residem no diretório /etc/rc.d. Nele podem ser
encontrados o rc.sysinit e os seguintes diretórios:
•
iinit.d rc0.d
•
rc1.d
•
rc2.d
•
rc3.d
•
rc4.d
•
rc5.d
•
rc6.d
O init.d contém uma série de programas. É necessário um programa para cada
serviço que seja ativado na inicialização do sistema ou na mudança de nível de
execução.
Os serviços não incluem atividades que devem ser executadas uma única vez, que
são atendIdas pelo rc.local e rc.serial localizados em /etc/rc.d.
id:3:initdefault:
Para alterar o nível de execução padrão basta editar o arquivo /etc/inittab e alterar o
número de 3 para outro desejado. Caso ocorra algum problema com a sua execução
será necessário reinicializar o sistema em modo mono-usuário e corrigir o inittab.
Fernando Cerutti 50
UNISUL
Curso de Servidores Linux
/usr/local/apache/bin/apachectl stop
Fernando Cerutti 51
UNISUL
Curso de Servidores Linux
Fernando Cerutti 52
UNISUL
Curso de Servidores Linux
compara a lista dos processos que devem ser encerrados no diretório indicativo do
nível de execução atual com a lista dos processos que devem ser ativados no nível de
execução de destino. De posse desta informação o processo init determinará quais
processos devem ser ativados ou desativados.
Para reiniciar o sistema basta executar o comando
init 6
Veja a lista dos links em /etc/rc.d/rc6.d:
K00linuxconf
K05keytable
K10xfs
K15gpm
K15httpd
K30sendmail
K50inet
K60atd
K60crond
K60lpd
K75netfs
K80random
K89portmap
K90killall
K90network
K99syslog
S00reboot
Como se pode ver, a maioria dos links inicia-se com a letra "K", indicando
que os processos serão desativados. Apenas um link inicia-se por "S", S00reboot, que
aponta para o script /etc/init.d/halt.
Similarmente, para colocar o sistema em modo monousuário
init 1
Nível de Execução Padrão
O nível em que o sistema irá funcionar é indicado pela entrada
id:3:initdefault:
do arquivo /etc/inittab. Neste sistema o nível padrão de execução é 3.
Para alterar este nível de execução basta alterar o número "3" para o valor desejado.
Nunca altere este valor para "0" ou "6", que indicam, respectivamente, o sistema
parado ou em modo de encerramento.
Definição ou Remoção de Processos Residentes
Para desativar um serviço de um determinado nível de execução basta
remover o link simbólico do diretório apropriado. Por exemplo, para desativar o serviço
httpd, do nível de execução 3, basta remover o link /etc/rc.d/rc3.d/S85httpd do
diretório /etc/rc.d/rc3.d.
Similarmente, para inserir um novo serviço, basta criar um link no diretório
padrão de execução, apontando para o script correspondente em /etc/rc.d/init.d:
# cd /etc/rc.d/rc3.d
# ln -s /etc/rc.d/init.d S99local
Este script realmente existe e é normalmente utilizado para inserir os
serviços locais. Pela numeração (99), este script sempre será o último a ser ativado.
Fernando Cerutti 53
UNISUL
Curso de Servidores Linux
• ksysv
Utilitário gráfico que permite a configuração dos níveis de execução e ativação
e desativação de processos individuais
Para lidar com a ativação e desativação de processos residentes, algo que
frequentemente precisamos fazer sempre que alteramos a configuração de um
serviço, precisamos realizar os seguintes passos:
#cd /etc/rc.d/init.d
# httpd restart
Fernando Cerutti 54
UNISUL
Curso de Servidores Linux
/etc/profile
/etc/bashrc
Fernando Cerutti 55
UNISUL
Curso de Servidores Linux
8. Comandos
Evitar:
Preferir:
Fernando Cerutti 56
UNISUL
Curso de Servidores Linux
cal 7 1001
July 1001
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
date
Mostra a data e hora do sistema.
clear
"LImpa" a tela.
who
Mostra quem está conectado ao sistema.
whoami
Quem sou eu
w
Mostra quem está conectado ao sistema e o que está executando.
finger
su -
Fernando Cerutti 57
UNISUL
Curso de Servidores Linux
• Redirecionamento
O redirecionamento consiste em alterar o modo normal do shell tratar os seguintes
arquivos
Entrada Padrão (stdin)
Saida Padrão ( stdout)
Saida de Erros (stderr)
Exemplos:
Fernando Cerutti 58
UNISUL
Curso de Servidores Linux
Pipes permitem com o uso de um comando o que de outra forma acarretarla múltiplos
comandos e arquivos intermediários.
Operação 1
Operação 2
who | sort
Dois usos muito comuns para um pipe são o more e o grep, como por exemplo
ls -al l more
who l more
who l grep fernando
ps ug l grep fernando
Filtro
É um comando que processa uma sequência de entrada e produz uma sequência de
saída. Linhas de comandos que usam um filtro irão incluir pipes para conectar o filtro
à stdout de um processo e à stdin de outro.
Por exemplo, a lInha abaixo toma a saida de who e a classifica. A sequência
classificada é então passada para o comando lpr para impressão. No caso, sort é um
filtro.
Fernando Cerutti 59
UNISUL
Curso de Servidores Linux
history
Para visualizar o histórico:
Fernando Cerutti 60
UNISUL
Curso de Servidores Linux
Fernando Cerutti 61
UNISUL
Curso de Servidores Linux
9.1. História
Durante os anos 70, quando a ARPANet era uma comunidade pequena,
amistosa, composta por uma centena de hosts, um único arquivo, HOSTS.TXT
continha todos os nomes e endereços necessários.
Em uma pequena rede Ethernet ou mesmo em um pequeno conjunto delas, não é muito difícil
manter uma tabela de mapeamento de nomes de máquinas e seus endereços. Esta informação é
normalmente mantida em um arquivo denominado /etc/hosts. Ao adicionar ou remover
máquinas à rede, o arquivo hosts deverá ser atualizado em todas as máquinas da rede.
Obviamente isso se tornará inviável em redes que contenham mais que algumas poucas
máquinas.
1
Sistema de nomes de domínios
Fernando Cerutti 62
UNISUL
Curso de Servidores Linux
Os órgãos responsáveis pela ARPA resolveram criar um sucessor para o HOSTS.TXT.A meta
era criar um sistema que resolvesse os problemas inerentes a uma tabela de hosts unificada em
um sistema que estava cada vez mais distribuído. O novo sistema deveria ter administração
local dos dados, e ao mesmo tempo disponibilizar esses dados globalmente. A
descentralização permitiria eliminar o bottleneck gerado pelo uso de um único host
gerente. E também iria diminuir o tráfego.
O responsável pelo projeto foi Paul Mockapetris, que nasceu em uma aldeia eslovaca 12343
mil anos atrás. Em 1984, ele lançou os RFCs 882 e 883, descrevendo o Domain Name
System. Atualmente, tais RFCs foram substituídos pelo 1034 e 1035.
Fernando Cerutti 63
UNISUL
Curso de Servidores Linux
O Domain Name System é um banco de dados distribuído. Isto permite o controle de todos os
segmentos do banco de dados, uma vez que cada segmento esta disponível na rede através de
um sistema client-server. A robustez e a performance ficam garantidas pela utilização da
replicação e caching.
Fernando Cerutti 64
UNISUL
Curso de Servidores Linux
Fernando Cerutti 65
UNISUL
Curso de Servidores Linux
9.3. Conceitos
O programa que controla o DNS é denominado BIND (Berkeley Internet Name Domain).
Programas chamados Nameservers (named) constituem o lado servidor do BIND. Eles contém
as informações de cada segmento da base de dados e tornam esses segmentos disponíveis para
os clientes, chamados resolvers.
9.3.1. Resolvers
Os resolvers são muitas vezes somente bibliotecas que criam queries
e as transmitem através da rede até um servidor de nomes. Os resolvers são programas clientes
acessados por duas funções principais:
• gethostbyname
• gethostbyaddress
O programa resolver não está alojado diretamente no kernel, como a pilha TCP/IP. Veja na
figura abaixo as funções e protocolos envolvidos em uma chamada ftp.
Você digita ftp ftp.unisul.br
Fernando Cerutti 66
UNISUL
Curso de Servidores Linux
hostname
hostname
FTP Resolver
estabelece ip address
conexão com o
endereço ip TCP
Envia datagramas
para um endereço ip
IP
Solicita, em ARP
broadcast, a
resolução do IP Eth driver
para MAC
Fernando Cerutti 67
UNISUL
Curso de Servidores Linux
Sub-arvore do
domínio edu
Deleg
ação da zona
purdue do
Figura 9-7 O domínio edu quebrado em zonas domínio edu
No exemplo acima, as máquinas roseana e dinastia estão em um dominio diferente da zona que
está sendo mapeada (nafta.zone) É necessário colocarmos um registro tipo A para
roseana.maranhao e dinastia.maranhao nessa zona, pois as máquinas externas a nafta.com.br
Fernando Cerutti 68
UNISUL
Curso de Servidores Linux
podem obter o nome do servidor do dominio maranhao (NS record) , mas devem obter também
o endereço!!!, através do registro A. Isso é chamado de “Glue record”
Fernando Cerutti 69
UNISUL
Curso de Servidores Linux
Fernando Cerutti 70
UNISUL
Curso de Servidores Linux
ser o nome do domínio da Organização nafta e ainda o nome de domínio de uma máquina que
encaminha correio eletrônico entre a Internet e a empresa.
A Universidade de Timbó Grande pode ter um domínio chamado por exemplo
bigtimbo.edu.br, com a rede do Departamento de Matemática definida como
mat.bigtimbo.edu.br. Máquinas em uma rede departamental terão o nome do domínio
adicionado ao seu nome individual. Então arquimedes será conhecida como
arquimedes.mat.bigtimbo.edu.br. Esta denominação é chamada de nome de domínio
totalmente qualificado, ou FQDN, o qual identifica uma única máquina em todo o mundo.
Os domínios do nível superior se dividem em três áreas: Arpa, generic top-level domains, ou
gTLDs e country domains ou geografical domains
Fernando Cerutti 71
UNISUL
Curso de Servidores Linux
Os nós no domínio in-addr.arpa são rotulados após os números na notação decimal dos octetos
IP. O domínio in-addr.arpa, por exemplo, pode Ter até 256 sub-domínios, cada um
correspondendo a um valor possível do primeiro octeto do endereço IP (0-255). Cada um
desses sub-domínios, ou domínio filhos, pode Ter até 256 sub-domínios, filhos dos filhos, que
correspondem aos valores possíveis do segundo octeto. Finalmente, no qurto nível da
hierarquia, existe os RR (resource records) anexados ao octeto final, originando o nome
completo do host ou da rede daquele endereço IP. Essa novela global termina em um domínio
medonho de grande, o in-addr.arpa. Esse cara comporta todos os endereços IP válidos na
Internet.
O endereço Ip está representado de forma oposta quando usado no “espaço de nomes” do DNS,
com o primeiro octeto no chão (final) do domínio in-addr.arpa. Dessa maneira, o endereço IP
será lido de baixo para cima no nome do domínio A maior diferença na hierarquia do IP e do
DNS está na direção da especificidade. O IP fica mais específico da esquerda para direita,
enquanto os domínios são mais específicos da direita para a esquerda.
Fernando Cerutti 72
UNISUL
Curso de Servidores Linux
:
Figura 0-2 – Hierarquia de nomes e endereços IP
Embora os domínios originais devessem continuar a ser respeitados dentro de cada um dos
domínios internacionais, isto acabou não ocorrendo. Cada país definiu suas próprias regras para
divisão. A Inglaterra usa ac.uk para seu domínio acadêmico, ao invés de edu.
No brasil, os domínios são controlados pela FAPESP, através do site http://registro.br
Fernando Cerutti 73
UNISUL
Curso de Servidores Linux
Todos os domínios de duas letras, possuem os nomes baseados nos códigos de países da norma
ISO 3166, menos a Inglaterra. Ela deveria ser gb pela norma, mas usa uk. Segundo o Cricket,
isso não tem importância, pois os caras dirigem no lado errado das estradas, também.
Fernando Cerutti 74
UNISUL
Curso de Servidores Linux
O cliente chama sua função resolver para converter o nome do host em um endereço IP. Uma
query do tipo A é enviada a um servidor de nomes root (topo dos domínios)
Qual o registro A do
servidor de telnet?
NS do
servidor de
telnet root server
Cliente telnet
Qual o registro A do
servidor de telnet?
Registro A
do servidor
Dell
de telnet Servidor de
nomes do
Cliente telnet servidor de
telnet
Fernando Cerutti 75
UNISUL
Curso de Servidores Linux
Conexão
TCP entre
os caras
Cliente Telnet Servidor de Telnet
O servidor de telnet pode requisitar uma confirmação do IP do cliente através do domínio in-
addr.arpa. Isso gera fluxo adicional de pacotes, mas garante autenticidade a comunicação:
O servidor de nomes
do cliente é NS do
domínio
Dell
Servidor de nomes do
Servidor de o registro PTR do cliente de telnet é
telnet cliente de telnet
roseana.maranhao.nafta.com.br
Fernando Cerutti 76
UNISUL
Curso de Servidores Linux
Qual o registro A do
cliente de telnet?
O ip da roseana é x
ServidorDell
de nomes do
cliente de telnet
Servidor de telnet
Agora o servidor de telnet pode confirmar a informação e validar a conexão. Obviamente que
um serviço de caching de nomes diminui bastante a transmissão através da rede.
Resumindo:
Na verdade, o fluxo é bem maior, uma vez que cada servidor de domínio, começando pelo root,
remete a resposta com o nome do servidor do dominínio mediatamente abaixo do seu,
conforme a figura:
Fernando Cerutti 77
UNISUL
Curso de Servidores Linux
Fernando Cerutti 78
UNISUL
Curso de Servidores Linux
Fernando Cerutti 79
UNISUL
Curso de Servidores Linux
Para iniciar, devemos testar a acessibilidade de nossas máquinas na rede. Pode-se começar com
um telnet para o localhost (127.0.0.1).
Pode-se conseguir os binários para qualquer distribuição do Linux, mas o melhor sempre são os
fontes. Para buscar a última versão dos fontes visite o site do Internet Software Consortium,
responsável pelo BIND e DHCP:
http://www.isc.org/bind
./configure
make
make install
Fernando Cerutti 80
UNISUL
Curso de Servidores Linux
/usr/local/sbin/named
[root@tproxy2 /root]# named -v
BIND 9.2.0
[root@tproxy2 /root]#
Nas versões mais antigas, pode ser necessário verificar os arquivos citados no man do named:
man named.
Se no final, seção Files, estiver citado o arquivo named.conf=bind 8.x ou maior. Se o arquivo
for named.boot, o bind é versão 4. Nesse caso, mude para a versão mais atual (urgente).
Fernando Cerutti 81
UNISUL
Curso de Servidores Linux
Servidores secundários
• São aqueles que transferem um conjunto completo de informações a
partir do servidor primário.
• Os arquivos descrevendo as zonas são transferidos do servidor primário
• E armazenados no servidor secundário como sendo arquivos locais.
• Esse processo é o zone transfer
• O servidor secundário mantém uma cópia completa das informações do
domínio, e responde a perguntas com autoridade.
Fernando Cerutti 82
UNISUL
Curso de Servidores Linux
named.ca zona1.zone
cache arquivo de zona
16.172.inn-addr.arpa.revzone zona2.bk
arquivo de zona reversa arquivo de zona atuando como slave
10.2.3. /etc/host.conf
order hosts,bind
10.2.4. /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
200.135.0.11 tproxy2.pop-sc.rnp.br
10.2.5. /etc/resolv.conf
search pop-sc.rnp.br
nameserver 150.162.1.3
nameserver 150.162.1.7
10.2.6. /etc/named.conf
• Esse é o primeiro arquivo que precisamos.
• Ele é lido quando o /usr/sbin/named inicializa.
Fernando Cerutti 83
UNISUL
Curso de Servidores Linux
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
//
// a caching only nameserver config
//
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
Fernando Cerutti 84
UNISUL
Curso de Servidores Linux
Directory
• A linha “directory” avisa ao named onde procurar os arquivos.
• Todos os arquivos nomeados subsenquentemente serão pesquisados no diretório relativo a
esse.
• A escolha do /var/named está de acordo com os padrões do sistema de arquivos do Linux.
• diretório pode ser outro, por exemplo:
• /usr/local/named/
10.2.7. /var/named/named.ca
• Este arquivo descreve os servidores de nome root em toda a Internet.
• Ele pode ser alterado a qualquer momento.
Fernando Cerutti 85
UNISUL
Curso de Servidores Linux
# /usr/sbin/named
verificação:
para saber se tudo correu bem podemos analizar o log de mensagens do sistema:
# tail -f /var/log/messages
zone "linux.pop-sc.rnp.br" IN {
type master;
file "linux.zone";
};
//zone "0.135.200.in-addr.arpa" {
// type master;
// file "0.135.200.revzone";
Fernando Cerutti 86
UNISUL
Curso de Servidores Linux
// allow-update { none; };
//};
key "key" {
algorithm hmac-md5;
secret "zXxCNdOqnwcoIZKzeAGbnencijFrUlxJtabaybVA0OLxpnbgL0gckHXfGkhP";
};
NS tproxy2.pop-sc.rnp.br.
NS server1.pop-sc.rnp.br.
;
;
linux.pop-sc.rnp.br. A 200.135.0.51
MX 1 tproxy2.pop-sc.rnp.br.
ns A 200.135.0.51
www CNAME linux.pop-sc.rnp.br.
Fernando Cerutti 87
UNISUL
Curso de Servidores Linux
; linux.revzone
;
$TTL 1d
@ IN SOA lab1.linux.unisul.br.root.ns.lab1.linux.unisul.br. (
2000062101 ; Serial
21600 ; Refresh (6 hours)
3600 ; Retry (1 hour)
32000 ; Expire (5 days)
86400 ; Minimum (1 day)) ;
;
IN NS ns.lab1.linux.unisul.br.
IN NS ns2.lab1.linux.unisul.br.
1 IN PTR jacare.lab1.linux.br.
2 IN PTR hell.lab1.linux.unisul.br.
3 IN PTR aldeia.lab1.linux.unisul.br.
;4 IN PTR divida.lab1.linux.unisul.br.
;5 IN PTR matriz.lab1.linux.unisul.br.
7 IN PTR grana.lab1.linux.unisul.br.
8 IN PTR gnssrv.lab1.linux.unisul.br.
;9 IN PTR arcturus.lab1.linux.unisul.br.
11 IN PTR porta01.lab1.linux.unisul.br.
12 IN PTR porta02.lab1.linux.unisul.br.
13 IN PTR porta03.lab1.linux.unisul.br.
14 IN PTR porta04.lab1.linux.unisul.br.
15 IN PTR porta05.lab1.linux.unisul.br.
16 IN PTR porta06.lab1.linux.unisul.br.
17 IN PTR porta07.lab1.linux.unisul.br.
18 IN PTR porta08.lab1.linux.unisul.br.
19 IN PTR porta09.lab1.linux.unisul.br.
20 IN PTR porta10.lab1.linux.unisul.br.
Fernando Cerutti 88
UNISUL
Curso de Servidores Linux
10.7.1. host
host –v [hostname]
[root@tproxy2 /root]# host -v charcharodon.atm.ufsc.br
Trying "charcharodon.atm.ufsc.br."
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43871
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;charcharodon.atm.ufsc.br. IN A
Fernando Cerutti 89
UNISUL
Curso de Servidores Linux
;; ANSWER SECTION:
charcharodon.atm.ufsc.br. 3600 IN A 150.162.254.20
host –v
Trying "3.0.135.200.in-addr.arpa."
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62457
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 3, ADDITIONAL: 2
;; QUESTION SECTION:
;3.0.135.200.in-addr.arpa. IN PTR
;; ANSWER SECTION:
3.0.135.200.in-addr.arpa. 21544 IN PTR server1.pop-sc.rnp.br.
3.0.135.200.in-addr.arpa. 21544 IN PTR ns.pop-sc.rnp.br.
3.0.135.200.in-addr.arpa. 21544 IN PTR pop-sc.rnp.br.
;; AUTHORITY SECTION:
0.135.200.in-addr.arpa. 16828 IN NS server1.pop-sc.rnp.br.
0.135.200.in-addr.arpa. 16828 IN NS SERVER2.pop-sc.rnp.br.
0.135.200.in-addr.arpa. 16828 IN NS SERVER1.CR-DF.rnp.br.
;; ADDITIONAL SECTION:
server1.pop-sc.rnp.br. 52840 IN A 200.135.0.3
SERVER2.pop-sc.rnp.br. 38369 IN A 200.135.0.5
host –a
10.7.2. NSLOOKUP
A ferramenta nslookup é poderosa para detectar erros de configuração em real-time. Digite:
# nslookup
Default Server: localhost
Address: 127.0.0.1
Fernando Cerutti 90
UNISUL
Curso de Servidores Linux
set type=mx
lab1.linux.unisul.br
> www.microsoft.com.br
Server: 150.162.1.3
Address: 150.162.1.3#53
Non-authoritative answer:
www.microsoft.com.br canonical name = ss1.terraempresas.com.br.
set all
Default server: 150.162.1.3
Address: 150.162.1.3#53
Default server: 150.162.1.7
Address: 150.162.1.7#53
Default server: 200.135.0.3
Address: 200.135.0.3#53
Set options:
novc nodebug nod2
defname search recurse
timeout = 0 retry = 2 port = 53
querytype = mx class = IN
domain = atm.ufsc.br
mudando o servidor
mudar o servidor pode dar uma ideia de como o resto do planeta está vendo nosso domínio
server 200.135.0.3
set query=any
procura qualquer registro
Fernando Cerutti 91
UNISUL
Curso de Servidores Linux
10.7.3. WHOIS
Netname: UFSC-ANSC
Netblock: 150.162.0.0 - 150.162.255.255
Coordinator:
Vieira, Elvis Melo (EMV-ARIN) elvis@UFSC.BR
048 231 9222 ext. 219 048 231 9436 (FAX) 048 231 9766
NS.UFSC.BR 150.162.1.3
SERVER1.POP-SC.RNP.BR 200.135.0.3
SERVER07.NPD.UFSC.BR 150.162.1.7
Fernando Cerutti 92
UNISUL
Curso de Servidores Linux
http://www.internic.net/whois:
named-checkconf
verifica a sintaxe do named.conf file.
named-checkconf [-t directory] [filename]
named-checkzone
verifica a sintaxe e consistência de um arquivo master
named-checkzone [-dq] [-c class] zone [filename]
rndc
No BIND 9.2, rndc suporta todos os comandos do BIND 8 ndc, menos ndc start.
Um arquivo de configuração é necessário, uma vez que toda comunicação como servidor é
autenticada com assinaturas digitais.
O arquivo padrão de configuração rndc é /etc/rndc.conf, que pode ser copiado de
/usr/local/bind-9.2.0/bin/rndc
Fernando Cerutti 93
UNISUL
Curso de Servidores Linux
server localhost {
key "rndc-key";
};
key "rndc-key" {
algorithm hmac-md5;
secret "qgNpeX+nujwRRrYiK7IHqA==";
};
key "rndc-key" {
algorithm hmac-md5;
secret "qgNpeX+nujwRRrYiK7IHqA==";
};
O formato do arquivo de configuração é similar ao named.conf
Usage: rndc [-c config] [-s server] [-p port] [-y key] [-V] command
Fernando Cerutti 94
UNISUL
Curso de Servidores Linux
rndc [-c config] [-s server] [-p port] [-y key] command [command...]
reload
Recarrega os arquivos de configuração e as zonas.
reload zone [class [view]]
Recarrega uma zona.
reconfig
Recarrega a configuração e as novas zonas, mas não as já existentes, mesmo que tenham sido
alteradas.
stats
Grava statísticas em um arquivo.
Estrutura de arquivos do DNS
BIND
named.ca zona1.zone
cache arquivo de zona
16.172.inn-addr.arpa.revzone zona2.bk
arquivo de zona reversa arquivo de zona atuando como slave
#mkdir /var/named
named.local
Fernando Cerutti 95
UNISUL
Curso de Servidores Linux
Atenção para o parâmetrol $ TTL 86400 -> 1 dia. Ele passou a ser obrigatório nos arquivos de
zona da versão 9.x
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
Localhost.zone
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ; serial
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
1D IN NS @
1D IN A 127.0.0.1
named.ca
O named.ca, ou named.root, é o arquivo que informa ao BIND onde
encontrar os servidores “roo”, no topo dos domínios. Ele deve sofre
atualizações, para que não fique sucateado.
Podemos fazer isso com um ftp para rs.internic.net
Abaixo, um script que efetua isso sozinho:
#!/bin/bash
ftp –ni rs.internic.net <<EOF
user anonymous usuario@unisul.br
cd /domain
hash
bin
get named.root
EOF
cp named.root /var/named/named.ca
#mudar para o diretorio do named
#cuidado: na versao 8.x ele fica em /usr/bin
#podemos usar também o /etc/rc.d/init.d
cd /usr/local/sbin
Fernando Cerutti 96
UNISUL
Curso de Servidores Linux
rndc reload
;
; There might be opening comments here if you already have this file.
; If not don't worry.
;
; About any leading spaces in front of the lines here: remove them!
; Lines should start in a ;, . or character, not blanks.
;
. 6D IN NS A.ROOT-SERVERS.NET.
. 6D IN NS B.ROOT-SERVERS.NET.
. 6D IN NS C.ROOT-SERVERS.NET.
. 6D IN NS D.ROOT-SERVERS.NET.
. 6D IN NS E.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.
. 6D IN NS G.ROOT-SERVERS.NET.
. 6D IN NS H.ROOT-SERVERS.NET.
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
. 6D IN NS K.ROOT-SERVERS.NET.
. 6D IN NS L.ROOT-SERVERS.NET.
. 6D IN NS M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 6D IN A 198.41.0.4
B.ROOT-SERVERS.NET. 6D IN A 128.9.0.107
C.ROOT-SERVERS.NET. 6D IN A 192.33.4.12
D.ROOT-SERVERS.NET. 6D IN A 128.8.10.90
E.ROOT-SERVERS.NET. 6D IN A 192.203.230.10
F.ROOT-SERVERS.NET. 6D IN A 192.5.5.241
G.ROOT-SERVERS.NET. 6D IN A 192.112.36.4
H.ROOT-SERVERS.NET. 6D IN A 128.63.2.53
I.ROOT-SERVERS.NET. 6D IN A 192.36.148.17
J.ROOT-SERVERS.NET. 6D IN A 198.41.0.10
K.ROOT-SERVERS.NET. 6D IN A 193.0.14.129
L.ROOT-SERVERS.NET. 6D IN A 198.32.64.12
M.ROOT-SERVERS.NET. 6D IN A 202.12.27.33
Compartilhamento de carga:
Um compartilhamento “primitivo” de carga (uma vez que não se calculam nenhum tipo de
parâmetros em relação as máquinas – cpu, memoria, etc...) pode ser feito através de um
mecanismo simples do DNS. Adicione registros A para as máquinas que irão responder pelo
mesmo nome, mas com diferentes números ip.
Conforme forem requisitadas pelos resolvers dos clientes, o named responde com um ip
diferente, começando pelo primeiro da lista para a primeira requisição, o segundo para a
Segunda, e assim por diante, através de um algoritmo round-robin.
Fernando Cerutti 97
UNISUL
Curso de Servidores Linux
Fernando Cerutti 98
UNISUL
Curso de Servidores Linux
Fernando Cerutti 99
UNISUL
Curso de Servidores Linux
11.1. Comando 2
[root@charcharodon apache_1.3.22]#make
final da saida do make:
...
gcc -DLINUX=22 -DUSE_HSREGEX -DNO_DL_NEEDED `../apaci` -o ab -L../os/unix -
L../ap ab.o -lm -lap -los -lm -lcrypt -lexpat
sed <apxs.pl >apxs \
-e 's%@TARGET@%httpd%g' \
-e 's%@CC@%gcc%g' \
-e 's%@CFLAGS@% -DLINUX=22 -DUSE_HSREGEX -DNO_DL_NEEDED
`../apaci`%g' \
-e 's%@CFLAGS_SHLIB@%%g' \
-e 's%@LD_SHLIB@%%g' \
-e 's%@LDFLAGS_MOD_SHLIB@%%g' \
-e 's%@LIBS_SHLIB@%%g' && chmod a+x apxs
make[2]: Leaving directory `/usr/local/apache_1.3.22/src/support'
<=== src/support
make[1]: Leaving directory `/usr/local/apache_1.3.22'
<=== src
11.2. Comando 3
[root@charcharodon apache_1.3.22]#make install
| |
| /usr/local/apache/bin/apachectl start |
| |
| Thanks for using Apache. The Apache Group |
| http://www.apache.org/ |
+----------------------------------------------------------------------------------------+
[root@charcharodon apache_1.3.22]#
11.3. passo 4
verificando o arquivo principal de configuração:
/usr/local/apache/conf/httpd.conf
#
# ServerType is either inetd, or standalone. Inetd mode is only supported on
# Unix platforms.
#
ServerType standalone
#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE! If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation
# (available at <URL:http://www.apache.org/docs/mod/core.html#lockfile>);
# you will save yourself a lot of trouble.
#
ServerRoot "/usr/local/apache"
#
# The LockFile directive sets the path to the lockfile used when Apache
# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
# USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at
# its default value. The main reason for changing it is if the logs
#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
PidFile /usr/local/apache/logs/httpd.pid
#
# ScoreBoardFile: File used to store internal server process information.
# Not all architectures require this. But if yours does (you'll know because
# this file will be created when you run Apache) then you *must* ensure that
# no two invocations of Apache share the same scoreboard file.
#
ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard
#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents.
#
ServerAdmin root@charcharodon.atm.ufsc.br
#
# ServerName allows you to set a host name which is sent back to clients for
# your server if it's different than the one the program would get (i.e., use
# "www" instead of the host's real name).
#
# Note: You cannot just invent host names and hope they work. The name you
# define here must be a valid DNS name for your host. If you don't understand
# this, ask your network administrator.
# If your host doesn't have a registered DNS name, enter its IP address here.
ServerName charcharodon.atm.ufsc.br
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/usr/local/apache/htdocs"
#
# Each directory to which Apache has access, can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# permissions.
#
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#
11.4. Passo 5
Verificando o Documento principal (DocumentRoot)
[root@charcharodon conf]# cd ..
[root@charcharodon apache]# ls
bin cgi-bin conf htdocs icons include libexec logs man proxy
11.5. Passo 6
Inicializando o apache
[root@charcharodon bin]#
<Directory "/var/www/mrtg">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Quando a versão 1.1 do protocolo HTTP foi lançada, tornou-se possível criar os hosts
virtuais somente através de nomes, deixando para o DNS resolver a questão do
números IP (isso é bem mais civilizado, pois cada ferramenta faz o seu trabalho).
No formato Hosts Virtuais Baseados em Nomes, o servidor DNS dos nossos domínios
deve estar configurado para apontar todos os hosts virtuais do apache para o IP do
servidor httpd. O Apache se encarrega de selecionar a página inicial <DocumentRoot>
do domínio virtual.
Existem vários motivos para se optar pelo host virtual baseado em nomes:
•É mais fácil de configurar e manter
•faz uso do DNS.
•Ajuda no problema da exaustão de endereços IP.
Alguns motivos podem levar a consideração de não usar o host virtual baseado em
nomes, preferindo-se a técnica baseada em números IP:
•
A principal razão é o protocolo SSL (Secure Sockets Layer) que não
funciona com os hosts virtuais baseados em nomes.
•
Ainda devemos considerar alguns sistemas operacionais e equipamentos
de rede que implementam tecnicas de controle de largura de banda.
Esses caras podem não diferenciar os hosts se eles não tiverem IPs
diferentes.
•
Depois, deve-se considerar a possibilidade de alguns clientes antigos não
serem compativeis com o http versão 1.1.
NameVirtualHost *
#Em um caso normal, onde todos os Ips de um servidor podem ser usados
#por um host virtual, podemos usar um asterisco <*> como argumento para #a
entrada NameVirtualHost. (NameVirtualHost * somente funciona para as
#versões 1.3.13 e posteriores.)
<VirtualHost *>
DocumentRoot /www/nafta
ServerName www.nafta.com.br
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/maranhao
ServerName www.maranhao.nafta.com.br
</VirtualHost>
Assim, as requisições de ambas as redes serão respondidas pelo mesmo host virtual.
• Controle de Acesso
Autenticação é o processo de provar que alguém é realmente quem diz ser, como
mostrar sua carteira de identidade, fazer leitura optica da retina ou impressao digital.
Normalmente, usamos o nome do usuario e a senha.
Autorização é encontrar os recursos aos quais a pessoa pode ter acesso, uma vez
autenticada. É o equivalente a uma lista de convidados para um luau nas Filipinas.
Teu nome está no cracha, tua foto também e tu consta da lista. Aproveite a festa.
O controle de acesso é uma forma mais generica, pois pode garantir ou negar o
acesso com base em uma variedade de critérios:
• Autenticação básica
Ë o método mais simples, e por muito tempo foi o único usado. Atualmente, existem
métodos mais eficientes, baseados em bancos de dados (se é que uma tabela
indexada pode ser chamada de banco de dados...).
Quando um recurso está protegido com esse método, o Apache envia um cabeçalho
401 - Authentication Required com a resposta para a requisicao.
O usuário preenche uma caixa de diálogo com o nome e a senha, e envia de volta ao
servidor. Se os dados forem aprovados pela lista de autenticação, o recurso
requisitado é enviado ao cliente.
Arquivo de senhas
Devido ao fato de ser um arquivo crítico, deve ser armazenado fora do diretório dos
documentos. Apesar de ser um arquivo criptografado, qualquer cracker de 1,99 pode
quebrar uma senha.
Para criar o arquivo de senhas, devemos usar o utilitário htpasswd que vem com o
Apache, e deve estar abaixo /bin do Apache (/usr/local/apache/bin/htpasswd)
AuthType Basic
AuthName "Somente para convidados”
AuthUserFile /usr/local/apache/passwords/passwords
Require user pupilos
Exemplo:
<Directory "/var/www">
AuthType Basic
AuthName "Somente para convidados"
AuthUserFile /usr/local/apache/passwords/passwords
Require user luana sharon julia
</Directory>
Require:
Essa entrada significa os requerimentos que devem ser satisfeitos para garantir a
admissão.
AuthName:
A frase "Somente para convidados” será mostrada na caixa de diálogo do cliente.
È necessário re-estartar o Apache, se usamos o httpd.conf. Se as diretivas forem
colocadas em .htaccess, não é necessário, porque esse arquivo é conferido em cada
requisição.
O controle de manipulação da senha deve ser feito no cliente, para que a senha não
fique armazenada. Como a maioria dos browsers não implementa essa feature, se
você precisa controle mais rígido de acesso, use outros métodos. Embora a senha
trafegue criptografada, o conteudo das páginas não tem proteção.
O PHP é uma linguagem que permite dinamizar o conteúdo das páginas web. Permite
integração com bancos de dados (veja a seção
/usr/local/apache/bin/apachectl restart
Vamos testar o funcionamento. Copie o super código php abaixo para o diretorio root
do httpd server, (obviamente, voce colocou o root em /usr/local/apache/htdocs) em um
arquivo chamado, por exemplo, hello.php
<html><head><title>PHP Test</title></head>
<body>
<?php echo "Hello World<p>"; ?>
<?php phpinfo(); ?>
</body></html>
gunzip php-4.1.1.tar.gz
tar –xvf php-4.1.1.tar
cd php-4.1.1
Atenção para os três passos clássicos:
./configure -> vamos compilar com suporte ao apache e MySQLl!!!
make
make install
O nosso ./configure foi informado onde estão os fontes do apache, e vai jogar para lá
os módulos do PHP para serem carregados com o Apache (passo que será efetuado
a seguir: reconfiguração do htpd.conf.)
make
make install
cp ./php.ini-dist /usr/local/lib/php.ini
/usr/local/apache/bin/apachectl restart
Vamos testar o funcionamento. Copie o super código php abaixo para o diretorio root
do httpd server, (obviamente, voce colocou o root em /usr/local/apache/htdocs) em um
arquivo chamado, por exemplo, hello.php
<html><head><title>PHP Test</title></head>
<body>
<?php echo "Hello World<p>"; ?>
<?php phpinfo(); ?>
</body></html>
http://www.mysql.com
Devemos conseguir nesse endereço os fontes. Não opte pelos binários. Compilar é a
melhor solução, voce fica no comando.
Os servidores trabalham dessa forma:
Se algo deu errado, e pode ser que sim, devemos remover os arquivos
abaixo antes de rodar o configure novamente:
shell> rm config.cache
shell> make clean
Threads: 1 Questions: 1 Slow queries: 0 Opens: 6 Flush tables: 1 Open tables: 0 Queries per
second avg: 0.001
mysql –p
mysql> CREATE TABLE TestTable (ID TINYINT (3) DEFAULT '0' NOT NULL
AUTO_INCREMENT, NAME VARCHAR (13) DEFAULT '0', PRIMARY KEY(ID)) TYPE
= MyISAM;
11.11.1. SERVER-STATUS
Para usar esse monitor, ele deve estar compilado no httpd ou então configurado para carga
dinâmica como módulo.
Para verificar se o servidor httpd foi compilado com o módulo de status, digite o seguinte
comando:
/usr/local/apache/bin/httpd –l
• Edite o httpd.conf
• Procure a seção:
• Dynamic Shared Object (DSO)
• Verifique a seção LoadModule
• Entre com as linhas abaixo:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from maranhao.nafta.com.br
</Location>
/usr/local/apache/bin/apachectl configtest
12.1. Introdução
O correio eletrônico certamente é a aplicaçao mais usada na internet, embora não
seja a maior geradora de tráfego. A comunicaçao interpessoal é primordial, e um sistema
operacional servidor de rede deve necessariamente implementar um serviço de correio via
TCP/IP.
Imagine você escrevendo uma carta em papel, como em 1365. Você
termina, assina, pensa bem no que vai mandar para o destinatário (será que ela vai
entender ‘teus cabelos são mais fascinantes que uma fila de pacotes processada no
roteador...’ ). Bom, você fecha o envelope põe o endereço do remetente, do
destinatário, chama seu cão para lamber o selo, cola o selo e envia pela caixa
coletora.
Mandar um e-mail é bem parecido. Você apenas troca a caneta e o papel
pelo computador. O correio convencional transporta envelopes reais, enquanto o
sendmail transporta mensagens eletrônicas em envelopes eletrônicos.
• pine
• mail
Um MUA é um dos muitos programas clientes, que o usuário roda para ler
e escrever suas mensagens. Muitos MUAs podem co-existir em uma única máquina.
Normalmente um MUA não pode transportar mensagens, embora alguns sistemas
mais atrevidos possam tentar fazer isso
Protocolos:
O protocolo encarregado desse serviço na pilha TCP/IP é o SMTP (Simple Mail Transfer
Protocol, cujo deamon fica ouvindo a porta 25 do tcp e do udp.
12.6. Inicialização
O Red Hat inicia o sendmail no script
/etc/rc.d/init.d/sendmail. O processo lê um arquivo de configuraçao
(/etc/sysconfig/sendmail), que contém os parâmetros:
DEAMON =yes
QUEUE= 1h
Entao, para que o sendmail não rode como deamon (seu sistema não precisa
receber mensagens e repassá-las. Ele pode ser apenas um cliente de e-mail), edite o arquivo
/etc/sysconfig/sendmail ou use a ferramente de interface grafica (um primor de desenho)
tksysv onde voce pode escolher uma lista de deamons disparados em tempo de inicializacao...)
O sendmail envia as mensagens normalmente sem ser executado como deamon.
Sendmail.cf
• Lido toda vez que o programa sendmail é inicializado
• Contém informações necessárias á execução do programa sendmail:
• localização de arquivos importantes e suas permissões de acesso default
• Regras
• Conjunto de regras para reescrita de endereços
• Comandos de configuração
• Linhas iniciadas por "#" são consideradas comentários e são ignoradas
• Linhas iniciadas por tabs ou brancos são consideradas como continuação da linha
anterior
Raramente você precisará editar o sendmail.cf. Mas é bom saber o que tem lá dentro.
O arquivo tem sete seções:
Local Info
Options
Trusted Users
Format of Headers
Rewriting Rules
Mailer Definitions
COMANDO DESCRIÇÃO
V Versão do arquivo de configuração (V8)
M Definição de um MTA
D Definição de macro
R Definição de regra de reescrita
S Definição do início de um conjunto de regras de reescrita
C Definição de uma macro de classe
Definição de uma macro de classe a partir de um arquivo ou
F
pipe
O Definição de uma opção
H Definição de um cabeçalho
P Definição de prioridades de entrega
T Definição de usuários confiáveis
K Declaração de um banco de dados com chaves (V8)
E Definição de uma variável de ambiente
Local Info:
Define informações especificas do host:
Nome do host,
Nome de quaisquer outros hosts roteadores de mensagens
Domínio da mensagem
Nome que o sendmail usa para se identificar quando retorna mensagens de erro
Numero da versão do sendmail.cf
Exemplo:
# comentarios começam com o sustenido.
#o nome do usuario que ira aparecer como remetente das mensagens de erro:
DnMAILER-DEAMON
# a linha acima define o usuario MAILER-DEAMON atraves de uma macro (D) de nome n
# operadores que não poderao ser usados como nome de usuarios:
CO @ % !
# esses tres operadores confundem o sendmail.
#um comando de classe (C) designa os valores para a classe (O).
#arquivo que contém os hosts para os quais nosso servidor receberá os e-mails:
Fw/etc/sendmail.cw
#aqui um comando de arquivo (F) carrega os valores de /etc/sendmail.cw na variável w.
#nosso servidor aceitara como dele as mensagens que sao enviadas para os hosts da #variavel
w.
#a linha abaixo define um banco de dados para acesso (protegendo contra spam)
Kaccess hash -o /etc/mail/access
#o banco de dados access (que não é o da microsoft), é usado para controlar a redistribuiçao de
mensagens. o formato hash é um padrao do Unix.
SECAO OPTIONS
Dificilmente voce vai alterar algo por aqui, mas essa secao possui alguns comandos
interessantes. sao os comandos o:
#localizacao do arquivo de aliases (apelidos dos usuarios)
o AliasFile=/etc/aliases
#tempos para retorno:
o Timeout.queuereturn=5d
#retorna mensagem de erro se a mensagem ficar na fila por 5 dias sem ser entregue.
o Timeout.queuewarn=4h
#retorna mensagem de aviso, se a mensagem não foi entregue apos 4 horas.
#se voce esta tentado a mudar isso, não mude, a não ser que a tentação seja irresistível. (Como
Orson Wells, profeta que habitou algum covil de orgias medievais, você pode resistir a tudo,
menos a uma tentacao...)
PRÉ-REQUISITOS
A maioria dos sistemas Unix abertos (FreeBSD, Linux, OpenBSD e outros), por definição
possuem todos os softwares necessários à instalação do sendmail. O próprio sendmail, na maior
parte dos casos, não precisa ser compilado, bastando obter a versão pré-compilada para o seu
sistema e instalá-la. Claro que nós, da elite da administração de redes, não vamos pegar algo
pré compilado e jogar no santuário que é nosso servidor de e-mail. Não esqueça: O servidor é o
cara que garante teu emprego!!!
A compilação do sendmail se dá sem maiores problemas nestes sistemas, visto que todos os
softwares necessários, listados a seguir, se encontram disponíveis no sistema.
Para a instalação do Sendmail são necessários os seguintes softwares:
• Compilador C
• Processador de macros M4
O processador M4 pode ser entendido
como um tradutor onde a partir de um arquivo simples de configuração é gerado o
arquivo na linguagem nativa do sendmail (sendmail.cf).
Recomenda-se a instalação do M4 distribuído pela Free Software Foundation (GNU),
de nome. Este software possui um outro pré-requisito, o pacote texinfo.
• Rotinas de acesso a banco de dados
O sendmail pode trabalhar com dois tipos de software para acesso a seus
bancos de dados (/etc/aliases, UserDB, etc). São eles newdb e ndbm. A
implementação do formato NEWDB se dá através da instalação do pacote db,
distribuído por Berkeley e o NDBM já vem instalado em algumas versões do Unix.
Apenas a nova versão (NEWDB) é necessária. O suporte ao formato NDBM foi
incluído apenas para suporte a bancos de dados antigos. Todos os bancos de dados
que sejam reconstruídos assumirão o novo formato (desde que o sendmail tenha sido
compilado com suporte ao formato NEWDB). Estes softwares não são estritamente
necessários, porém não se recomenda em absoluto que se instale o programa
sendmail sem incluir o suporte a um destes dois tipos de acesso a bancos de dados.
As versões do programa Sendmail de número 8.8.x, suportam apenas a versão 1.85
do programa DB. Da versão 8.9 em diante, pode ser instaladas as versões superiores a 2.0 do
programa DB.
ftp> quit
# gzip -dc db-2.7.5.tar.gz | tar xvf -
# cd /usr/local/src/db-2.7.5
# cd build_unix
# ../dist/configure
# make
# make install
Compilação Sendmail
Baixe o sendmail em www.sendmail.org ou
ftp://ftp.unicamp.br/pub/mail/sendmail/sendmail.8.11.5.tar.gz
VERSIONID
OSTYPE
DOMAIN
FEATURE
LOCAL MACRO DEFINITIONS
MAILER
LOCAL_RULESET_*
VERSIONID
É uma macro que grava informação sobre a versão do arquivo de configuração gerado. Este
valor pode ser gerado pelo RCS ou SCCS.
OSTYPE
Define o tipo de sistema operacional para que o sendmail crie as definições apropriadas
para a localização de diversos arquivos. Os valores possíveis para OSTYPE podem ser
encontrados no diretório /usr/local/src/sendmail-8.9.3/cf/ostype. Neste diretório existem
vários arquivos terminados em m4. Para sistemas Linux, existe um arquivo chamado
linux.m4. O valor correto para é OSTYPE(linux). Sempre remover a terminação m4.
DOMAIN
Indica um diretório onde se encontram todas as modificações necessárias para uma
instalação. DOMAIN(linux.unisul.br) indica que o sendmail levará em conta, durante a
criação do arquivo sendmail.cf, os valores definidos no arquivo linux.unisul.br.m4 contido
em /usr/local/src/sendmail-8.9.3/cf/domain/. Na distribuição do sendmail temos o seguinte
exemplo (arquivo Berkeley.EDU.m4):
divert(0)
VERSIONID(`@(#)Berkeley.EDU.m4 8.14 (Berkeley) 5/19/1998')
DOMAIN(berkeley-only)dnl
define(`BITNET_RELAY', `bitnet-relay.Berkeley.EDU')dnl
define(`UUCP_RELAY', `uucp-relay.Berkeley.EDU')dnl
define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')dnl
define(`confCW_FILE', `-o /etc/sendmail.cw')dnl
define(`confDONT_INIT_GROUPS', True)dnl
FEATURE(redirect)dnl
FEATURE(use_cw_file)dnl
FEATURE(stickyhost)dnl
FEATURE
Representa opções especiais que podem ser configuradas. A seguir são listadas algumas
opções de maior interesse:
FEATURE(`allmasquerade')
FEATURE(`access_db')
FEATURE(`always_add_domain')
FEATURE(`blacklist_recipients')
FEATURE(`local_procmail')
FEATURE(`masquerade_entire_domain')
FEATURE(`masquerade_envelope')
FEATURE(`nullclient´,`servidor smtp')
FEATURE(`relay_entire_domain')
FEATURE(`relay_local_from´)
FEATURE(`redirect')
FEATURE(`smrsh')
FEATURE(`use_cw_file')
FEATURE(`virtusertable')
DEFINIÇÃO DE MACROS
Algumas das macros podem ser definidas por meio da diretiva "define" do m4. A seguir
listamos algumas opções mais utilizadas:
define(`confDELIVERY_MODE',`[background][queueonly][deferred][interac
tive]´)
define(`confHOST_STATUS_DIRECTORY',`/var/spool/mqueue/hoststatus')
define(`confMAX_DAEMON_CHILDREN',`10')
define(`confMAX_MESSAGE_SIZE',`1024')
define(`confTO_QUEUERETURN',`5d')
define(`confTO_QUEUEWARN',`4h')
define(`MAIL_HUB',`mailhub.unisul.br')
define(`confUSERDBSPEC',`/etc/userdb.db')
EXPOSED_USER(usuario)
LOCAL_CONFIG
CE usuario
ou ainda
LOCAL_CONFIG
FE/etc/mail/visible.users
LOCAL_CONFIG
LOCAL_RULE_1
LOCAL_RULE_2
LOCAL_RULE_3
LOCAL_RULESETS
LOCAL_NET_CONFIG
MASQUERADE_AS(`nome do domínio')
MAILER
Define os agentes de entrega de mensagens que o seu sistema irá utilizar:
MAILER(`smtp')
MAILER(`uucp')
MAILER(`procmail')
Continuando a Instalação
Recomenda-se a criação de um diretório separado para abrigar todos os arquivos do
diretório cf (/usr/local/sendmail-8.12.1/cf), como por exemplo, /etc/mail. O diretório
/etc/mail, a partir da versão 8.8 do sendmail é utilizado como um diretório padrão para
o armazenamento de arquivos de configuração.
Desta forma, sempre que se quiser alterar os arquivos de configuração basta digitar
# cd /etc/mail/cf
divert(0)dnl
VERSIONID(`$Id: unisul.mc,v 8.1.2 2002/02/12 22:48:05 [postmaster@unisul.br]
Exp $')
OSTYPE(linux)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl
FEATURE('redirect')
FEATURE('virtusertable')
FEATURE('access_db')
FEATURE('use_cw_file')
-------------------------------------------------------------------
Opção mais completa:
divert(0)dnl
include(../m4/cf.m4)
VERSIONID(`$Header$')
OSTYPE(linux)
FEATURE(nouucp)
FEATURE(use_cw_file)
FEATURE(`local_procmail',`/usr/bin/procmail')
MASQUERADE_AS(unisul.br)
MAILER(local)
MAILER(smtp)
•
Uma das maiores vantagens de se incluir o programa procmail como
mailer local é a facilidade oferecida a usuários e administradores de
filtrar as mensagens. O administrador pode filtrar as mensagens em
nível de sistema e o usuário pode criar filtros para suas mensagens.
Bastante útil para filtrar mensagens não solicitadas (junk email ou
spam).
Continuando a instalação
Digitar a partir do diretorio /etc/mail/cf:
Isso vai gerar um arquivo sendmail.cf, com uma saida genial na tela:
A configuração do sendmail
Edite o arquivo /etc/mail/local-host-names e coloque a lista (um por linha) dos
domínios do o sendmail.
Exemplo:
# vi /etc/mail/local-host-names
# vi /etc/mail/aliases
##linhas acrescentadas:
MAILER-DAEMON: root
postmaster: root
webmaster: mel_lisboa
linke: linke@bol.com.br
facerutti: cerutti@unisul.br
clientes: :include:/etc/mail/clientex.txt
• e o clientes para
todos os e-mail (um por linha) presentes
no arquivo /usr/local/clientes.txt
# cat /etc/mail/virtusertable
gamk@gamk.com.br gamk
@gamk.com.br diego
gamk@linuxsecurity.com.br renato
@meu_dominio.com %1@bol.com.br
Explicando:
Todos os e-mails que chegarem para o domínio
gamk.com.br irão para o usuário (local na máquina) chamado "diego" com
excessão do e-mail
gamk@gamk.com.br que irá para o usuário "gamk".
Os e-mails que chegarem para gamk@linuxsecurity.com.br
irão para o usuário local na máquina "renato".
Qualquer e-mail que chegar no domínio, meu_dominio.com,
será redirecionado para o domínio bol.com.br mantendo o nome do usuário.
# cat /etc/mail/access
200.150.59 RELAY
hackers.lab 550 não permetimos Hackers
gamk.com.br REJECT
diego.gamk.com.br OK
Pronto o seu sendmail está configurado e já pode ser br> usado normalmente...
# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.virtualnet.net ESMTP Sendmail 8.11.2/8.11.2;
Sat, 10 Mar 2001 20:23:04 -0300
expn gamk
250 2.1.5 GAMK
vrfy diegolinke
250 2.1.5 Diego Linke
O PrivacyOptions=authwarnings
O PrivacyOptions=authwarnings,noexpn,novrfy
Substitua por:
# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 GAMK ESMTP Mail Server [smtp.gamk.com.br]
Se você quiser, pode mudar o conteúdo do help (comando help), basta alterar o arquivo
/etc/mail/helpfile.
# cat /etc/mail/helpfile
smtp ********************************************************
smtp * Sys/Admin: Diego Linke *
smtp ********************************************************
********************************************************
********************************************************
Man Pages:
man sendmail
man m4
man aliases
man mail.local
É claro que, caso a máquina cujo registro MX tenha a prioridade mais alta
demore mais que cinco dias para voltar a funcionar, existe o risco das mensagens
retornarem a quem as enviou dizendo que o destino está inacessível.
# /usr/sbin/sendmail -OQueueDirectory=/var/spool/unisul.back -q -v
O PrivacyOptions=goaway
Isto feito, veja o que acontece quando se tenta novamente utilizar os
comandos vrfy ou expn:
% telnet acme.com 25
Trying...
Connected to acme.com
Escape character is '^]'.
220 acme.com ESMTP Sendmail 8.8.5/8.8.5; Wed, 12 Nov 1997 15:53:14 -020
vrfy cerutti
252 Cannot VRFY user; try RCPT to attempt delivery (or try finger)
expn suporte
502 Sorry, we do not allow this operation
Clientes
Eudora
Pegasus
Netscape
e muitos outros(...)
12.16. Instalação
•
Download software
ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper2.53.ta
r.Z
•
Instalar
# cd /usr/local/src
# zcat qpopper2.53.tar.Z | tar xvf -
# cd qpopper2.53
# ./configure
# make
# cp popper /usr/local/lib
•
Editar arquivo /etc/inetd.conf e inserir a seguinte linha:
•
Certificar-se de que no arquivo /etc/services existam as entradas para
o serviço POP:
•
Testar a instalação:
# telnet popmail.unisul.br 110
Trying 143.106.20.20...
Connected to popmail.unisul.br
Escape character is '^]'.
+OK QPOP (version 2.53) at popmail.unisul.br starting.
user cerutti
+OK Password required for cerutti.
pass xxxxxxx
+OK cerutti has 0 messages (0 octets).
•
Problemas: Ler arquivo de instalação em
/usr/local/src/qpopper2.53/INSTALL
12.18. Aliases
# Aliases obrigatorios
postmaster: root
MAILER-DAEMON: postmaster
# Aliases para o uso do listserv#
listserv: "|/usr/server/catmail -r -f"
consult: :include:/usr/sys/consult
owner-consult: suporte
owner-owner: suporte
cursos: joao,maria,jose,antonio
nobody:/dev/null
Fernando_Cerutti: cerutti
1° PASSO:
Logue Como root na maquina.
2° PASSO:
Crie um diretório e copie seu SENDMAIL.CF (arquivo de configuracao do
sendmail) para ele.
$~# mkdir /anti-spam
$~# cd /anti-spam
$~# cp /etc/sendmail.cf /anti-spam
3° PASSO:
4° PASSO:
Edite o SENDMAIL.CF que está no diretório anti-spam e adicione as regras.
$~# pico /anti-spam/sendmail.cf
Ok, uma vez dentro do 'PICO' você deve ir para a linha abaixo de 'localhost'.
Para adicionar as regras, use o seguinte comando do PICO:
^R (CTRL + R) e lá procure pelo primeiro arquivo (regras1.txt).
Se tudo der certo, ficará mais ou menos assim:
##################
# local info #
##################
Cwlocalhost
5° PASSO:
Agora vamos adicionar o arquivo (regras2.txt)
$~# pico /anti-spam/sendmail.cf
Com o arquivo editado, procure por RULESET 98. (lembre-se que para
procurar com o pico use o comando):
^W (CTRL + W)
###############################################################
####
R<$*@$=w> $@ ok shortcut
# idea from Steven Schultz
R<> $: <$n @ $(dequote "" $&{client_name} $) >
# mark address
#R$* $:<@>$1
# is the syntax ok (uses <> and no dot at the end?)
#R<@><$*@$*$~.> $:<$1@$2$3>
# mark still there: error...
#R<@>$* $#error $@ 5.1.8 $: 551 illegal MAIL FROM $1,
# if we don't to the above: remove at least the dot...
R<$*@$*.> <$1@$2>
R$* $: $>3 $1 canonify
R$- $@ ok local host
# no host without a . in the FQHN ?
# if you get local e-mail from hosts without full domains,
# put a hash in front of the next rule
R$*<@$->$* $#error $@ 5.1.8 $: 551 invalid host name $2, check your
configuration.
# lookup IP address (reverse mapping available?)
# R$*<@[$-.$-.$-.$-]>$* $: $1 < @ $[ [ $2.$3.$4.$5 ] $] > $6
# copy the result of the lookup
R$* $:$1 $| $1
# now remove the dot
R$* $| $*<@$*.>$* $: $1 $| $2<@$3>$4
# and check the database
R$* $| $*<@$*>$* $: $1 $| $>junk $2<@$3>
# match: return given error code (rhs of map)
R$* $| $*<@$*@JUNK>$* $#error $@ 5.7.1 $: $3
# restore original value (after canonicalization by ruleset 3)
# this is only required if you want to enable the last rule
# R$* $| $* $: $1
# this is dangerous! no real name
# R$*<@$*$~P>$* $#error $@ 4.1.8 $: 451 unresolvable host name $2$3,
check your setup.
S98
6° PASSO:
Crie um diretório chamado mail dentro do diretório /ETC
$~# mkdir /etc/mail
Em seguida crie os seguintes arquivos:
$~# cd /etc/mail
$~# echo > LocalIP
$~# echo > relayto
relayto -> Deve conter o IP e HOSTS das maquinas que podem fazer 'RELAY'
pelo seu servidor
ex:
www.minha-maquina.com
www.xyz.org
222.54.22.09
2.34.56.78
DeniedIP -> Deve conter o IP das maquinas que estao banidas por você
ex:
2.34.56.78
222.234.244.555
DeniedNames -> Deve conter o DOMINIO das maquinas banidas por você
ex:
www.happens.org
www.disneylandia.com
pornografia.net
7° PASSO:
Crie um diretório chamado 'SEND-ORIG'
$~# mkdir /etc/send-orig
$~# cp /etc/sendmail.cf /etc/send-orig
Caso não de certo, derrube seu sendmail mais uma vez e volte as
configuracoes antigas, e envie-nos um e-mail. (askion@antispam.org.br)
$~# rm /etc/sendmail.cf
$~# cp /etc/send-orig/sendmail.cf /etc
$~# /usr/sbin/sendmail -bd -q 15m
Solução: O mail tem que ser originado ou finalizado localmente (neste host),
com exceções feitas a hosts listados, um por linha, em. /etc/sendmail.cR
(Nestas condições, este conjunto de regras não permite retransmitir dentro de
seu domínio, com exceção dos hosts listados em. /etc/sendmail.cR. Note
cuidadosamente que você tem que listar os nomes de hosts completamente
qualificados para cada host que você deseja permitir a retransmissão. Listar o
nome de um domínio não é o suficiente. Idealmente, isso restringirá somente a
retransmissão para fora do seu domínio. Isto é particularmente útil se você
estiver usando os clientes de mail como o MH ou o Eudora que gostam de
procurar uma retransmissão SMTP na rede local para fazer a entrega de mail.)
FR-o /etc/sendmail.cR
Scheck_rcpt
#qualquer coisa terminada localmente está ok
R<$+ @ $=w > $@ OK
R<$+ @ $=R > $@ OK
Notas:
por
Scheck_relay
R$+ $| $+ $: $(spammers $1 $: OK $)
ROK $@ OK
R$+ $#error $: 521 $1
Problema: Você quer rejeitar mails que tenham falsos nomes de hosts no
campo MAIL FROM do SMTP. (Também inclui a correção do problema
anterior, mas modificada de forma que ela enviará uma mensagem de insulto
de volta aos perpetrators.)
Solução: Confira a validade no campo MAIL. Neste caso, você tem que permitir
as pessoas que estão no banco de dados de spammers terem mais acesso ao
seu servidor (por exemplo, eles poderão usar VRFY e EXPN), mas você ainda
pode previnir que eles enviem mails.
Scheck_mail
# verifica um nome de domínio válido
R$* $: <?> $>3 $1
R<?> $* < @ $+ . > $: <OK>
R<?> $* < @ $+ > $#error $: 451 Domain must resolve
Nota: VRFY, EXPN, etc. ainda irão funcionar. Sabendo-se que esta regra
desabilita o valor de MAIL FROM, o qual pode ser facilmente forjado, constitui
uma solução, porém menos eficiente que a anterior.
Solução: Mantenha um banco de dados para estes sujeitos ruins. Neste caso a
chave do banco de dados é `` user@host '' e o valor é a mensagem de erro
que você quer devolver.
Scheck_compat
# se o recipiente não está protegido, ele recebe o mail
R$+ $: <OK> $1
R<OK> $+ $| < $={Protected} @ $=w >
$: <PROT> $1
R<OK> $+ $@ OK
Nota: A regra acima realmente não funciona bem, porque não consegue
manipular adequadamente os símbolos gráficos de maior/menor "< >".
Outros Locais que tratam sobre o Anti-Spam
* http://spam.abuse.net/spam/
* http://www.mids.org/nospam/
O PrivacyOptions=authwarnings
O PrivacyOptions=authwarnings,noexpn,novrfy
Substitua por:
# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 GAMK ESMTP Mail Server [smtp.gamk.com.br]
Se você quiser, pode mudar o conteúdo do help (comando help), basta alterar
o arquivo /etc/mail/helpfile.
# cat /etc/mail/helpfile
smtp ********************************************************
smtp * Sys/Admin: Zé do Boné *
smtp ********************************************************
********************************************************
* Sys/Admin: Zé do Boné *
********************************************************
Man Pages:
man sendmail
man m4
man aliases
man mail.local
12.22. SPAM
O que é SPAM ?
Etimologicamente, o termo SPAM origina-se de um programa de série inglesa
de comédia Monty Pyton. onde Vikings desajeitados, num bar, pediram
repetida e exageradamente o termo SPAM, marca de um presunto enlatado
americano.
Negue qualquer tipo de lixo enviado a sua caixa-postal que não tenha
solicitado e que não tenha te agradado.
3 - Bloqueando, Filtrando....(DENY)
As técnicas de bloqueio utilizadas por nossos sistemas são todas destinadas a
sistema Unix praticamente. Admistradores de Sistema em NT, poderão remeter
email a abuse@magiclink.com.br com suas contribuições.
1o PASSO:
2o PASSO:
3o PASSO:
Ok, uma vez dentro do 'PICO' voce deve ir para a linha abaixo de 'localhost'.
Para adicionar as regras use o seguinte comando do PICO:
##################
# local info #
##################
Cwlocalhost
Ok, Salve o seu arquivo. Respire, beba uma coca-cola e vamos para o proximo
passo.
4o PASSO:
Com o arquivo editado procure por RULESET 98. (lembre-se que para procurar
com o pico use o comando):
^W (CTRL + W)
###############################################################
####
### Ruleset 98 -- local part of ruleset zero (can be null) ###
###############################################################
####
Scheck_rcpt
# make sure you have TABs here, not BLANKs! sendmail will complain
otherwise...
# first: get client addr
R$+ $: $(dequote "" $&{client_addr} $) $| $13
R0 $| $* $@ ok no client addr: directly invoked
R$={LocalIP}$* $| $* $@ ok from here
# not local, check rcpt
R$* $| $* $: $>3 $2
# remove local part, maybe repeatedly
R$*<@$=w.>$* $>3 $1 $3
# alternatively (or even both):
# if you use RelayTo, uncomment the next line!
# R$*<@$*$={RelayTo}.>$* $>3 $1 $4
# still something left?
# R$*<@$+>$* $#error $@ 5.7.1 $: 551 we do not relay
R$*<@$+>$* $#error $@ 5.7.1 $: 551 Relay Negado - Contate o Administrador
de seu sistema.
Scheck_relay
R$+ $| $={DeniedIP}$* $#error $@ 5.7.1 $: "no access from your IP address"
R$*$={DeniedNames} $| $* $#error $@ 5.7.1 $: "no access from your host"
Scheck_mail
# don't check these
R<$*@$=w> $@ ok shortcut
# idea from Steven Schultz
R<> $: <$n @ $(dequote "" $&{client_name} $) >
# mark address
#R$* $:<@>$1
# is the syntax ok (uses <> and no dot at the end?)
#R<@><$*@$*$~.> $:<$1@$2$3>
# mark still there: error...
#R<@>$* $#error $@ 5.1.8 $: 551 illegal MAIL FROM $1,
# if we don't to the above: remove at least the dot...
R<$*@$*.> <$1@$2>
R$* $: $>3 $1 canonify
R$- $@ ok local host
# no host without a . in the FQHN ?
S98
5o PASSO:
$~# cd /etc/mail
$~# echo > LocalIP
$~# echo > relayto
$~# echo > DeniedIP
$~# echo > DeniedNames
$~# echo > junk
ex:
127.0.0.1
2.34.56.78
2.34.56.78.
2.34.56
relayto -> Deve conter o IP e HOSTS das maquinas que podem fazer 'RELAY'
pelo seu servidor
ex:
chica-da-silva-muito-boa.org
debora.rodrigues.e.gostosa.com
www.minha-maquina.com
www.maquina.dominio.org
222.54.22.09
2.34.56.78
DeniedIP -> Deve conter o IP das maquinas que estao banidas por voce
ex:
2.34.56.78
222.234.244.555
DeniedNames -> Deve conter o DOMINIO das maquinas banidas por voce
ex:
www.maquina.dominio.org
www.disneylandia.com
pornografia.net
ex:
Obs: Alguns Sistemas Operacionais (OS) não aceitam 'HASH' voce pode usar
'DBM', 'BTREE', não se esqueca somente de alterar as PRIMEIRAS REGRAS.
Trocando a o comando 'HASH' por qualquer um dos descritos acima.
6o PASSO:
Se tudo der certo seu sendmail com regras anti-spam estarao no ar, para
certifica-se disso de um telnet para sua porta 25.
Caso não de certo, derrube seu sendmail mais uma vez e volte as
configuracoes antigas e nos mande um email. (askion@rio.com.br)
$~# rm /etc/sendmail.cf
$~# cp /etc/send-orig/sendmail.cf /etc
$~# /usr/sbin/sendmail -bd -q 15m
-[Deny pelo CISCO 2500 - 250*]-[Versao 1.0b - Thu Nov 27 16:58:18 EDT
1997]
Router# conf t
Router(config)# int ser0
Router(config-if)# ip access-group 101 in
Router(config-if)# exit
4- Com os comandos acima, voce habilitou a lista numero 101 (as listas com
poder de selecao de pacotes sao de 100 a 199)
Assim esta feito o seu 'DENY'. Vale ressaltar que DENY pelo cisco não é
aconselhavel uma vez que o servidor deles sem conexao ao seu acusara não
ENVIO de correio, enquanto voce usando as REGRAS DO SENDMAIL, o
correio não sera enviado e voltara com o motivo do BANIMENTO.